diff options
author | Marius <mariausol@gmail.com> | 2011-06-23 20:40:17 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2011-06-23 20:40:17 +0300 |
commit | 1f49aee839e281d04be7b6cb6f959590bed1d581 (patch) | |
tree | ecca5409a1481e7f99dc407735bb76730e7aff2d /tex/context/base/phys-dim.lua | |
parent | 06465c8428905be5c083c70f4e7de6a59d129139 (diff) | |
download | context-1f49aee839e281d04be7b6cb6f959590bed1d581.tar.gz |
beta 2011.06.23 19:25
Diffstat (limited to 'tex/context/base/phys-dim.lua')
-rw-r--r-- | tex/context/base/phys-dim.lua | 53 |
1 files changed, 23 insertions, 30 deletions
diff --git a/tex/context/base/phys-dim.lua b/tex/context/base/phys-dim.lua index e27d48ffa..9fb2d031f 100644 --- a/tex/context/base/phys-dim.lua +++ b/tex/context/base/phys-dim.lua @@ -24,37 +24,31 @@ physics.patterns = physics.patterns or { } -- digits parser (todo : use patterns) -local done = false -local swap = false - -local digit = R("09") -local sign = S("+-") -local power = S("^e") -local digitspace = S("~@_") -local digitspacex = digitspace + P(" ") -local comma = P(",") -local period = P(".") -local signspace = P("/") -local positive = S("p") -local negative = S("n") -local highspace = P("s") -local padding = P("=") -local plus = P("+") -local minus = P("-") - --- rename context.digitsspace -> digitsS --- also have digitsN - - --- move done to tex end +--~ local done = false +--~ local mode = 0 + +local digit = R("09") +local sign = S("+-") +local power = S("^e") +local digitspace = S("~@_") +local digitspacex = digitspace + P(" ") +local comma = P(",") +local period = P(".") +local signspace = P("/") +local positive = S("p") +local negative = S("n") +local highspace = P("s") +local padding = P("=") +local plus = P("+") +local minus = P("-") local digits = (digit^1) local ddigitspacex = digitspacex / "" / context.digitsspace local ddigitspace = digitspace / "" / context.digitsspace -local ddigit = digits / function(s) done = true context(s) end -local dseparator = comma / "" / function() if not done then context.digitsseparatorspace() elseif swap then context(".") else context(",") end end - + period / "" / function() if not done then context.digitsseparatorspace() elseif swap then context(",") else context(".") end end +local ddigit = digits / context.digitsdigit +local dseparator = comma / "" / context.digitscomma + + period / "" / context.digitsperiod local dsignspace = signspace / "" / context.digitssignspace local dpositive = positive / "" / context.digitspositive local dnegative = negative / "" / context.digitsnegative @@ -68,7 +62,7 @@ local dpower = power / "" * ( ) local dpadding = padding / "" / context.digitszeropadding -- todo -local digitparsernospace = +local digitparserspace = (dsomesign + dsignspace + dpositive + dnegative + dhighspace)^0 * (dseparator^0 * (ddigitspacex + ddigit)^1)^1 * dpower^0 @@ -82,9 +76,8 @@ physics.patterns.digitparserspace = digitparserspace physics.patterns.digitparser = digitparser function commands.digits(str) - done = false - -- swap = true - matchlpeg(digitparserspace,str) -- also space +--~ done = false + matchlpeg(digitparserspace,str) end -- units parser |