@promptexecution/k0mmand3r
v0.1.0
Published
typescript/wasm interface for k0mmand3r slash parser
Downloads
1
Readme
we are writing a rust library using the winnow crate which will be a string parser for "/slash" commands the library will be called k0mmand3r pronouced "commander" f
the k0mmand3r library must be able to be packaged as BOTH
- wasm using wasmer/bindgen and also
- exposed to python using maturin/pyo3 (a rust framework)
- as a rust crate for other rust programs
the k0mmand3r library should expose a method called parse() additionally should feature complete test coverage.
the parse command will follow these rules: parse can receive commands or content or both
any string should first be trimmed for whitespace on the front and back. after trimming, if found the kommand must begin with a forward slash "/", any string which doesn't begin with a / is returned as "content" (it has no command)
if a kommand is found then parse proceeds to parse the grammar of the command here are the rules for parsing a kommand grammar:
zero or more parameters will be found --parameters are prefixed by a double dash "--" parameters are always alphanumeric if a parameter is followed by an = then it will have a value token so --parameter or --parameter=value can be returned the order of parameters is important and should be preserved in the structures a parameter with no value is called a "tag" a parameter with a value is a type "kvpair" values can be of four types: 1. string 2. number 3. boolean 4. @user (a user token begins with a literal "@" followed by a letter, followed by one or more alphanumeric or emoji characters 5. #channel (a channel token begins with a literal "#" followed by a letter, followed by one or more alphanumeric or emoji characters
these structures once parsed should be stored in an k0mmand3r result object
the principal goal is to develop the parser and test cases the first task is to produce a synthetic set of commands, one per line, in a file the second task is to develop a k0mmand object the third task is to develop the parser by incorproatig the winnow crate the fifth task is to develop a wasm bindgen interface and run the same tests the sixth task will be to successfully process the synthetic commands using python
good luck!