Content deleted Content added
pretty-print subtags |
starting validation function |
||
Line 381:
return self
end,
-- This is used to generate the prefix to look up in the table of
-- to determine whether a variant subtag is being used with the correct
-- prefix.
-- Unfortunately, it will not work if the prefix contains a variant
-- itself.
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
str = str .. self[subtag]
end
end
return str
end,
subtag_order = {
"language", "script", "region", "variant", "private_use"
},
error_messages = {
Line 455 ⟶ 477:
local potential_subtags = mw.text.split(tag, "-")
local parsed_subtags = parsed_subtags_mt(potential_subtags)
parsed_subtags.tag = tag
-- Language tags probably only contain ASCII alphabetic and numerical
Line 576 ⟶ 599:
return parsed_subtags:remove_unnecessary_fields()
end
local lang_name_table = mw.loadData "Module:Language/name/data"
local synonym_table = mw.loadData "Module:Lang/ISO 639 synonyms"
local lang_data = mw.loadData "Module:Lang/data"
function p.validate_lang_tag(parsed_subtags)
-- Already checked that the tag starts with a language subtag or a private-use subtag.
-- Script code is initially capitalized, region code is uppercase,
-- everything else is lowercase.
if parsed_subtags.language and
not (lang_data.override[parsed_subtags.language]
or lang_name_table.lang[parsed_subtags.language]) then
mw.log("Invalid language code", parsed_subtags.language)
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)
end
if lang_name_table.suppressed[parsed_subtags.script]
and require "Module:Table".inArray(
lang_name_table.suppressed[parsed_subtags.script],
parsed_subtags.language) then
mw.log(parsed_subtags.script, "is suppressed with", parsed_subtags.language)
end
end
if parsed_subtags.region and not lang_name_table[parsed_subtags.region:lower()] then
mw.log("Invalid region code", parsed_subtags.region)
end
if parsed_subtags.variant then
if not lang_name_table.variant[parsed_subtags.variant] then
mw.log("Invalid variant code", parsed_subtags.variant)
end
local prefix = parsed_subtags:concat("variant") -- Concat up to "variant".
-- better?
-- prefix = parsed_subtags.tag:match("(.-)%-" .. parsed_subtags.variant)
if not require "Module:Table".inArray(lang_name_table.variant[parsed_subtags.variant].prefixes, prefix) then
end
end
end
|