aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-07-09 17:13:40 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-07-09 17:14:05 -0700
commit85ef9534e370e08105b0a190d1f27cc56992a73c (patch)
tree064c4be1976195197b32b2bc331b7bc4da1d77a3 /core
parentcb1c3106f8d6517bb80d1deed6d21cb4f0a10bec (diff)
Added pattern matching for text, and comprehension versions of that and
file walking.
Diffstat (limited to 'core')
-rw-r--r--core/text.nom18
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