aboutsummaryrefslogtreecommitdiff
path: root/nomsu.lua
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-06-12 18:16:34 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-06-12 18:16:44 -0700
commitb0997a7dbffb636b8209055ed788fe1360aef25d (patch)
tree5fb8aafeafa65c012d2abe53246f513fc2864f50 /nomsu.lua
parent3c510e4ee5027aa5191e994bdf0a080a32a4b082 (diff)
Minor optimizations to indent/dedent/nodent.
Diffstat (limited to 'nomsu.lua')
-rw-r--r--nomsu.lua18
1 files changed, 10 insertions, 8 deletions
diff --git a/nomsu.lua b/nomsu.lua
index 4f61c29..4aa57ff 100644
--- a/nomsu.lua
+++ b/nomsu.lua
@@ -172,20 +172,22 @@ do
_with_0.utf8_char = (R("\194\223") * R("\128\191") + R("\224\239") * R("\128\191") * R("\128\191") + R("\240\244") * R("\128\191") * R("\128\191") * R("\128\191"))
_with_0.ident_char = R("az", "AZ", "09") + P("_") + _with_0.utf8_char
_with_0.indent = Cmt(Carg(1), function(self, start, userdata)
- if #match(self, "^[ ]*", start) >= userdata.indent + 4 then
- userdata.indent = userdata.indent + 4
- return start + userdata.indent
+ local indented = userdata.indent .. ' '
+ if sub(self, start, start + #indented - 1) == indented then
+ userdata.indent = indented
+ return start + #indented
end
end)
_with_0.dedent = Cmt(Carg(1), function(self, start, userdata)
- if #match(self, "^[ ]*", start) <= userdata.indent - 4 then
- userdata.indent = userdata.indent - 4
+ local dedented = sub(userdata.indent, 1, -5)
+ if #match(self, "^[ ]*", start) <= #dedented then
+ userdata.indent = dedented
return start
end
end)
_with_0.nodent = Cmt(Carg(1), function(self, start, userdata)
- if #match(self, "^[ ]*", start) >= userdata.indent then
- return start + userdata.indent
+ if sub(self, start, start + #userdata.indent - 1) == userdata.indent then
+ return start + #userdata.indent
end
end)
_with_0.userdata = Carg(1)
@@ -311,7 +313,7 @@ do
assert(type(nomsu_code) ~= 'string')
local userdata = {
source_code = nomsu_code,
- indent = 0,
+ indent = "",
errors = { },
source = nomsu_code.source
}