Module:Dash: Difference between revisions

ArrowHead294 (talk | contribs)
No edit summary
ArrowHead294 (talk | contribs)
mNo edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {};
local p = {}


function p.dashes(frame)
-- Main function that does the substitution
local sp, se
function p._dash(in_str, s, d, d2)
local sp, se1, se2
if frame.args["s"] == "thin" then
if s == "thin" then
     sp = " " -- U+2009 THIN SPACE
     sp = " " -- U+2009 THIN SPACE
elseif frame.args["s"] == "hair" then
elseif s == "hair" then
sp = " " -- U+200A HAIR SPACE
sp = " " -- U+200A HAIR SPACE
elseif frame.args["s"] == "space" then
elseif s == "space" then
sp = " " -- Regular space
sp = " " -- Regular space
elseif frame.args["s"] == "nbsp" then
elseif s == "nbsp" then
    sp = " " -- U+00A0 NO-BREAK SPACE
    sp = " " -- U+00A0 NO-BREAK SPACE
     elseif frame.args["s"] == "nnbsp" then
     elseif s == "nnbsp" then
    sp = " " -- U+202F NARROW NO-BREAK SPACE
    sp = " " -- U+202F NARROW NO-BREAK SPACE
else
else
Line 18: Line 19:
end
end
if frame.args["d"] == "long" then
if d == "long" then
se = "—" -- U+2014 EM DASH
se1 = "—" -- U+2014 EM DASH
elseif frame.args["d"] == "med" or frame.args["d"] == "medium" then
elseif d == "med" or d == "medium" then
se = "–" -- U+2013 EN DASH
se1 = "–" -- U+2013 EN DASH
elseif frame.args["d"] == "larr" then
elseif d == "larr" or d == "oarr" then
se = "←"                                     -- U+2190 ← LEFTWARDS ARROW
se1 = "←"                                   -- U+2190 ← LEFTWARDS ARROW
elseif frame.args["d"] == "rarr" then
elseif d == "rarr" or d == "iarr" then
se = "→"                                     -- U+2192 → RIGHTWARDS ARROW
se1 = "→"                                   -- U+2192 → RIGHTWARDS ARROW
else
else
se = "-" -- Hyphen-minus
se1 = "-" -- Hyphen-minus
end
end
local out_str = frame.args["input_str"]:gsub(",%s+", sp .. se .. sp)
if d2 == "long" then
se2 = "—" -- U+2014 EM DASH
elseif d2 == "med" or d2 == "medium" then
se2 = "–" -- U+2013 EN DASH
elseif d2 == "larr" or d == "iarr" then
se2 = "←"                                    -- U+2190 ← LEFTWARDS ARROW
elseif d2 == "rarr" or d == "oarr" then
se2 = "→"                                    -- U+2192 → RIGHTWARDS ARROW
elseif d2 == "short" then
se1 = "-" -- Hyphen-minus
else
se2 = ""
end
local result = ((se2 == nil or se2 == "")
and in_str:gsub("[,|%s]*,%s+", sp .. se1 .. sp)
or in_str:gsub(",%s*,%s+", sp .. se2 .. sp):gsub(",%s+", sp .. se1 .. sp))
return result
end
 
-- Wrapper function for Template:Dash
function p.dashes(frame)
local s = frame.args["s"]
local d = frame.args["d"]
local d2 = frame.args["d2"]
local in_str = frame.args["input_str"]
local debugg = frame.args["debug"]
local result = p._dash(in_str, s, d, d2)
if debugg == true then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return "<span>" .. out_str .. "</span>"
return frame:preprocess(result)
end
end


return p
return p