Module:auto cat: Difference between revisions

ਕੋਈ ਸੋਧ ਸਾਰ ਨਹੀਂ
No edit summary
Tag: Reverted
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


-- provides initial capitalisation
local function pluralize(word)
local function capitalize(word)
local ending = mw.ustring.sub(word, -1)
if mw.ustring.len(word) > 1 then
if ending == "h" and mw.ustring.sub(word, -2, -1) == "s" then ending = "sh" end
return mw.ustring.upper(mw.ustring.sub(word, 1, 1)) .. mw.ustring.sub(word, 2)
if ending == "s" or ending == "z" or ending == "x" or ending == "sh" then
elseif mw.ustring.len(word) == 1 then
return word .. "es"
return mw.ustring.upper(word)
end
end
error("Empty input for capitalisation")
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, ["^%%p"] = capitalize(pos), ["%%p"] = pos}))
                    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), ["^%%p"] = capitalize(pos), ["%%p"] = pos}), p_out_cats))
                    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, ["^%%p"] = capitalize(pos), ["%%p"] = pos}))
            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), ["^%%p"] = capitalize(pos), ["%%p"] = pos}), p_out_cats))
            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, {["^%%p"] = capitalize(pos), ["%%p"] = pos}))
             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, {["^%%p"] = capitalize(pos), ["%%p"] = pos}), p_out_cats))
         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