Mô đun:Ruby
Tài liệu mô đun[tạo]
local p = {}
---Vietnamese letters
local letters = "aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆfFgGhHiIìÌỉỈĩĨíÍịỊjJkKlLmMnNoOòÒỏỎõÕóÓọỌôÔồỒổỔỗỖốỐộỘơƠờỜởỞỡỠớỚợỢpPqQrRsStTuUùÙủỦũŨúÚụỤưƯừỪửỬữỮứỨựỰvVwWxXyYỳỲỷỶỹỸýÝỵỴzZ"
---[[Bản mẫu:Ruby]]
function p.ruby(characters, readings, mark, alts)
if type(characters) == "table" then
local args = characters:getParent().args
characters, readings, mark, alts =
args[1] or "",
args[2] or "",
args.mark or mw.title.getCurrentTitle().text,
((args.alts and mw.text.split(args.alts, "%s+")) or
(args.ids and mw.text.split(args.ids, "%s+")) or {})
end
if not readings then
return characters
end
readings = mw.text.split(readings, "[^" .. letters .. "]+")
local character_idx = 1
if #readings[1] == 0 then character_idx = character_idx + 1 end
local result = {}
local alt_idx = 1
for character in mw.ustring.gmatch(characters, ".") do
local is_alt = false
if character == "*" and alts[alt_idx] then
character = alts[alt_idx]
is_alt = true
alt_idx = alt_idx + 1
end
if is_alt or (mw.ustring.match(character, "^%a$") and not character:match("^%w$")) then
local reading = readings[character_idx]
if mark and character == mark then
character = mw.ustring.format("<mark>%s</mark>", character)
reading = mw.ustring.format("<mark>%s</mark>", reading)
end
character = mw.ustring.format(
"<ruby><rb><span class='Hani'>%s</span></rb><rp>(</rp><rt><span style='padding: 0 0.25em;'>%s</span></rt><rp>)</rp></ruby>",
character, reading)
character_idx = character_idx + 1
elseif character == "\n" then
character = "<br>"
elseif character == " " then
character = mw.ustring.format(
"<ruby><rb><span class='Hani'>%s</span></rb></ruby>", character)
end
table.insert(result, character)
end
return mw.ustring.format("<span class='ruby' lang='vi' style='font-size: 137%%;'>%s</span>", table.concat(result))
end
return p