login

<     >

2022-02-27 08:12:30 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

allow underline in variable names

diff --git a/src/template.lua b/src/template.lua
index 75c7f31..ae5e32c 100644
--- a/src/template.lua
+++ b/src/template.lua
@@ -34,7 +34,7 @@ local function render_block(lines, first, last, env)
     while line_num <= last do
         local line = lines[line_num]
         if line:match("%%%s*(%w+).*") == "set" then
-            local var, expr = line:match("%%%s*set%s+(%w+)%s*=%s*(.+)")
+            local var, expr = line:match("%%%s*set%s+([%w_]+)%s*=%s*(.+)")
             assert(var and expr)
             env[var] = eval(expr, env)
             line_num = line_num + 1
@@ -57,7 +57,7 @@ local function render_block(lines, first, last, env)
                     result = result .. render_block(lines, line_num+1, block_end-1, env)
                 end
             elseif block_type == "for" then
-                local var, expr = line:match("%%%s*for%s+(%w+)%s+in%s+(.+)%s+do")
+                local var, expr = line:match("%%%s*for%s+([%w_]+)%s+in%s+(.+)%s+do")
                 assert(var and expr)
                 for i, v in ipairs(eval(expr, env)) do
                     env[var] = v