Module:Sandbox/Erutuon: Difference between revisions

Content deleted Content added
hook validation function so it evaluates codes in testcases
get_tag method to provide nicely capitalized tag, some fixes
Line 371:
self:pretty_print()
p.validate_lang_tag(self)
return setmetatable(self, nil)
end,
Line 383:
end,
concatget_tag = function (self, up_to)
-- This is used to generate the prefix to look up in the table of
if self.tag then return self.tag end
-- to determine whether a variant subtag is being used with the correct
end
-- prefix.
local strtag = ""{}
-- Unfortunately, it will not work if the prefix contains a variant
for _, subtagsubtag_name in ipairs(self.subtag_order) do
-- itself.
table.insert(tag, self[subtag_name])
concat = function (self, up_to)
local str = ""
for _, subtag in ipairs(self.subtag_order) do
if subtag == "up_to" then
break
end
if self[subtag] then
if type(self[subtag]) == "table" then -- an array
str = str .. table.concat(self[subtag], "-")
else -- a string
str = str .. self[subtag]
end
end
end
strtag = str .. table.concat(self[subtag]tag, "-")
return str
self.tag = tag
return strtag
end,
Line 619 ⟶ 609:
not (lang_data.override[parsed_subtags.language]
or lang_name_table.lang[parsed_subtags.language]) then
mw.log("Invalid language code", parsed_subtags.language, "in", parsed_subtags:get_tag())
end
if parsed_subtags.script then
if not lang_name_table.script[parsed_subtags.script:lower()] then
mw.log("Invalid script code", parsed_subtags.script, "in", parsed_subtags:get_tag())
end
Line 631 ⟶ 621:
lang_name_table.suppressed[parsed_subtags.script],
parsed_subtags.language) then
mw.log(parsed_subtags.script, "is suppressed with", parsed_subtags.language, "in", parsed_subtags:get_tag())
end
end
if parsed_subtags.region and not lang_name_table.region[parsed_subtags.region:lower()] then
mw.log("Invalid region code", parsed_subtags.region, "in", parsed_subtags:get_tag())
end
if parsed_subtags.variant then
iffor not_, lang_name_table.variant[ in ipairs(type(parsed_subtags.variant]) == then"table"
mw.log("Invalid and parsed_subtags.variant code",or { parsed_subtags.variant }) do
if not lang_name_table.variant[variant] then
else
mw.log("Invalid variant code", variant, "in", parsed_subtags:get_tag())
local prefix = parsed_subtags:concat("variant") -- Concat up to "variant".
-- better?else
-- local prefix = parsed_subtags.tag:get_tag():lower():match("(.-)%-" .. parsed_subtags.variant)
if not require "Module:Table".inArray(lang_name_table.variant[parsed_subtags.variant].prefixes, prefix) then
mw.log("Variant tag", parsed_subtags.variant, "does not belong with prefix", prefix, "in", parsed_subtags:get_tag())
end
end
end
Line 654 ⟶ 645:
if parsed_subtags.private_use and not lang_data.override[parsed_subtags.tag] then
mw.log("Invalid private-use subtag", parsed_subtags.private_use, "in", parsed_subtags:get_tag())
end
end