additional comment form
This commit is contained in:
parent
ce3dba470a
commit
61a1b47b85
3 changed files with 48 additions and 20 deletions
20
Readme.org
20
Readme.org
|
|
@ -301,11 +301,16 @@ This contains any executable target of this project. Notably the main shell file
|
|||
Note: this section will not show the status of each item unless you are viewing it with a proper orgmode viewer.
|
||||
Note: this section only tracks the state of incomplete TODO items. Having everything on here would be cluttered.
|
||||
|
||||
*** TODO Syntax improvements
|
||||
**** WONTDO implicit single quote
|
||||
**** TODO :symbol syntax
|
||||
**** TODO Update Tests
|
||||
**** TODO Update Makefile documentation
|
||||
*** TODO Quote function
|
||||
*** TODO Eval function
|
||||
*** TODO lambda
|
||||
*** TODO Lex function
|
||||
*** TODO Input function
|
||||
*** TODO Lex function
|
||||
*** TODO Read function (Input + Lex)
|
||||
*** TODO Load (load a script) function
|
||||
Pull/Refactor the logic out of the configure functions.
|
||||
Optionally return a list of new variables and/or functions?
|
||||
|
|
@ -313,13 +318,14 @@ Will need a concatenate function for tables
|
|||
*** TODO Main shell calls Load function on arg and exits
|
||||
*** TODO FINISH DOCUMENTATION
|
||||
*** TODO Shell module
|
||||
**** TODO Support for single quoting string literals
|
||||
**** TODO Args parsing helper
|
||||
**** TODO only loadable via POSIX config var
|
||||
Overload Load function to call a binary too
|
||||
**** TODO arg processor because these are control flow
|
||||
**** TODO Process launching with environment variables
|
||||
**** TODO Optional form of process which allows fd redirecting
|
||||
**** TODO Foreground process TTY
|
||||
**** TODO Background processes
|
||||
**** TODO Update config env var docstring with functions loaded or unloaded
|
||||
**** TODO Background processes (bg function)
|
||||
**** TODO Foreground process TTY (fg function)
|
||||
**** TODO list jobs (j function)
|
||||
**** TODO ESSENTIAL: DOCUMENT POSIX MODULE
|
||||
*** TODO Can enter multiple lines of text, with formatting in repl
|
||||
*** TODO Rename to Flesh
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ fn process(document: &String) -> Result<Box<Seg>, String> {
|
|||
delim_stack.push(c);
|
||||
}
|
||||
// eat the whole line
|
||||
'#' => {
|
||||
'#' | ';' => {
|
||||
ign = true;
|
||||
delim_stack.push('\n');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,16 +14,16 @@ mod lex_tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_lex_complex_list() {
|
||||
let document = String::from("(hello 'world' (1 2 (1 2 3)) 1 2 3)");
|
||||
assert_eq!(lex(&document).unwrap().to_string(), document);
|
||||
fn test_bad_symbol() {
|
||||
let document = String::from("(as/dd)");
|
||||
let output: &str = "Problem lexing document: \"Unparsable token: as/dd\"";
|
||||
assert_eq!(lex(&document).err().unwrap(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bad_symbol() {
|
||||
let document = String::from("(as;dd)");
|
||||
let output: &str = "Problem lexing document: \"Unparsable token: as;dd\"";
|
||||
assert_eq!(lex(&document).err().unwrap(), output.to_string(),);
|
||||
fn test_lex_complex_list() {
|
||||
let document = String::from("(hello 'world' (1 2 (1 2 3)) 1 2 3)");
|
||||
assert_eq!(lex(&document).unwrap().to_string(), document);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -53,23 +53,45 @@ mod lex_tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_comment() {
|
||||
fn test_comment_1() {
|
||||
let document = String::from("#!/bin/relish\n(one two)");
|
||||
let output: &str = "(one two)";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_postline_comment() {
|
||||
fn test_comment_2() {
|
||||
let document = String::from(";; big doc string\n(one two)");
|
||||
let output: &str = "(one two)";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_postline_comment_1() {
|
||||
let document =
|
||||
String::from("#!/bin/relish\n((one two)# another doc comment\n(three four))");
|
||||
String::from("#!/bin/relish\n((one two)# another doc comment\n('three' four))");
|
||||
let output: &str = "((one two) ('three' four))";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_postline_comment_2() {
|
||||
let document =
|
||||
String::from("#!/bin/relish\n((one two);;another doc comment\n(three four))");
|
||||
let output: &str = "((one two) (three four))";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_inline_comment() {
|
||||
let document = String::from("#!/bin/relish\n((one two)\n# another doc comment\nthree)");
|
||||
fn test_inline_comment_1() {
|
||||
let document = String::from("#!/bin/relish\n((one two)\n# another comment\nthree)");
|
||||
let output: &str = "((one two) three)";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_inline_comment_2() {
|
||||
let document = String::from("# head\n((one two)\n;; another comment\nthree)");
|
||||
let output: &str = "((one two) three)";
|
||||
assert_eq!(lex(&document).unwrap().to_string(), output.to_string(),);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue