summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/lang-url.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/lang-url.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/lang-url.lua24
1 files changed, 14 insertions, 10 deletions
diff --git a/Master/texmf-dist/tex/context/base/lang-url.lua b/Master/texmf-dist/tex/context/base/lang-url.lua
index b0a71ec679e..e401e41484d 100644
--- a/Master/texmf-dist/tex/context/base/lang-url.lua
+++ b/Master/texmf-dist/tex/context/base/lang-url.lua
@@ -11,9 +11,10 @@ local utf = unicode.utf8
local utfcharacters, utfvalues = string.utfcharacters, string.utfvalues
local utfbyte, utfgsub = utf.byte, utf.gsub
-local ctxcatcodes, texsprint = tex.ctxcatcodes, tex.sprint
+context = context
-commands = commands or { }
+commands = commands or { }
+local commands = commands
--[[
<p>Hyphenating <l n='url'/>'s is somewhat tricky and a matter of taste. I did
@@ -23,10 +24,9 @@ dealing with <l n='ascii'/> characters.</p>
]]--
commands.hyphenatedurl = commands.hyphenatedurl or { }
+local hyphenatedurl = commands.hyphenatedurl
-local hyphenatedurl = commands.hyphenatedurl
-
-hyphenatedurl.characters = {
+hyphenatedurl.characters = utilities.storage.allocate {
["!"] = 1,
["\""] = 1,
["#"] = 1,
@@ -68,7 +68,7 @@ hyphenatedurl.discretionary = nil
local chars = hyphenatedurl.characters
-function hyphenatedurl.action(str, left, right, disc)
+local function action(hyphenatedurl, str, left, right, disc)
local n = 0
local b = math.max( left or hyphenatedurl.lefthyphenmin, 2)
local e = math.min(#str-(right or hyphenatedurl.righthyphenmin)+2,#str)
@@ -76,20 +76,24 @@ function hyphenatedurl.action(str, left, right, disc)
for s in utfcharacters(str) do
n = n + 1
if s == d then
- texsprint(ctxcatcodes,"\\d{",utfbyte(s),"}")
+ context.d(utfbyte(s))
else
local c = chars[s]
if not c or n<=b or n>=e then
- texsprint(ctxcatcodes,"\\n{",utfbyte(s),"}")
+ context.n(utfbyte(s))
elseif c == 1 then
- texsprint(ctxcatcodes,"\\b{",utfbyte(s),"}")
+ context.b(utfbyte(s))
elseif c == 2 then
- texsprint(ctxcatcodes,"\\a{",utfbyte(s),"}")
+ context.a(utfbyte(s))
end
end
end
end
+-- hyphenatedurl.action = function(_,...) action(...) end -- sort of obsolete
+
+table.setmetatablecall(hyphenatedurl,action)
+
-- todo, no interface in mkiv yet
function hyphenatedurl.setcharacters(str,value) -- 1, 2 == before, after