diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-01-19 17:29:44 -0800 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-01-19 17:30:39 -0800 |
| commit | c1ac0635fda366615a9cd56b95decda619c32821 (patch) | |
| tree | 892d7138ab08d90b4b102cc15b5ac6a1cf34b6b3 /lib/text.nom | |
| parent | ca07d84b4cbaa855accad9d0a8e48733aac65f18 (diff) | |
Refactored syntax a bit so that ":" isn't necessary for a block, and can
be used for inline expressions instead. Also, dict literals now use ":" instead
of "=".
Diffstat (limited to 'lib/text.nom')
| -rw-r--r-- | lib/text.nom | 49 |
1 files changed, 8 insertions, 41 deletions
diff --git a/lib/text.nom b/lib/text.nom index 5cb268d..2eb6b67 100644 --- a/lib/text.nom +++ b/lib/text.nom @@ -5,28 +5,28 @@ use "lib/metaprogramming.nom" # Text functions -action [join %strs with %glue]: +action [join %strs with %glue] lua> ".." local str_bits = {} for i,bit in ipairs(\%strs) do str_bits[i] = stringify(bit) end return table.concat(str_bits, \%glue) parse [join %strs] as: join %strs with "" -compile [capitalize %str, %str capitalized] to: +compile [capitalize %str, %str capitalized] to "(\(%str as lua)):gsub('%l', string.upper, 1)" -compile [%str with %patt replaced with %sub, %str s/%patt/%sub] to: +compile [%str with %patt replaced with %sub, %str s/%patt/%sub] to "((\(%str as lua)):gsub(\(%patt as lua), \(%sub as lua)))" -compile [%str with %patt replaced with %sub %n times, %str s/%patt/%sub/%n] to: +compile [%str with %patt replaced with %sub %n times, %str s/%patt/%sub/%n] to "((\(%str as lua)):gsub(\(%patt as lua), \(%sub as lua), \(%n as lua)))" -compile [indent %str] to: "\%str:gsub('\\n','\\n'..(' '))" -compile [indent %str %n times, indent %str %n x] to: "\%str:gsub('\\n','\\n'..(' '):rep(\%n))" +compile [indent %str] to "\%str:gsub('\\n','\\n'..(' '))" +compile [indent %str %n times, indent %str %n x] to "\%str:gsub('\\n','\\n'..(' '):rep(\%n))" # Substring # TODO: improve this syntax -compile [%str |%start|] to: "\(%str as lua):sub(\(%start as lua), \(%start as lua))" -compile [%str |%start - %stop|] to: "\(%str as lua):sub(\(%start as lua), \(%stop as lua))" +compile [%str |%start|] to "\(%str as lua):sub(\(%start as lua), \(%start as lua))" +compile [%str |%start - %stop|] to "\(%str as lua):sub(\(%start as lua), \(%stop as lua))" # Text literals lua do> ".." @@ -57,36 +57,3 @@ lua do> ".." end, \(__src__ 1)); end -#.. - use "lib/control_flow.nom" - use "lib/collections.nom" - local [%ansi, %colors] - set %ansi = {..} - nl="\\n", newline="\\n", tab="\\t", bell="\\a", cr="\\r", "carriage return"="\\r" - backspace="\\b", "form feed"="\\f", formfeed="\\f", "vertical tab"="\\v" - - set %colors = {..} - "reset color"="\\27[0m", bright="\\27[1m", dim="\\27[2m", underscore="\\27[4m" - blink="\\27[5m", inverse="\\27[7m", hidden="\\27[8m" - - black="\\27[30m", red="\\27[31m", green="\\27[32m", yellow="\\27[33m", blue="\\27[34m" - magenta="\\27[35m", cyan="\\27[36m", white="\\27[37m" - - "on black"="\\27[40m", "on red"="\\27[41m", "on green"="\\27[42m", "on yellow"="\\27[43m" - "on blue"="\\27[44m", "on magenta"="\\27[45m", "on cyan"="\\27[46m", "on white"="\\27[47m" - - for %name=%str in %ansi: - lua> ".." - local e = "'"..\%str.."'"; - nomsu:define_compile_action(\%name, \(__line_no__), function(nomsu) return {expr=e}; end, \(__src__ 1)); - - for %name=%str in %colors: - lua> ".." - local e = "'"..\%str.."'"; - local reset = "'"..\(%colors->"reset color").."'"; - nomsu:define_compile_action(\%name, \(__line_no__), function(nomsu) return {expr=e}; end, \(__src__ 1)); - nomsu:define_compile_action(\%name.." %", \(__line_no__), function(nomsu, \%) - return {expr=e..".."..nomsu:tree_to_lua(\%).expr..".."..reset}; - end, \(__src__ 1)); - -# FIXME |
