Giter Site home page Giter Site logo

codebake's Introduction

codebake's People

Contributors

dependabot[bot] avatar mbeepo avatar s-viour avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

mbeepo

codebake's Issues

negative numbers not parsing

currently, trying to type a negative number results in an "unexpected symbol" error. this needs to be fixed in the lisp parser

support quote literals

pretty much every lisp in existence lets you write '(1 2 3) instead of (quote (1 2 3)). this issue depends on the rewrite of the reader (#12)

improve lisp error messages

right now, all the error messages are basically from the tutorial I used to build the lisp. I'd like to make all these a little more descriptive. in the future, we can look into using ariadne to provide real diagnostics

rewrite lisp reader

currently and hilariously, the lisp is parsed pretty badly. in fact, the whole lisp is tokenized using a single massive regex and i've forgotten how it works. we need to rewrite (more or less) the entire lisp reader. the simple fact that it's parsed so badly is preventing us from adding features to the lisp like #10. this should be addressed ASAP.

chumsky might be really useful in implementing this, so look into that.

parity with cyberchef

tracking issue. we'd like to have implemented almost all operations that Cyberchef implements as well. this issue provides a list of everything we're currently working on:

Data Format:

  • to-hexdump
  • from-hexdump
  • to-hex
  • from-hex
  • to-charcode
  • from-charcode
  • to-decimal
  • from-decimal
  • to-binary
  • from-binary
  • to-octal
  • from-octal
  • to-base32
  • from-base32
  • to-base64
  • from-base64
  • to-base85
  • from-base85
  • url-encode
  • url-decode

support reading data from a file

this should probably be implemented as an operation that takes a filename as a string and attempts to open it and read the data. obviously on failure just return "file not found" or "no permissions" or some informative error message. if this succeeds, it should attempt to guess the format of the file and load it as textual data if reasonable. otherwise just default to binary data.

dish literals

we'd like to be able to declare a dish literally instead of using the dish constructor. ideally it'd look something like d"hello world" or even `hello world`. additionally, we should aim to support byte-constructed dish literals via something similar: d[68 65 6c 6c 6f].

lisp tokenizer breaks regex capture groups

since the parser replaces all ( and ) characters with ( and ), this ends up breaking regex capture groups in any regex ops. this is likely a symptom of the relatively hack-y parser, and we should look into rewriting the lisp's parser using a more robust approach (like a parsing library)

improve test coverage of operations

currently, we only have tests covering 6 of the 16 (at the time of writing) operations currently implemented. these tests are: to-octal, from-octal, to-hex, from-hex, from-binary, to-binary. all other operations do not have tests implemented for them!

improve documentation related to adding new operations

currently, the documentation for adding new operations is entirely in comments at the top of source files. we should have a wiki page for this with better worded explanations and code examples to make learning about this process as easy as possible.

implement basic data format operations

implement the most commonly used operations in the Data Format section of Cyberchef

  • to base64
  • from base64
  • to hex
  • from hex
  • to decimal
  • from decimal
  • to octal
  • from octal

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.