Module:Crh
Documentation for this module may be created at Module:Crh/doc
require('strict') local p = {} -- Errors local err_category = { ['crh'] = '[[Category:crh template errors]]' } local function errorMessage(error) return '<span class="error" style="font-size:100%">Error in crh template: {{' .. error .. '}}</span>' end -- Helper function to parse boolean parameters local function isFalse(value) if value == "no" or value == "n" or value == "false" or value == "0" or value == "off" or value == "none" then return true else return false end end local function parseBoolean(value, default) if value == nil then return default elseif type(value) == "string" then value = value:lower() if value == "yes" or value == "y" or value == "true" or value == "1" or value == "on" then return true elseif isFalse(value) then return false end end return default end -- Helper function to get parameter value, considering aliases local function getParamValue(params, paramName, aliases) local value = params[paramName] if value == nil and aliases then for _, alias in ipairs(aliases) do value = params[alias] if value then break end end end return value end -- Main function to render text function p.renderText(frame) local args = require ('Module:Arguments').getArgs (frame); local latinText = args[1] local cyrillicText = args[2] local arabicText = args[3] local literalTranslation = getParamValue(args, "lit", {"literal", "literally"}) local link = parseBoolean(args["link"], true) local lead = parseBoolean(args["lead"], true) local label = args["label"] local labelOnly = parseBoolean(args["label-only"], true) local output = {} local parts = {} if label then if not isFalse(label) then table.insert(output, label .. ": ") else end elseif lead then if link then table.insert(output, "[[Crimean Tatar language|Crimean Tatar]]: ") else table.insert(output, "Crimean Tatar: ") end end -- if label and not isFalse(label) then -- table.insert(parts, label .. ":") -- elseif label and isFalse(label) then -- do return end -- elseif lead and link then -- table.insert(output, "[[Crimean Tatar language|Crimean Tatar]]: ") -- elseif lead and not link then -- table.insert(output, "Crimean Tatar: ") -- end if latinText then local spannedLatin = "<span title=\"Crimean Tatar-language text\" lang=\"crh-Latn\">" .. latinText .. "</span>" if lead and not labelOnly and link then table.insert(parts, "[[Latin alphabet|Latin]]: ''" .. spannedLatin .. "''") elseif lead and not labelOnly and link then table.insert(parts, "Latin: ''" .. spannedLatin .. "''") else table.insert(parts, "''" .. spannedLatin .. "''") end end if cyrillicText then local spannedCyrillic = "<span title=\"Crimean Tatar-language text\" lang=\"crh-Cyrl\">" .. cyrillicText .. "</span>" if not labelOnly and link then table.insert(parts, "[[Cyrillic script|Cyrillic]]: " .. spannedCyrillic) elseif cyrillicText and not labelOnly and not link then table.insert(parts, "Cyrillic: " .. spannedCyrillic) elseif cyrillicText and labelOnly then table.insert(parts, spannedCyrillic) end end if arabicText then local spannedArabic = "<span title=\"Crimean Tatar-language text\" lang=\"crh-Arab\" dir=\"rtl\">" .. arabicText .. "</span>" if not labelOnly and link then table.insert(parts, "[[Arabic script|Arabic]]: " .. spannedArabic) elseif not labelOnly and not link then table.insert(parts, "Arabic: " .. spannedArabic) elseif labelOnly then table.insert(parts, spannedArabic) end end if literalTranslation and link then table.insert(parts, "[[Literal translation|lit.]] '" .. literalTranslation .. "'") elseif literalTranslation and not link then table.insert(parts, "<abbr title=\"literal translation\">lit.</abbr> '" .. literalTranslation .. "'") end table.insert(output, table.concat(parts, ", ")) return table.concat(output) end return p