Jump to content

Module:SmartMobLinks

From Drifters Almanac
Revision as of 07:34, 28 May 2025 by Mildew (talk | contribs)

Documentation for this module may be created at Module:SmartMobLinks/doc

local p = {}

-- Returns a <ul> of pretty links with custom bullets from a comma-delimited list of mob paths
function p.fromDelimited(frame)
    local raw = frame.args[1] or ""
    local delimiter = frame.args.delimiter or ","
    local items = mw.text.split(raw, delimiter)
    -- Hide default bullets; we'll insert our own markers
    local output = { '<ul style="margin-left: 1em; list-style-type: none; padding-left: 0;">' }

    for _, entry in ipairs(items) do
        local fullPath = mw.text.trim(entry)
        if fullPath ~= "" then
            -- Parse prefix (Mob or Named Mob) and the rest of the path
            local prefix, rest = string.match(fullPath, "^(.-)/(.+)$")
            if not rest then prefix, rest = nil, fullPath end

            -- Extract name and optional zone
            local base, zone = string.match(rest, "^(.-)/(.+)$")
            local label = rest
            if base and zone then
                label = base .. " (" .. zone .. ")"
            end

            -- Determine custom marker: bullet for regular mobs, star for named
            local marker = "• "
            if prefix == "Named Mob" then marker = "★ " end

            -- Insert list item with custom marker
            table.insert(output, string.format(
                '<li style="margin-bottom: 0.5em;">%s[[%s|%s]]</li>',
                marker, fullPath, label
            ))
        end
    end

    table.insert(output, '</ul>')
    return table.concat(output, "\n")
end

return p