From 93e1c741d591be11d4782ec359d33a3f1b54bf8c Mon Sep 17 00:00:00 2001
From: Philipp Gesang <pgesang@ix.urz.uni-heidelberg.de>
Date: Thu, 23 Feb 2012 19:05:12 +0100
Subject: mtx-script

---
 tex/context/third/enigma/enigma.lua    | 47 ++++++++++++++++++----------------
 tex/context/third/enigma/t-enigma.mkvi |  7 +++--
 2 files changed, 28 insertions(+), 26 deletions(-)

(limited to 'tex')

diff --git a/tex/context/third/enigma/enigma.lua b/tex/context/third/enigma/enigma.lua
index ad23c2b..b7ab57c 100644
--- a/tex/context/third/enigma/enigma.lua
+++ b/tex/context/third/enigma/enigma.lua
@@ -71,12 +71,12 @@ local iowrite                      = io.write
 local mathfloor                    = math.floor
 local mathrandom                   = math.random
 local next                         = next
-local nodecopy                     = node.copy
-local nodeid                       = node.id
-local nodeinsert_before            = node.insert_before
-local nodenew                      = node.new
-local noderemove                   = node.remove
-local nodetraverse                 = node.traverse
+local nodecopy                     = node and node.copy
+local nodeid                       = node and node.id
+local nodeinsert_before            = node and node.insert_before
+local nodenew                      = node and node.new
+local noderemove                   = node and node.remove
+local nodetraverse                 = node and node.traverse
 local nodesinstallattributehandler = format_is_context_p and nodes.installattributehandler
 local nodestasksappendaction       = format_is_context_p and nodes.tasks.appendaction
 local stringfind                   = string.find
@@ -109,8 +109,8 @@ else
   end
 end
 
-local glyph_node                   = nodeid"glyph"
-local glue_node                    = nodeid"glue"
+local glyph_node                   = node and nodeid"glyph"
+local glue_node                    = node and nodeid"glue"
 
 --[[ichd--
 \startparagraph
@@ -742,19 +742,22 @@ extraction of successive characters from the sequence.
 \TODO{Make \luafunction{encode_string} preprocess characters.}
 \stopparagraph
 --ichd]]--
-  --local encode_string = function (machine, str) --, pattern)
-  --  local init_state = pattern_to_state(pattern or get_random_pattern())
-  --  emit(1, pprint_init, init_state)
-  --  machine:set_state(init_state)
-  --  local result = { }
-  --  str = stringlower(str)
-  --  local n = 1 -- OPTIONAL could lookup machine.step instead
-  --  for char in utfcharacters(str) do
-  --    result[n] = machine:encode_char(char)
-  --    n = n + 1
-  --  end
-  --  return tableconcat(result)
-  --end
+  local encode_string = function (machine, str) --, pattern)
+    local result = { }
+    str = stringlower(str)
+    for char in utfcharacters(str) do
+      local tmp = machine:encode(char)
+      if type(tmp) == "table" then
+        for i=1, #tmp do
+          result[#result+1] = tmp[i]
+        end
+      else
+        result[#result+1] = tmp
+      end
+    end
+    machine:processed_chars()
+    return tableconcat(result)
+  end
 --[[ichd--
 \stopdocsection
 --ichd]]--
@@ -1273,9 +1276,9 @@ enigma.save_raw_args     = save_raw_args
 enigma.retrieve_raw_args = retrieve_raw_args
 
 local new_machine = function (args, name)
+  verbose_level = args.verbose
   local machine = new(args.day_key, args.rotor_setting)
   machine.name  = name
-  verbose_level = args.verbose
   return machine
 end
 
diff --git a/tex/context/third/enigma/t-enigma.mkvi b/tex/context/third/enigma/t-enigma.mkvi
index 173bb07..552e483 100644
--- a/tex/context/third/enigma/t-enigma.mkvi
+++ b/tex/context/third/enigma/t-enigma.mkvi
@@ -78,11 +78,10 @@ thirddata = thirddata or { }
 
 \def\inherit_enigma#to#from{%
   \ctxlua{%
-    local enigma = thirddata.enigma
+    local enigma       = thirddata.enigma
     local current_args = enigma.retrieve_raw_args(\!!bs#from\!!es)
-    enigma.new_callback(
-      enigma.new_machine(current_args, \!!bs#to\!!es), \!!bs#to\!!es
-    )
+    enigma.new_callback(enigma.new_machine(current_args, \!!bs#to\!!es),
+                        \!!bs#to\!!es)
   }%
   \do_do_define_enigma{#to}%
 }
-- 
cgit v1.2.3