Module:D'ni Tools: Difference between revisions
From Guild of Archivists
BladeLakem (talk | contribs) mNo edit summary |
BladeLakem (talk | contribs) No edit summary |
||
Line 65: | Line 65: | ||
local function | local function parseDniWord(input) | ||
local output = '' | local output = '' | ||
Line 72: | Line 72: | ||
local first = mw.ustring.sub(word,1,1) | local first = mw.ustring.sub(word,1,1) | ||
local last = mw.ustring.sub(word,-1,-1) | local last = mw.ustring.sub(word,-1,-1) | ||
local prefix = '' | |||
local suffix = '' | |||
if (word == mw.title.rootText) then | |||
prefix = '\'\'\'' | |||
suffix = prefix | |||
end | |||
if (word == '') then | if (word == '') then | ||
Line 80: | Line 87: | ||
output = first | output = first | ||
elseif (first == '-') then | elseif (first == '-') then | ||
output = '[[Dictionary:'..word..'|'..mw.ustring.sub(word,2,-1)..']]' | output = prefix..'[[Dictionary:'..word..'|'..mw.ustring.sub(word,2,-1)..']]'..suffix | ||
elseif (last == '-') then | elseif (last == '-') then | ||
output = '[[Dictionary:'..word..'|'..mw.ustring.sub(word,1,-2)..']]' | output = prefix..'[[Dictionary:'..word..'|'..mw.ustring.sub(word,1,-2)..']]'..suffix | ||
elseif (first == '.' or first == '!' or first == '?' or first == ',') then | elseif (first == '.' or first == '!' or first == '?' or first == ',') then | ||
output = first..'[[Dictionary:'..mw.ustring.sub(word,2,-1)..'|'..mw.ustring.sub(word,2,-1)..']]' | output = first..prefix..'[[Dictionary:'..mw.ustring.sub(word,2,-1)..'|'..mw.ustring.sub(word,2,-1)..']]'..suffix | ||
elseif (last == ',') then | elseif (last == ',') then | ||
output = '[[Dictionary:'..mw.ustring.sub(word,1,-2)..'|'..mw.ustring.sub(word,1,-2)..']]'..last | output = prefix..'[[Dictionary:'..mw.ustring.sub(word,1,-2)..'|'..mw.ustring.sub(word,1,-2)..']]'..suffix..last | ||
else | else | ||
output = '[[Dictionary:'..word..'|'..word..']]' | output = prefix..'[[Dictionary:'..word..'|'..word..']]'..suffix | ||
end | end | ||
return output | return output | ||
Line 104: | Line 112: | ||
for word in ipairs(origArgs) do | for word in ipairs(origArgs) do | ||
output = output.. | output = output..parseDniWord(origArgs[word]) | ||
end | end | ||
Revision as of 00:31, 25 July 2016
Documentation for this module may be created at Module:D'ni Tools/doc
--
-- This implements several useful functions for dealing with D'ni text in the Wiki.
--
-- parsed_dni() returns a string in which every component is linked to its appropriate Dictionary namespace entry.
-- dnifont2ots() converts a Dnifont string to an ots one
-- dnifont2nts() converts a Dnifont string to an nts one
local p = {}
local args = {}
local origArgs
local output = ''
-- Local Functions
local function dnifont2ots(str)
local output = mw.text.trim(str)
output = mw.ustring.gsub(str,"%S", {["S"] = "sh",
["T"] = "th",
["O"] = "oy",
["c"] = "ch",
["a"] = "ah",
["E"] = "ee",
["A"] = "ay",
["u"] = "uh",
["U"] = "oo",
["x"] = "ts",
["d"] = "dh",
["D"] = "d",
["k"] = "kh",
["K"] = "k",
["I"] = "ai",
["å"] = "a",
})
return output
end
local function dnifont2nts(str)
local output = mw.text.trim(str)
output = mw.ustring.gsub(str,"%S", {["S"] = "š",
["T"] = "þ",
["O"] = "ó",
["c"] = "ç",
["E"] = "i",
["A"] = "é",
["U"] = "ú",
["x"] = "c",
["d"] = "ð",
["D"] = "d",
["k"] = "x",
["K"] = "k",
["I"] = "á",
["å"] = "æ",
})
return output
end
local function parseDniWord(input)
local output = ''
local word = mw.text.trim(input)
local first = mw.ustring.sub(word,1,1)
local last = mw.ustring.sub(word,-1,-1)
local prefix = ''
local suffix = ''
if (word == mw.title.rootText) then
prefix = '\'\'\''
suffix = prefix
end
if (word == '') then
output = ' '
elseif (word == ' ') then
output = ' '
elseif (word == '.' or word == '?' or word == '!' or word == ',') then
output = first
elseif (first == '-') then
output = prefix..'[[Dictionary:'..word..'|'..mw.ustring.sub(word,2,-1)..']]'..suffix
elseif (last == '-') then
output = prefix..'[[Dictionary:'..word..'|'..mw.ustring.sub(word,1,-2)..']]'..suffix
elseif (first == '.' or first == '!' or first == '?' or first == ',') then
output = first..prefix..'[[Dictionary:'..mw.ustring.sub(word,2,-1)..'|'..mw.ustring.sub(word,2,-1)..']]'..suffix
elseif (last == ',') then
output = prefix..'[[Dictionary:'..mw.ustring.sub(word,1,-2)..'|'..mw.ustring.sub(word,1,-2)..']]'..suffix..last
else
output = prefix..'[[Dictionary:'..word..'|'..word..']]'..suffix
end
return output
end
function p.parsed_dni(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
for word in ipairs(origArgs) do
output = output..parseDniWord(origArgs[word])
end
return output
end
function p.dnifont2ots(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
preprocessSingleArg(1)
return dnifont2ots(args[1])
end
function p.dnifont2nts(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
preprocessSingleArg(1)
return dnifont2nts(args[1])
end
return p