summaryrefslogtreecommitdiff
path: root/tex/context/base/supp-box.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/supp-box.lua')
-rw-r--r--tex/context/base/supp-box.lua224
1 files changed, 112 insertions, 112 deletions
diff --git a/tex/context/base/supp-box.lua b/tex/context/base/supp-box.lua
index c7382834a..f564723ed 100644
--- a/tex/context/base/supp-box.lua
+++ b/tex/context/base/supp-box.lua
@@ -1,112 +1,112 @@
-if not modules then modules = { } end modules ['supp-box'] = {
- version = 1.001,
- comment = "companion to supp-box.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- this is preliminary code
-
-local report_hyphenation = logs.reporter("languages","hyphenation")
-
-local tex, node = tex, node
-local context, commands, nodes = context, commands, nodes
-
-local nodecodes = nodes.nodecodes
-
-local disc_code = nodecodes.disc
-local hlist_code = nodecodes.hlist
-local vlist_code = nodecodes.vlist
-local glue_code = nodecodes.glue
-local glyph_code = nodecodes.glyph
-
-local new_penalty = nodes.pool.penalty
-
-local free_node = node.free
-local copynodelist = node.copy_list
-local copynode = node.copy
-local texbox = tex.box
-
-local function hyphenatedlist(list)
- while list do
- local id, next, prev = list.id, list.next, list.prev
- if id == disc_code then
- local hyphen = list.pre
- if hyphen then
- local penalty = new_penalty(-500)
- hyphen.next, penalty.prev = penalty, hyphen
- prev.next, next.prev = hyphen, penalty
- penalty.next, hyphen.prev = next, prev
- list.pre = nil
- free_node(list)
- end
- elseif id == vlist_code or id == hlist_code then
- hyphenatedlist(list.list)
- end
- list = next
- end
-end
-
-commands.hyphenatedlist = hyphenatedlist
-
-function commands.showhyphenatedinlist(list)
- report_hyphenation("show: %s",nodes.listtoutf(list,false,true))
-end
-
-local function checkedlist(list)
- if type(list) == "number" then
- return texbox[list].list
- else
- return list
- end
-end
-
-local function applytochars(list,what,nested)
- local doaction = context[what or "ruledhbox"]
- local noaction = context
- local current = checkedlist(list)
- while current do
- local id = current.id
- if nested and (id == hlist_code or id == vlist_code) then
- context.beginhbox()
- applytochars(current.list,what,nested)
- context.endhbox()
- elseif id ~= glyph_code then
- noaction(copynode(current))
- else
- doaction(copynode(current))
- end
- current = current.next
- end
-end
-
-local function applytowords(list,what,nested)
- local doaction = context[what or "ruledhbox"]
- local noaction = context
- local current = checkedlist(list)
- local start
- while current do
- local id = current.id
- if id == glue_code then
- if start then
- doaction(copynodelist(start,current))
- start = nil
- end
- noaction(copynode(current))
- elseif nested and (id == hlist_code or id == vlist_code) then
- context.beginhbox()
- applytowords(current.list,what,nested)
- context.egroup()
- elseif not start then
- start = current
- end
- current = current.next
- end
- if start then
- doaction(copynodelist(start))
- end
-end
-
-commands.applytochars = applytochars
-commands.applytowords = applytowords
+if not modules then modules = { } end modules ['supp-box'] = {
+ version = 1.001,
+ comment = "companion to supp-box.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- this is preliminary code
+
+local report_hyphenation = logs.reporter("languages","hyphenation")
+
+local tex, node = tex, node
+local context, commands, nodes = context, commands, nodes
+
+local nodecodes = nodes.nodecodes
+
+local disc_code = nodecodes.disc
+local hlist_code = nodecodes.hlist
+local vlist_code = nodecodes.vlist
+local glue_code = nodecodes.glue
+local glyph_code = nodecodes.glyph
+
+local new_penalty = nodes.pool.penalty
+
+local free_node = node.free
+local copynodelist = node.copy_list
+local copynode = node.copy
+local texbox = tex.box
+
+local function hyphenatedlist(list)
+ while list do
+ local id, next, prev = list.id, list.next, list.prev
+ if id == disc_code then
+ local hyphen = list.pre
+ if hyphen then
+ local penalty = new_penalty(-500)
+ hyphen.next, penalty.prev = penalty, hyphen
+ prev.next, next.prev = hyphen, penalty
+ penalty.next, hyphen.prev = next, prev
+ list.pre = nil
+ free_node(list)
+ end
+ elseif id == vlist_code or id == hlist_code then
+ hyphenatedlist(list.list)
+ end
+ list = next
+ end
+end
+
+commands.hyphenatedlist = hyphenatedlist
+
+function commands.showhyphenatedinlist(list)
+ report_hyphenation("show: %s",nodes.listtoutf(list,false,true))
+end
+
+local function checkedlist(list)
+ if type(list) == "number" then
+ return texbox[list].list
+ else
+ return list
+ end
+end
+
+local function applytochars(list,what,nested)
+ local doaction = context[what or "ruledhbox"]
+ local noaction = context
+ local current = checkedlist(list)
+ while current do
+ local id = current.id
+ if nested and (id == hlist_code or id == vlist_code) then
+ context.beginhbox()
+ applytochars(current.list,what,nested)
+ context.endhbox()
+ elseif id ~= glyph_code then
+ noaction(copynode(current))
+ else
+ doaction(copynode(current))
+ end
+ current = current.next
+ end
+end
+
+local function applytowords(list,what,nested)
+ local doaction = context[what or "ruledhbox"]
+ local noaction = context
+ local current = checkedlist(list)
+ local start
+ while current do
+ local id = current.id
+ if id == glue_code then
+ if start then
+ doaction(copynodelist(start,current))
+ start = nil
+ end
+ noaction(copynode(current))
+ elseif nested and (id == hlist_code or id == vlist_code) then
+ context.beginhbox()
+ applytowords(current.list,what,nested)
+ context.egroup()
+ elseif not start then
+ start = current
+ end
+ current = current.next
+ end
+ if start then
+ doaction(copynodelist(start))
+ end
+end
+
+commands.applytochars = applytochars
+commands.applytowords = applytowords