|
|
| Line 114: |
Line 114: |
| wikiLinkCache[cacheKey] = result | | wikiLinkCache[cacheKey] = result |
| return result | | return result |
| end
| |
|
| |
| -- Creates a {{fullurl:...}} wikitext string with URL-encoded parameters. This is necessary for safely passing values with spaces or special characters in query strings.
| |
| -- @param target The target page name.
| |
| -- @param params A table of query parameters {key1 = value1, key2 = value2}.
| |
| -- @return Wikitext for the fullurl invocation.
| |
| function p.createFullUrlWikitext(target, params)
| |
| if not target or target == "" then
| |
| return ""
| |
| end
| |
|
| |
| local queryParts = {}
| |
| if params then
| |
| -- For consistent ordering, sort keys
| |
| local keys = {}
| |
| for k in pairs(params) do
| |
| table.insert(keys, k)
| |
| end
| |
| table.sort(keys)
| |
|
| |
| for _, key in ipairs(keys) do
| |
| local value = params[key]
| |
| -- URL-encode the value for the query string per MediaWiki best practices
| |
| -- Use tostring() to gracefully handle non-string values
| |
| local encodedValue = mw.uri.encode(tostring(value), 'QUERY')
| |
| table.insert(queryParts, string.format('%s=%s', key, encodedValue))
| |
| end
| |
| end
| |
|
| |
| local queryString = table.concat(queryParts, '&')
| |
|
| |
| if queryString ~= "" then
| |
| return string.format('{{fullurl:%s|%s}}', target, queryString)
| |
| else
| |
| return string.format('{{fullurl:%s}}', target)
| |
| end
| |
| end | | end |
|
| |
|