summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/toks-tra.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2020-07-13 17:21:34 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2020-07-13 17:21:34 +0200
commitb821116421f0d942052ad225f4ea62aef2696817 (patch)
tree36fc7ba6a85e4dc34617f1ff89bbfef288bfa51d /tex/context/base/mkiv/toks-tra.lua
parentb4260c7c04f7e82a9987b7bb758040853ebc464e (diff)
downloadcontext-b821116421f0d942052ad225f4ea62aef2696817.tar.gz
2020-07-13 16:31:00
Diffstat (limited to 'tex/context/base/mkiv/toks-tra.lua')
-rw-r--r--tex/context/base/mkiv/toks-tra.lua293
1 files changed, 0 insertions, 293 deletions
diff --git a/tex/context/base/mkiv/toks-tra.lua b/tex/context/base/mkiv/toks-tra.lua
deleted file mode 100644
index 3a5bc1306..000000000
--- a/tex/context/base/mkiv/toks-tra.lua
+++ /dev/null
@@ -1,293 +0,0 @@
-if not modules then modules = { } end modules ['toks-ini'] = {
- version = 1.001,
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- this will become a module
-
-local utfbyte, utfchar, utfvalues = utf.byte, utf.char, utf.values
-local format, gsub = string.format, string.gsub
-local tostring = tostring
-
-local tokens = tokens
-local token = token -- the built in one
-local tex = tex
-local context = context
-local commands = commands
-
-tokens.collectors = tokens.collectors or { }
-local collectors = tokens.collectors
-
-collectors.data = collectors.data or { }
-local collectordata = collectors.data
-
-collectors.registered = collectors.registered or { }
-local registered = collectors.registered
-
-local report = logs.reporter("tokens","collectors")
-
--- todo:
---
--- register : macros that will be expanded (only for demo-ing)
--- flush : print back to tex
--- test : fancy stuff
-
-local get_next = token.get_next
-local create_token = token.create
-
-function collectors.install(tag,end_cs)
- local data, d = { }, 0
- collectordata[tag] = data
- end_cs = gsub(end_cs,"^\\","")
- while true do
- local t = get_next()
- if t.csname == end_cs then
- context[end_cs]()
- return
- else
- d = d + 1
- data[d] = t
- end
- end
-end
-
-local simple = { letter = "letter", other_char = "other" }
-
-function collectors.show(data)
- -- We no longer have methods as we only used (in demos) method a
- -- so there is no need to burden the core with this. We have a
- -- different table anyway.
- if type(data) == "string" then
- data = collectordata[data]
- end
- if not data then
- return
- end
- local ctx_NC = context.NC
- local ctx_NR = context.NR
- local ctx_bold = context.bold
- local ctx_verbatim = context.verbatim
- context.starttabulate { "|Tl|Tc|Tl|" }
- ctx_NC() ctx_bold("cmd")
- ctx_NC() ctx_bold("meaning")
- ctx_NC() ctx_bold("properties")
- ctx_NC() ctx_NR()
- context.HL()
- for i=1,#data do
- local token = data[i]
- local cmdname = token.cmdname
- local simple = simple[cmdname]
- ctx_NC()
- ctx_verbatim(simple or cmdname)
- ctx_NC()
- ctx_verbatim(simple and utfchar(token.mode) or token.csname)
- ctx_NC()
- if token.active then context("active ") end
- if token.expandable then context("expandable ") end
- if token.protected then context("protected ") end
- ctx_NC()
- ctx_NR()
- end
- context.stoptabulate()
-end
-
-local function printlist(data)
- if data and #data > 0 then
- report("not supported (yet): printing back to tex")
- end
-end
-
-tokens.printlist = printlist -- will change to another namespace
-
-function collectors.flush(tag)
- printlist(collectordata[tag])
-end
-
-function collectors.test(tag,handle)
- report("not supported (yet): testing")
-end
-
-function collectors.register(name)
- report("not supported (yet): registering")
-end
-
--- -- old token code
---
--- -- 1 = command, 2 = modifier (char), 3 = controlsequence id
---
--- local create = token.create
--- local csname_id = token.csname_id
--- local command_id = token.command_id
--- local command_name = token.command_name
--- local get_next = token.get_next
--- local expand = token.expand
--- local csname_name = token.csname_name
---
--- local function printlist(data)
--- if data and #data > 0 then
--- callbacks.push('token_filter', function ()
--- callbacks.pop('token_filter') -- tricky but the nil assignment helps
--- return data
--- end)
--- end
--- end
---
--- tokens.printlist = printlist -- will change to another namespace
---
--- function collectors.flush(tag)
--- printlist(collectordata[tag])
--- end
---
--- function collectors.register(name)
--- registered[csname_id(name)] = name
--- end
---
--- local call = command_id("call")
--- local letter = command_id("letter")
--- local other = command_id("other_char")
---
--- function collectors.install(tag,end_cs)
--- local data, d = { }, 0
--- collectordata[tag] = data
--- end_cs = gsub(end_cs,"^\\","")
--- local endcs = csname_id(end_cs)
--- while true do
--- local t = get_next()
--- local a, b = t[1], t[3]
--- if b == endcs then
--- context[end_cs]()
--- return
--- elseif a == call and registered[b] then
--- expand()
--- else
--- d = d + 1
--- data[d] = t
--- end
--- end
--- end
---
--- function collectors.show(data)
--- -- We no longer have methods as we only used (in demos) method a
--- -- so there is no need to burden the core with this.
--- if type(data) == "string" then
--- data = collectordata[data]
--- end
--- if not data then
--- return
--- end
--- local ctx_NC = context.NC
--- local ctx_NR = context.NR
--- local ctx_bold = context.bold
--- local ctx_verbatim = context.verbatim
--- context.starttabulate { "|T|Tr|cT|Tr|T|" }
--- ctx_NC() ctx_bold("cmd")
--- ctx_NC() ctx_bold("chr")
--- ctx_NC()
--- ctx_NC() ctx_bold("id")
--- ctx_NC() ctx_bold("name")
--- ctx_NC() ctx_NR()
--- context.HL()
--- for i=1,#data do
--- local token = data[i]
--- local cmd = token[1]
--- local chr = token[2]
--- local id = token[3]
--- local name = command_name(token)
--- ctx_NC()
--- ctx_verbatim(name)
--- ctx_NC()
--- if tonumber(chr) >= 0 then
--- ctx_verbatim(chr)
--- end
--- ctx_NC()
--- if cmd == letter or cmd == other then
--- ctx_verbatim(utfchar(chr))
--- end
--- ctx_NC()
--- if id > 0 then
--- ctx_verbatim(id)
--- end
--- ctx_NC()
--- if id > 0 then
--- ctx_verbatim(csname_name(token) or "")
--- end
--- ctx_NC() ctx_NR()
--- end
--- context.stoptabulate()
--- end
---
--- function collectors.test(tag,handle)
--- local t, w, tn, wn = { }, { }, 0, 0
--- handle = handle or collectors.defaultwords
--- local tagdata = collectordata[tag]
--- for k=1,#tagdata do
--- local v = tagdata[k]
--- if v[1] == letter then
--- wn = wn + 1
--- w[wn] = v[2]
--- else
--- if wn > 0 then
--- handle(t,w)
--- wn = 0
--- end
--- tn = tn + 1
--- t[tn] = v
--- end
--- end
--- if wn > 0 then
--- handle(t,w)
--- end
--- collectordata[tag] = t
--- end
-
--- Interfacing:
-
-commands.collecttokens = collectors.install
-commands.showtokens = collectors.show
-commands.flushtokens = collectors.flush
-commands.testtokens = collectors.test
-commands.registertoken = collectors.register
-
--- Redundant:
-
--- function collectors.test(tag)
--- printlist(collectordata[tag])
--- end
-
--- For old times sake:
-
-collectors.dowithwords = collectors.test
-
--- This is only used in old articles ... will move to a module:
-
-tokens.vbox = create_token("vbox")
-tokens.hbox = create_token("hbox")
-tokens.vtop = create_token("vtop")
-tokens.bgroup = create_token(utfbyte("{"),1)
-tokens.egroup = create_token(utfbyte("}"),2)
-
-tokens.letter = function(chr) return create_token(utfbyte(chr),11) end
-tokens.other = function(chr) return create_token(utfbyte(chr),12) end
-
-tokens.letters = function(str)
- local t, n = { }, 0
- for chr in utfvalues(str) do
- n = n + 1
- t[n] = create_token(chr, 11)
- end
- return t
-end
-
-function collectors.defaultwords(t,str)
- if t then
- local n = #t
- n = n + 1 ; t[n] = tokens.bgroup
- n = n + 1 ; t[n] = create_token("red")
- for i=1,#str do
- n = n + 1 ; t[n] = tokens.other('*')
- end
- n = n + 1 ; t[n] = tokens.egroup
- end
-end