summaryrefslogtreecommitdiff
path: root/tex/context/base/phys-dim.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2011-06-23 20:40:17 +0300
committerMarius <mariausol@gmail.com>2011-06-23 20:40:17 +0300
commit1f49aee839e281d04be7b6cb6f959590bed1d581 (patch)
treeecca5409a1481e7f99dc407735bb76730e7aff2d /tex/context/base/phys-dim.lua
parent06465c8428905be5c083c70f4e7de6a59d129139 (diff)
downloadcontext-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.lua53
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