| Line 2: |
Line 2: |
| | -- with a list of arguments, returning a specified result if an argument is | | -- with a list of arguments, returning a specified result if an argument is |
| | -- not on the list | | -- not on the list |
| | + | |
| | + | pcall(require, 'strict'); |
| | + | |
| | local p = {} | | local p = {} |
| | + | |
| | + | local mapframe_params = { |
| | + | 'coord', |
| | + | 'coordinates', |
| | + | 'id', |
| | + | 'qid', |
| | + | 'mapframe', |
| | + | 'mapframe-area_km2', |
| | + | 'mapframe-area_mi2', |
| | + | 'mapframe-caption', |
| | + | 'mapframe-coord', |
| | + | 'mapframe-coordinates', |
| | + | 'mapframe-custom', |
| | + | 'mapframe-frame-coord', |
| | + | 'mapframe-frame-coordinates', |
| | + | 'mapframe-frame-height', |
| | + | 'mapframe-frame-width', |
| | + | 'mapframe-geomask', |
| | + | 'mapframe-geomask-fill', |
| | + | 'mapframe-geomask-fill-opacity', |
| | + | 'mapframe-geomask-stroke-color', |
| | + | 'mapframe-geomask-stroke-colour', |
| | + | 'mapframe-geomask-stroke-width', |
| | + | 'mapframe-height', |
| | + | 'mapframe-id', |
| | + | 'mapframe-length_km', |
| | + | 'mapframe-length_mi', |
| | + | 'mapframe-line', |
| | + | 'mapframe-line-stroke-color', |
| | + | 'mapframe-line-stroke-colour', |
| | + | 'mapframe-marker', |
| | + | 'mapframe-marker-color', |
| | + | 'mapframe-marker-colour', |
| | + | 'mapframe-point', |
| | + | 'mapframe-population', |
| | + | 'mapframe-shape', |
| | + | 'mapframe-shape-fill', |
| | + | 'mapframe-shape-fill-opacity', |
| | + | 'mapframe-shape-stroke-color', |
| | + | 'mapframe-shape-stroke-colour', |
| | + | 'mapframe-stroke-color', |
| | + | 'mapframe-stroke-colour', |
| | + | 'mapframe-stroke-width', |
| | + | 'mapframe-switcher', |
| | + | 'mapframe-type', |
| | + | 'mapframe-width', |
| | + | 'mapframe-wikidata', |
| | + | 'mapframe-zoom' |
| | + | } |
| | | | |
| | local function trim(s) | | local function trim(s) |
| Line 41: |
Line 93: |
| | end | | end |
| | | | |
| − | local ignoreblank = isnotempty(args['ignoreblank']) | + | -- create the list of known args, regular expressions, and the return string |
| − | local showblankpos = isnotempty(args['showblankpositional'])
| |
| | local knownargs = {} | | local knownargs = {} |
| − | local unknown = args['unknown'] or 'Found _VALUE_, ' | + | |
| − | local preview = args['preview']
| + | if isnotempty(args['mapframe_args']) then |
| − | | + | for _, v in ipairs(mapframe_params) do |
| − | local values = {} | + | knownargs[v] = 1 |
| − | local res = {} | + | end |
| | + | end |
| | + | |
| | local regexps = {} | | local regexps = {} |
| − |
| |
| − | -- create the list of known args, regular expressions, and the return string
| |
| | for k, v in pairs(args) do | | for k, v in pairs(args) do |
| | if type(k) == 'number' then | | if type(k) == 'number' then |
| Line 60: |
Line 111: |
| | end | | end |
| | end | | end |
| − | if isnotempty(preview) then | + | |
| − | preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>'
| |
| − | elseif preview == nil then
| |
| − | preview = unknown
| |
| − | end
| |
| − | | |
| | -- loop over the parent args, and make sure they are on the list | | -- loop over the parent args, and make sure they are on the list |
| | + | local ignoreblank = isnotempty(args['ignoreblank']) |
| | + | local showblankpos = isnotempty(args['showblankpositional']) |
| | + | local values = {} |
| | for k, v in pairs(pargs) do | | for k, v in pairs(pargs) do |
| | if type(k) == 'string' and knownargs[k] == nil then | | if type(k) == 'string' and knownargs[k] == nil then |
| Line 79: |
Line 128: |
| | table.insert(values, clean(k)) | | table.insert(values, clean(k)) |
| | end | | end |
| − | elseif type(k) == 'number' and | + | elseif type(k) == 'number' and knownargs[tostring(k)] == nil then |
| − | knownargs[tostring(k)] == nil and
| + | local knownflag = false |
| − | ( showblankpos or isnotempty(v) ) | + | for _, regexp in ipairs(regexps) do |
| − | then
| + | if mw.ustring.match(tostring(k), regexp) then |
| − | table.insert(values, k .. ' = ' .. clean(v))
| + | knownflag = true |
| | + | break |
| | + | end |
| | + | end |
| | + | if not knownflag and ( showblankpos or isnotempty(v) ) then |
| | + | table.insert(values, k .. ' = ' .. clean(v)) |
| | + | end |
| | end | | end |
| | end | | end |
| | | | |
| | -- add results to the output tables | | -- add results to the output tables |
| | + | local res = {} |
| | if #values > 0 then | | if #values > 0 then |
| | + | local unknown_text = args['unknown'] or 'Found _VALUE_, ' |
| | + | |
| | if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then | | if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then |
| − | unknown = preview | + | local preview_text = args['preview'] |
| | + | if isnotempty(preview_text) then |
| | + | preview_text = require('Module:If preview')._warning({preview_text}) |
| | + | elseif preview_text == nil then |
| | + | preview_text = unknown_text |
| | + | end |
| | + | unknown_text = preview_text |
| | end | | end |
| | for _, v in pairs(values) do | | for _, v in pairs(values) do |
| − | if v == '' then | + | -- Fix odd bug for | = which gets stripped to the empty string and |
| − | -- Fix odd bug for | = which gets stripped to the empty string and
| + | -- breaks category links |
| − | -- breaks category links
| + | if v == '' then v = ' ' end |
| − | v = ' '
| + | |
| − | end
| |
| | -- avoid error with v = 'example%2' ("invalid capture index") | | -- avoid error with v = 'example%2' ("invalid capture index") |
| − | local r = unknown:gsub('_VALUE_', {_VALUE_ = v}) | + | local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) |
| | table.insert(res, r) | | table.insert(res, r) |
| | end | | end |