11,792
edits
TheNightAvl (talk | contribs) No edit summary Tag: Reverted |
TheNightAvl (talk | contribs) No edit summary |
||
(23 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
end | end | ||
return str | return str | ||
end | |||
-- provides initial capitalisation | |||
local function capitalize(word) | |||
if mw.ustring.len(word) > 1 then | |||
return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2) | |||
elseif mw.ustring.len(word) == 1 then | |||
return mw.ustring.upper(word) | |||
end | |||
error("Empty input for capitalisation") | |||
end | end | ||
Line 26: | Line 36: | ||
end | end | ||
local function pluralize(word) | |||
local function | local ending = mw.ustring.sub(word, -1) | ||
if ending == "h" and mw.ustring.sub(word, -2, -1) == "s" then ending = "sh" end | |||
if ending == "s" or ending == "z" or ending == "x" or ending == "sh" then | |||
return word .. "es" | |||
return | |||
end | end | ||
return word .. "s" | |||
end | end | ||
Line 47: | Line 56: | ||
local p_out_cats = {} | local p_out_cats = {} | ||
for _, p_cat in ipairs(p_categories) do | for _, p_cat in ipairs(p_categories) do | ||
table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name, ["%%u"] = l2_data.name, [" | table.insert(p_out_cats, capitalize(replace(p_cat, {["%%l"] = l_data.name, ["%%u"] = l2_data.name, ["%%ps"] = pluralize(pos), ["%%p"] = pos}))) | ||
end | end | ||
table.insert(out_patterns, to_pattern(replace(p_lua, {["%%l"] = sanitize(l_data.name), ["%%u"] = sanitize(l2_data.name), [" | table.insert(out_patterns, to_pattern(capitalize(replace(p_lua, {["%%l"] = sanitize(l_data.name), ["%%u"] = sanitize(l2_data.name), ["%%ps"] = pluralize(pos), ["%%p"] = pos})), p_out_cats)) | ||
end | end | ||
end | end | ||
Line 55: | Line 64: | ||
local p_out_cats = {} | local p_out_cats = {} | ||
for _, p_cat in ipairs(p_categories) do | for _, p_cat in ipairs(p_categories) do | ||
table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name, [" | table.insert(p_out_cats, capitalize(replace(p_cat, {["%%l"] = l_data.name, ["%%ps"] = pluralize(pos), ["%%p"] = pos}))) | ||
end | end | ||
table.insert(out_patterns, to_pattern(replace(p_lua, {["%%l"] = sanitize(l_data.name), [" | table.insert(out_patterns, to_pattern(capitalize(replace(p_lua, {["%%l"] = sanitize(l_data.name), ["%%ps"] = pluralize(pos), ["%%p"] = pos})), p_out_cats)) | ||
end | end | ||
end | end | ||
Line 68: | Line 77: | ||
table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name, ["%%u"] = l2_data.name})) | table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name, ["%%u"] = l2_data.name})) | ||
end | end | ||
table.insert(out_patterns, to_pattern(replace(p_lua, {["%%l"] = sanitize(l_data.name), ["%%u"] = sanitize(l2_data.name)}), p_out_cats)) | table.insert(out_patterns, to_pattern(capitalize(replace(p_lua, {["%%l"] = sanitize(l_data.name), ["%%u"] = sanitize(l2_data.name)})), p_out_cats)) | ||
end | end | ||
end | end | ||
Line 76: | Line 85: | ||
table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name})) | table.insert(p_out_cats, replace(p_cat, {["%%l"] = l_data.name})) | ||
end | end | ||
table.insert(out_patterns, to_pattern(replace(p_lua, {["%%l"] = sanitize(l_data.name)}), p_out_cats)) | table.insert(out_patterns, to_pattern(capitalize(replace(p_lua, {["%%l"] = sanitize(l_data.name)})), p_out_cats)) | ||
end | end | ||
end | end | ||
Line 96: | Line 105: | ||
local p_out_cats = {} | local p_out_cats = {} | ||
for _, p_cat in ipairs(p_categories) do | for _, p_cat in ipairs(p_categories) do | ||
table.insert(p_out_cats, replace(p_cat, {[" | table.insert(p_out_cats, capitalize(replace(p_cat, {["%%ps"] = pluralize(pos), ["%%p"] = pos}))) | ||
end | end | ||
table.insert(out_patterns, to_pattern(replace(p_lua, {[" | table.insert(out_patterns, to_pattern(capitalize(replace(p_lua, {["%%ps"] = pluralize(pos), ["%%p"] = pos})), p_out_cats)) | ||
end | end | ||
end | end | ||
Line 125: | Line 134: | ||
local _, _, s_match = mw.ustring.find(category_name, p_lua) | local _, _, s_match = mw.ustring.find(category_name, p_lua) | ||
for _, p_category in ipairs(p_categories) do | for _, p_category in ipairs(p_categories) do | ||
out = out .. "[[Category:" .. (is_s and replace(p_category, {["%%s"] = s_match}) or p_category) .. "]]" | out = out .. "[[Category:" .. (is_s and replace(p_category, {["^%%s"] = capitalize(s_match), ["%%s"] = s_match}) or p_category) .. "]]" | ||
end | end | ||
return out | return out | ||
Line 131: | Line 140: | ||
function export.auto_cat(category_name) | function export.auto_cat(category_name) | ||
if category_name == "Fundamental" then return "" end | |||
local lua_patterns = hydrate_patterns() | local lua_patterns = hydrate_patterns() | ||
for _, p_data in ipairs(lua_patterns) do | for _, p_data in ipairs(lua_patterns) do | ||
local p_lua, p_categories = p_data[1], p_data[2] | local p_lua, p_categories = p_data[1], p_data[2] | ||
if mw.ustring.find(category_name, p_lua) ~= nil then | if mw.ustring.find(category_name, p_lua) ~= nil then | ||
--[[ | |||
if mw.ustring.find(category_name, "^Rhymes%:%S+%/%S+$") and mw.site.stats.pagesInCategory(category_name, "pages") > 1 then | |||
-- Add active rhymes category if Rhyme category and also contains more than two terms | |||
local p_new = mw.ustring.gsub(category_name, "^Rhymes%:(%S+)%/(%S+)$", "%1 active rhymes|%2") | |||
table.insert(p_categories, p_new) | |||
]]-- | |||
if mw.ustring.find(category_name, "^Rhymes%:%S+%/%S+$") and mw.site.stats.pagesInCategory(category_name, "pages") < 2 then | |||
-- Hide category if only one entry | |||
local return_cat = mw.ustring.gsub(category_name, "^Rhymes%:(%S+)%/%S+$", "__HIDDENCAT__\n[[Category:%1 inactive rhymes]]") | |||
return return_cat | |||
end | |||
-- Process the categories | |||
return process_category(category_name, p_lua, p_categories) | return process_category(category_name, p_lua, p_categories) | ||
end | end |