Module:ListRefOfID

Revision as of 05:51, 2 February 2023 by Editor (talk | contribs) (Created page with "local getArgs = require('Module:Arguments').getArgs; local defArgs = require('Module:Arguments').defaultArgs; local listRefOfID = {}; function listRefOfID.func1( frame ) local args = defArgs(getArgs(frame), 1, ""); local arg = args[1]; local text = ""; function split(str, delim) local result = {} local pat = "(.-)" .. delim .. "()" local lastPos for part, pos in string.gfind(str, pat) do table.insert(result, part) lastPos = pos...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

local getArgs = require('Module:Arguments').getArgs;
local defArgs = require('Module:Arguments').defaultArgs;
local listRefOfID = {};

function listRefOfID.func1( frame )
  local args = defArgs(getArgs(frame), 1, "");
  local arg = args[1];

  local text = "";
  function split(str, delim)
   local result = {}
    local pat = "(.-)" .. delim .. "()"
    local lastPos
    for part, pos in string.gfind(str, pat) do
        table.insert(result, part)
        lastPos = pos
    end
    table.insert(result, string.sub(str, lastPos))
    return result
  end
  local bucket = {}
  for title,sp,id in arg:gmatch("&&([^&]+)&&([^&]+)&&([^\n]+)") do
    if (bucket[title] == nil) then
      local t = split(title, ",")
      bucket[title] = t[3] .. t[2]
    end
  end
  for k,v in pairs(bucket) do
    text = text .. "\n&-\n& " .. string.sub(v,0,4) .. " && " .. string.sub(v,5) .. " && [[{{#get:2|Reference}}:" .. k .."&" .. string.gsub(k, ",", ", ") .. "]]"
  end

  return frame:preprocess(text);
end

return listRefOfID;