diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/lang-url.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/lang-url.lua | 24 |
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 |