diff options
| author | Philipp Gesang <phg@phi-gamma.net> | 2013-03-31 13:53:36 +0200 | 
|---|---|---|
| committer | Philipp Gesang <phg@phi-gamma.net> | 2013-03-31 13:53:36 +0200 | 
| commit | a15e91f455d4dd04a793a9af9be4ce0691098ee5 (patch) | |
| tree | df57aadde93b12a759cd6f659e5c01e67631b61e /tex/context/third | |
| parent | 1c70e70ac8c9e1d08dcf78819f3af3c48c2ed323 (diff) | |
| download | enigma-a15e91f455d4dd04a793a9af9be4ce0691098ee5.tar.gz | |
split callback
Diffstat (limited to 'tex/context/third')
| -rw-r--r-- | tex/context/third/enigma/enigma.lua | 37 | 
1 files changed, 24 insertions, 13 deletions
| diff --git a/tex/context/third/enigma/enigma.lua b/tex/context/third/enigma/enigma.lua index 7ae66f1..f404f9e 100644 --- a/tex/context/third/enigma/enigma.lua +++ b/tex/context/third/enigma/enigma.lua @@ -130,6 +130,8 @@ local GLUE_NODE                    = node and nodeid"glue"  local GLUE_SPEC_NODE               = node and nodeid"glue_spec"  local KERN_NODE                    = node and nodeid"kern"  local DISC_NODE                    = node and nodeid"disc" +local HLIST_NODE                   = node and nodeid"hlist" +local VLIST_NODE                   = node and nodeid"vlist"  local IGNORE_NODES = node and {  --[GLUE_NODE] = true, @@ -1456,14 +1458,8 @@ local new_callback = function (machine, name)    local format_is_context = format_is_context    --- The callback proper starts here. -  local cbk = function (a, _, c) -    current_space_node = generate_space () -    if format_is_context == true then -      head = c -    else -      head = a -    end -    mod_5 = 0 +  local aux aux = function (head, recurse) +    if recurse then print ("recurse depth:", recurse) end      for n in nodetraverse(head) do        local nid = n.id        --print(utf8char(n.char), n) @@ -1492,7 +1488,7 @@ local new_callback = function (machine, name)            noderemove(head, n)          end        elseif IGNORE_NODES[nid] then -        -- spaces and kerns are dropped +        -- drop spaces and kerns          noderemove(head, n)        elseif nid == DISC_NODE then          --- ligatures need to be resolved if they are characters @@ -1511,14 +1507,29 @@ local new_callback = function (machine, name)            end          end          noderemove(head, n) -      --else -      -- TODO other node types -      --  print(n) +--      elseif nid == HLIST_NODE then +--        print(nid, n) +--        print"going down ... <<<<<<" +--        -- descend +--      else +--        -- TODO other node types +--        print(n)        end      end      nodeslide(head)      return head -  end -- callback +  end -- callback auxiliary + +  local cbk = function (a, _, c) +    current_space_node = generate_space () +    mod_5              = 0 +    if format_is_context == true then +      head = c +    else +      head = a +    end +    return aux(head) +  end    if format_is_context then      local cbk_id = "enigma_" .. name | 
