Module:Korean transliteration notice and Module:Korean transliteration notice/sandbox: Difference between pages
(Difference between pages)
imported>Nonabelian Provide explanations |
imported>Nonabelian No edit summary |
||
Line 1: | Line 1: | ||
require('strict') | require('strict') | ||
local p = {} | |||
local p = {} | local categoryHandler = require('Module:Category handler').main | ||
local categoryHandler = require('Module:Category handler').main | local yesno = require('Module:Yesno') | ||
local yesno = require('Module:Yesno') | local mArguments = require('Module:Arguments') | ||
local mArguments = require('Module:Arguments') | local n | ||
local n | |||
-- | -- Define functions | ||
local function cat(category) | local function cat(category) | ||
category = string.format('[[Category:%s]]', category) | category = string.format('[[Category:%s]]', category) | ||
n.category = n.category .. category | |||
n.category = n.category.. | |||
end | end | ||
local function RR() | local function RR() | ||
mw.log('Inside RR function') | |||
n.variant = 'Revised Romanization of Korean' | |||
n.transliteration_examples = "''Joseon'', ''Tteokbokki'', ''Pansori''" | |||
cat('Wikipedia articles that use the Revised Romanization of Korean') | |||
if n.bid then n.id = n.id .. 'rr' end | |||
end | end | ||
local function MR() | local function MR() | ||
mw.log('Inside MR function') | |||
n.variant = 'McCune-Reischauer romanization of Korean' | |||
n.extraguide = ' and [[Wikipedia:Naming conventions (Korean)|Korean naming conventions]]' | |||
cat('Wikipedia articles that use the McCune-Reischauer romanization of Korean') | |||
n.flag = 'no' | |||
if n.bid then n.id = n.id .. 'mr' end | |||
end | end | ||
local function Yale() | local function Yale() | ||
mw.log('Inside Yale function') | |||
n.variant = 'Yale romanization of Korean' | |||
n.extraguide = ' and [[Wikipedia:Naming conventions (Korean)|Korean naming conventions]]' | |||
cat('Wikipedia articles that use the Yale romanization of Korean') | |||
n.flag = 'no' | |||
if n.bid then n.id = n.id .. 'yale' end | |||
end | end | ||
local function modify_text() | local function modify_text() | ||
mw.log('Inside modify_text function') | |||
n.transliteration = '' | |||
n.extravariant = '' | |||
n.extraguide = '' | |||
local bRR = yesno(n.RR) | |||
local bMR = yesno(n.MR) | |||
local bYale = yesno(n.Yale) | |||
if bRR then | |||
RR() | |||
return | |||
elseif bMR then | |||
MR() | |||
return | |||
elseif bYale then | |||
Yale() | |||
return | |||
end | |||
if n.transliteration_examples then n.transliteration = ', which has its own [[transliteration]] conventions' end | |||
end | end | ||
local function base_text(frame) | local function base_text(frame) | ||
mw.log('Inside base_text function') | |||
n.subjectspace = require('Module:Pagetype').main() | |||
n.transliteration_examples = n.transliteration_examples and string.format(' (e.g., %s)', n.transliteration_examples) or '' | |||
n.terms = n[1] or n.terms | |||
n.terms = n.terms and string.format(' (including %s)', n.terms) or '' | |||
n.compare = n.compare and (n.compare .. ' ') or '' | |||
n.text = string.format([=[This %s '''uses the [[%s]]%s'''%s%s and some terms that are used in it%s may be different or absent from %sor other [[Romanization of Korean|romanizations of Korean]]. According to the [[MOS:KO|relevant Korean style guide]]%s, this should not be changed without [[Wikipedia:Consensus#Levels of consensus|broad consensus]]. Per [[WP:COMMONNAME]], use words commonly established in English over any transliteration if they exist.]=], | |||
n.subjectspace, n.variant, n.extravariant, n.transliteration, n.transliteration_examples, n.terms, n.compare, n.extraguide) | |||
end | end | ||
local function style(frame) | local function style(frame) | ||
mw.log('Inside style function') | |||
local size | |||
if yesno(n.small) then size = '30px' | |||
elseif n.size then size = n.size | |||
else size = '50px' | |||
end | |||
if n.image then | |||
n.image = string.format('[[File:%s|%s]]', n.image, size) | |||
end | |||
if n.form == 'editnotice' then | |||
if n.bid then n.id = n.id .. 'editnotice' end | |||
n.expiry = n.expiry or 'indefinite' | |||
if yesno(n.editnotice_cat) then | |||
cat(string.format('Pages with the %s editnotice', n.variant)) | |||
end | |||
return frame:expandTemplate{title = 'editnotice', args = n} | |||
else | |||
local message_box = require('Module:Message box').main | |||
if not n.image then n.image = 'none' end | |||
n['type'] = 'style' | |||
return message_box('tmbox', n) | |||
end | |||
end | end | ||
local function getBasePageName() | local function getBasePageName() | ||
mw.log('Inside getBasePageName function') | |||
local title = mw.title.getCurrentTitle() | |||
local basePageName = title.text | |||
-- Handle specific cases | |||
if basePageName:find("McCune-Reischauer romanization of Korean") then | |||
basePageName = "McCune-Reischauer" | |||
elseif basePageName:find("Yale romanization of Korean") then | |||
basePageName = "Yale romanization" | |||
elseif basePageName:find("Revised Romanization of Korean") then | |||
basePageName = "Revised Romanization" | |||
else | |||
basePageName = basePageName:gsub(" romanization of Korean", "") | |||
basePageName = basePageName:gsub(" of Korean", "") | |||
end | |||
return basePageName | |||
end | end | ||
p.getBasePageName = getBasePageName | p.getBasePageName = getBasePageName | ||
local function _main(frame, templatetitle) | local function _main(frame, templatetitle) | ||
mw.log('Inside _main function') | |||
n = mArguments.getArgs(frame, {parentFirst = true}) | |||
n.variant = n.variant or templatetitle -- automatically use title generated from template name | |||
n.category = '' | |||
n.transliteration_examples = n.transliteration_examples or n['transliteration examples'] | |||
n.bid = not not n.id | |||
if not n.text then | |||
modify_text() | |||
base_text(frame) | |||
end | |||
cat('Wikipedia articles that use the ' .. n.variant) | |||
return style(frame) .. (n.category or '') | |||
end | end | ||
p._main = _main | p._main = _main | ||
-- Main | -- Main function | ||
function p.main(frame) | function p.main(frame) | ||
mw.log('Inside main function') | |||
local fulltitle = frame:getParent():getTitle() | |||
local templatetitle = string.sub(fulltitle, 10) | |||
local title = mw.title.getCurrentTitle() | |||
if mw.title.equals(title, mw.title.makeTitle('Template', title.rootText)) then -- if it is on the main template page, load doc | |||
n = mArguments.getArgs(frame, {parentFirst = true}) | |||
n.variant = n.variant or templatetitle -- automatically use title generated from template name | |||
if n.doc ~= 'no' then | |||
return frame:expandTemplate {title = 'Korean transliteration notice/documentation', args = n} | |||
end | |||
end | |||
return _main(frame, templatetitle) | |||
end | end | ||
return p | return p |