Anonymous

Difference between revisions of "Module:Nihongo"

From Ninja Wiki
2,354 bytes removed ,  05:19, 10 July 2021
Restored revision 1014499540 by Trappist the monk (talk): See talk; reversing CSS spacing changes pending wider consensus/RfC
m (1 revision imported)
 
(Restored revision 1014499540 by Trappist the monk (talk): See talk; reversing CSS spacing changes pending wider consensus/RfC)
Line 49: Line 49:


return output and (output .. '</5p4n>') or ''; -- where there is output, add secret tag close
return output and (output .. '</5p4n>') or ''; -- where there is output, add secret tag close
end
--[[--------------------------< R O M A J I _ K E R N >--------------------------------------------------------
add kerning when first or last character of romaji contacts adjacent opening or closing paranthesis
In this example, without kerning, the romaji characters 'j' and 'V' are italicized so will contact the parentheses
(<i lang=\"ja-Latn\" title=\"Hepburn transliteration\">jV</i>)
<ret_string> is the formatted template output (except that the magic string '<5p4n>' has not yet been replaced)
<romaji> is the return from lang_module._transl() so is not wrapped in parentheses
]]
local function romaji_kern (ret_string, romaji)
if not romaji or ('' == romaji) then -- if romaji not set
return ret_string; -- then we're done
end
local romaji_text = romaji:gsub ('%b<>', ''):gsub ('\'\'+', ''):gsub ('%[%[', ''):gsub ('%]%]', ''); -- strip html tags
romaji = romaji:gsub ('([%(%)%.%%%+%-%*%?%[%^%$%]])', '%%%1'); -- escape lua pattern characters
local romaji_has_leading_paren = ret_string:match ('%(' .. romaji); -- has a value if (<romaji>; nil else
local romaji_has_trailing_paren = ret_string:match (romaji .. '%)'); -- has a value if <romaji>); nil else
local kern_lead_pattern = '^[jpy]'; -- list of characters that when italicized contact unitalicized leading parenthesis
local kern_tail_pattern = '[dfijkltCEFHIJKMNPR-Z\'"%?!%]]$'; -- list of characters that when italicized contact unitalicized trailing parenthesis
local kern_right = '<span style="margin-right:.2em">(</span>%1'; -- %1 is <romaji> capture
local kern_left = '%1<span style="margin-left:.2em">)</span>'; -- %1 is <romaji> capture
if romaji_has_leading_paren and romaji_text:match (kern_lead_pattern) then
ret_string = ret_string:gsub ('%((' .. romaji .. ')', kern_right); -- replace plain '(' with kerned '('; <romaji> included here to ensure that the correct '(' is kerned
end
if romaji_has_trailing_paren and romaji_text:match (kern_tail_pattern) then
ret_string = ret_string:gsub ('(' .. romaji .. ')%)', kern_left); -- replace plain ')' with kerned ')'; <romaji> included here to ensure that the correct ')' is kerned
end
return ret_string; -- done
end
end


Line 95: Line 54:
--[=[-------------------------< N I H O N G O >----------------------------------------------------------------
--[=[-------------------------< N I H O N G O >----------------------------------------------------------------


Implement {{nihongo}} using Module:Lang for language and transliteration markup
An experiment to see how to implement {{nihongo}} using Module:Lang for language and transliteration markup


{{Nihongo|<English>|<japanese>|<romaji>|<extra>|<extra2>|lead=yes}}
{{Nihongo|<English>|<japanese>|<romaji>|<extra>|<extra2>|lead=yes}}
Line 129: Line 88:
romaji = (lead and english and '[[Hepburn romanization|Hepburn]]: ' or '') .. lang_module._transl ({'ja', 'hepburn', romaji}) or nil;
romaji = (lead and english and '[[Hepburn romanization|Hepburn]]: ' or '') .. lang_module._transl ({'ja', 'hepburn', romaji}) or nil;
end
end
 
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced  before function returns
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced  before function returns
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'%s<5p4n>', {romaji}}, -- 2 - romaji
{'%s<5p4n>', {romaji}}, -- 2 - romaji
{'%s<5p4n> (%s)', {romaji, extra}}, -- 3 - romaji (extra)
{'%s<5p4n> (%s)', {romaji, extra}}, -- 3 - romaji (extra)
{'<5p4n>(%s)', {japanese}}, -- 4 - japanese
{'<5p4n>(%s)', {japanese}}, -- 4 - japanese
{'<5p4n>(%s, %s)', {japanese, extra}}, -- 5 - (japanese, extra)
{'<5p4n>(%s, %s)', {japanese, extra}}, -- 5 - (japanese, extra)
{'%s<5p4n> (%s)', {romaji, japanese}}, -- 6 - romaji (japanese)
{'%s<5p4n> (%s)', {romaji, japanese}}, -- 6 - romaji (japanese)
{'%s<5p4n> (%s, %s)', {romaji, japanese, extra}}, -- 7 - romaji (japanese, extra)
{'%s<5p4n> (%s, %s)', {romaji, japanese, extra}}, -- 7 - romaji (japanese, extra)
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {english, romaji}}, -- 10 - english (romaji)
{'%s<5p4n> (%s)', {english, romaji}}, -- 10 - english (romaji)
{'%s<5p4n> (%s, %s)', {english, romaji, extra}}, -- 11 - english (romaji, extra)
{'%s<5p4n> (%s, %s)', {english, romaji, extra}}, -- 11 - english (romaji, extra)
{'%s<5p4n> (%s)', {english, japanese}}, -- 12 - english (japanese)
{'%s<5p4n> (%s)', {english, japanese}}, -- 12 - english (japanese)
{'%s<5p4n> (%s, %s)', {english, japanese, extra}}, -- 13 - english (japanese, extra)
{'%s<5p4n> (%s, %s)', {english, japanese, extra}}, -- 13 - english (japanese, extra)
{'%s<5p4n> (%s, %s)', {english, japanese, romaji}},-- 14 - english (japanese, romaji)
{'%s<5p4n> (%s, %s)', {english, japanese, romaji}}, -- 14 - english (japanese, romaji)
{'%s<5p4n> (%s, %s, %s)', {english, japanese, romaji, extra}}, -- 15 - english (japanese, romaji, extra)
{'%s<5p4n> (%s, %s, %s)', {english, japanese, romaji, extra}}, -- 15 - english (japanese, romaji, extra)
}
}


local ret_string = nihongo_renderer (args, formatting, extra2)
local ret_string = nihongo_renderer (args, formatting, extra2)
ret_string = romaji_kern (ret_string, romaji); -- kern romaji text when appropriate
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
return ret_string; -- because gsub returns the number of replacements made as second return value
return ret_string; -- because gsub returns the number of replacements made as second return value
end
end
Line 158: Line 115:
--[=[-------------------------< N I H O N G O 3 >--------------------------------------------------------------
--[=[-------------------------< N I H O N G O 3 >--------------------------------------------------------------


Implement {{nihongo3}} using Module:Lang for language and transliteration markup
An experiment to see how to implement {{nihongo3}} using Module:Lang for language and transliteration markup


Similar to {{nihongo}} but changes rendered order and does not support |lead=
Similar to {{nihongo}} but changes rendered order and does not support |lead=
Line 212: Line 169:
--[=[-------------------------< N I H O N G O  K R T >--------------------------------------------------------------
--[=[-------------------------< N I H O N G O  K R T >--------------------------------------------------------------


Implement {{nihongo krt}} using Module:Lang for language and transliteration markup
An experiment to see how to implement {{nihongo krt}} using Module:Lang for language and transliteration markup


Similar to {{nihongo}} but changes rendered order and does not support |lead=
Similar to {{nihongo}} but changes rendered order and does not support |lead=
Line 241: Line 198:
romaji = romaji and lang_module._transl ({'ja', 'hepburn', romaji}) or nil;
romaji = romaji and lang_module._transl ({'ja', 'hepburn', romaji}) or nil;
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced  before function returns
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced  before function returns
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'%s<5p4n>', {romaji}}, -- 2 - romaji
{'%s<5p4n>', {romaji}}, -- 2 - romaji
{'%s<5p4n> (%s)', {romaji, extra}}, -- 3 - romaji (extra)
{'%s<5p4n> (%s)', {romaji, extra}}, -- 3 - romaji (extra)
{'<5p4n>%s', {japanese}}, -- 4 - japanese
{'<5p4n>%s', {japanese}}, -- 4 - japanese
{'<5p4n>%s (%s)', {japanese, extra}}, -- 5 - japanese (extra)
{'<5p4n>%s (%s)', {japanese, extra}}, -- 5 - japanese (extra)
{'<5p4n>%s (%s)', {japanese, romaji}},-- 6 - japanese (romaji)
{'<5p4n>%s (%s)', {japanese, romaji}}, -- 6 - japanese (romaji)
{'<5p4n>%s (%s, %s)', {japanese, romaji, extra}}, -- 7 - japanese (romaji, extra)
{'<5p4n>%s (%s, %s)', {japanese, romaji, extra}}, -- 7 - japanese (romaji, extra)
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {romaji, english}}, -- 10 - romaji (english)
{'%s<5p4n> (%s)', {romaji, english}}, -- 10 - romaji (english)
{'%s<5p4n> (%s, %s)', {romaji, english, extra}}, -- 11 - romaji (english, extra)
{'%s<5p4n> (%s, %s)', {romaji, english, extra}}, -- 11 - romaji (english, extra)
{'<5p4n>%s (%s)', {japanese, english}}, -- 12 - japanese (english)
{'<5p4n>%s (%s)', {japanese, english}}, -- 12 - japanese (english)
{'<5p4n>%s (%s, %s)', {japanese, english, extra}}, -- 13 - japanese (english, extra)
{'<5p4n>%s (%s, %s)', {japanese, english, extra}}, -- 13 - japanese (english, extra)
{'<5p4n>%s (%s, %s)', {japanese, romaji, english}}, -- 14 - japanese (romaji, english)
{'<5p4n>%s (%s, %s)', {japanese, romaji, english}}, -- 14 - japanese (romaji, english)
{'<5p4n>%s (%s, %s, %s)', {japanese, romaji, english, extra}}, -- 15 - japanese (romaji, english, extra)
{'<5p4n>%s (%s, %s, %s)', {japanese, romaji, english, extra}}, -- 15 - japanese (romaji, english, extra)
}
}


local ret_string = nihongo_renderer (args, formatting, extra2)
local ret_string = nihongo_renderer (args, formatting, extra2)
ret_string = romaji_kern (ret_string, romaji); -- kern romaji text when appropriate
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
return ret_string; -- because gsub returns the number of replacements made as second return value
return ret_string; -- because gsub returns the number of replacements made as second return value
Line 267: Line 223:
--[=[-------------------------< N I H O N G O _ F O O T >------------------------------------------------------
--[=[-------------------------< N I H O N G O _ F O O T >------------------------------------------------------


Implement {{nihongo_foot}} using Module:Lang for language and transliteration markup
An experiment to see how to implement {{nihongo_foot}} using Module:Lang for language and transliteration markup


{{Nihongo foot|<English>|<japanese>|<romaji>|<extra>|<extra2>|<post>|lead=yes|group}}
{{Nihongo foot|<English>|<japanese>|<romaji>|<extra>|<extra2>|<post>|lead=yes|group}}
Anonymous user