diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-07-09 17:13:40 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-07-09 17:14:05 -0700 |
| commit | 85ef9534e370e08105b0a190d1f27cc56992a73c (patch) | |
| tree | 064c4be1976195197b32b2bc331b7bc4da1d77a3 /core/text.nom | |
| parent | cb1c3106f8d6517bb80d1deed6d21cb4f0a10bec (diff) | |
Added pattern matching for text, and comprehension versions of that and
file walking.
Diffstat (limited to 'core/text.nom')
| -rw-r--r-- | core/text.nom | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/text.nom b/core/text.nom index 840a596..37b8082 100644 --- a/core/text.nom +++ b/core/text.nom @@ -26,6 +26,24 @@ action [lines in %text, lines of %text] end return result +compile [for %match where %text matches %patt %body] to + Lua ".." + for \(%match as lua expr) in \(%text as lua expr):gmatch(\(%patt as lua expr)) do + \(%body as lua statements) + \(compile as: === next %match ===) + end + \(compile as: === stop %match ===) + +compile [%expr for %match where %text matches %patt] to + Lua value ".." + (function() + local ret = list{} + for \(%match as lua expr) in \(%text as lua expr):gmatch(\(%patt as lua expr)) do + ret[#ret+1] = \(%expr as lua statements) + end + return ret + end)() + # Text literals lua> ".." do |
