summaryrefslogtreecommitdiff
path: root/VP-textwork.lua
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2012-10-26 20:33:39 -0700
committerPixel <pixel@nobis-crew.org>2012-10-26 20:34:28 -0700
commit17c81623a7845c47d29cd29b80edb6a8200ecae1 (patch)
tree91c391ff8da01717e6fe98e0c9fbcc575530f6f1 /VP-textwork.lua
parenteaadfce496989ff703ea864b66d615253bae9f8c (diff)
Adding one more script type; one with a brand new action table.
Diffstat (limited to 'VP-textwork.lua')
-rw-r--r--VP-textwork.lua38
1 files changed, 34 insertions, 4 deletions
diff --git a/VP-textwork.lua b/VP-textwork.lua
index 2d3f56c..c7bc9af 100644
--- a/VP-textwork.lua
+++ b/VP-textwork.lua
@@ -1,3 +1,9 @@
+function get_next_char(script)
+ local c = script:readU8()
+ if c >= 0x80 then c = (c - 0x80) + (script:readU8() * 128) end
+ return c
+end
+
function get_next_utf8(str)
local ret = ""
local n
@@ -86,14 +92,38 @@ function dump_special(script, code)
error "Should not end up there"
end
+function dump_special2(script, code)
+ if code == 0 then
+ return "\n", "\n"
+ elseif code == 1 then
+ return "\n<new/>\n", "\n"
+ else
+ local a1, a2
+ if code == 3 or code == 5 or code == 7 or code == 8 or code == 9 or code == 12 or code == 13 or code == 14 or code == 15 or code == 21 then
+ a1 = script:readU8()
+ return '<u1 c="' .. code .. '" a="' .. a1 .. '"/>', ""
+ elseif code == 20 then
+ a1 = script:readU8()
+ a2 = script:readU8()
+ return '<u2 c="' .. code .. '" a1="' .. a1 .. '" a2="' .. a2 .. '"/>', ""
+ else
+ return '<uk c="' .. code .. '"/>', ""
+ end
+ end
+ error "Should not end up there"
+end
+
function extract_char(script, lookup)
- local
- c = script:readU8()
+ local c = get_next_char(script)
if c == 0 then return nil end
- if c >= 0x80 then c = (c - 0x80) + (script:readU8() * 128) end
if c >= 0x4000 then
- return dump_special(script, c - 0x4000)
+ local code = c - 0x4000
+ if second_style_script then
+ return dump_special2(script, code)
+ else
+ return dump_special(script, code)
+ end
else
local l = lookup[c]
if not l and not sloppy_extract then error("Lookup failed for character " .. c) end