มอดูล:WrapIndexAttribute
เอกสารการใช้งานสำหรับมอดูลนี้อาจสร้างขึ้นที่ มอดูล:WrapIndexAttribute/doc
p = {}
--[=[
Use getContent() as suggested by User:Tpt in,
https://www.mediawiki.org/wiki/User_talk:Tpt#Proofread_Page_Index_attributes
Note: result from getContent() is generated by,
https://github.com/wikimedia/mediawiki-extensions-ProofreadPage/blob/e7101acc5a5b7e3ba2a3705bc29226a0d480fb9f/includes/Index/IndexContentHandler.php#L111
Result of mw.title.makeTitle('Index', 'พระราชบัญญัติจราจรทางบก พ.ศ. ๒๕๒๒.pdf'):getContent() is as follow,
{{:MediaWiki:Proofreadpage_index_template
|ประเภท=วารสาร
|ชื่อ=[[{{เลขอารบิก|{{basefilename}}}}]]
|ภาษา=th
|เล่ม=ราชกิจจานุเบกษา, เล่ม 96, ตอน 8, ฉบับพิเศษ หน้า 1–59, 29 มกราคม 2522
|ผู้สร้างสรรค์={{ลสย|สภานิติบัญญัติแห่งชาติ (พ.ศ. 2520)}}; {{ลผส|พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช}}; {{ลผส|เกรียงศักดิ์ ชมนันทน์}}
|ผู้แปล=
|บรรณาธิการ=
|ผู้วาดภาพประกอบ=
|สถานศึกษา=
|ผู้เผยแพร่={{ลสย|สำนักเลขาธิการคณะรัฐมนตรี}}
|สถานที่=กรุงเทพฯ{{ดัชนีที่ผสานแล้ว|yes}}
|ปี=2522
|รหัส=
|ISBN=
|OCLC=
|LCCN=
|BNF_ARK=
|ARC=
|ที่มา=pdf
|ภาพ=1
|ความคืบหน้า=C
|หน้า=<pagelist
1 = 1
1to9999 = thai
/>
|จำนวน=
|หมายเหตุ=
|Width=
|Css=
|Header={{หรก|5|น={{{pagenum}}}|ล=๙๖|ต=๘|ว=๒๙ มกราคม ๒๕๒๒}}
|Footer=
}}
--]=]
-- This get called for every {{#invoke:...}} invocation, as the module's p object is not cached.
--local content = mw.title.makeTitle('Index', mw.title.getCurrentTitle().baseText):getContent()
function p.new()
local self = {
content = mw.title.makeTitle('Index', mw.title.getCurrentTitle().baseText):getContent()
}
function self:preprocess0(frame, v)
-- need to use frame:getParent(), as p.arg2() below not work
return frame:getParent():preprocess(
-- not use string.gsub(s, p, '%'), as it will convert '%' to '\000'
mw.ustring.gsub(self.content, '^{{:MediaWiki:Proofreadpage_index_template(.*)\n}}.*$', v, 1)
)
end
function self:preprocess(frame, v)
---- need to use frame:getParent(), as p.arg2() below not work
--return frame:getParent():preprocess(
-- self.content:gsub('^{{:MediaWiki:Proofreadpage_index_template\n', '{{'..v..'\n', 1)
--)
return self:preprocess0(frame, '{{'..v:gsub('%%', '%%%%')..'%1\n}}')
end
return self
end
-- Usage: {{#invoke:WrapIndexAttribute|byTemplate|template name 1|template name 2|...}}
function p.byTemplate(frame)
local r = {}; local c = p.new()
for i, v in ipairs(frame.args) do
r[i] = c:preprocess(frame, mw.text.nowiki(v))
end
return table.concat(r)
end
-- Usage: {{#invoke:WrapIndexAttribute|byWikitextAndTemplate|wikitext 1|template name 1|wikitext 2|template name 2|...}}
function p.byWikitextAndTemplate(frame)
local r = {}; local c = p.new()
do local func, static, var = ipairs(frame.args) while true do
local i, v = func(static, var)
var = i; if var == nil then break end
r[i] = v
local i, v = func(static, var)
var = i; if var == nil then break end
r[i] = c:preprocess(frame, mw.text.nowiki(v))
end end
return table.concat(r)
end
-- Usage: {{#invoke:WrapIndexAttribute|byInvoke|module name 1|module func 1|module name 2|module func 2|...}}
function p.byInvoke(frame)
local r = {}; local c = p.new()
do local func, static, var = ipairs(frame.args) while true do
local i, v = func(static, var)
var = i; if var == nil then break end
local i, v2 = func(static, var)
var = i; if var == nil then break end
table.insert(r, c:preprocess(frame, '#invoke:'..mw.text.nowiki(v)..'|'..mw.text.nowiki(v2)))
end end
return table.concat(r)
end
-- Usage: {{#invoke:WrapIndexAttribute|byWikitextAndInvoke|wikitext 1|module name 1|module func 1|wikitext 2|module name 2|module func 2|...}}
function p.byWikitextAndInvoke(frame)
local r = {}; local c = p.new()
do local func, static, var = ipairs(frame.args) while true do
local i, v = func(static, var)
var = i; if var == nil then break end
table.insert(r, v)
local i, v = func(static, var)
var = i; if var == nil then break end
local i, v2 = func(static, var)
var = i; if var == nil then break end
table.insert(r, c:preprocess(frame, '#invoke:'..mw.text.nowiki(v)..'|'..mw.text.nowiki(v2)))
end end
return table.concat(r)
end
-- Usage: {{#invoke:WrapIndexAttribute|byPattern|... %1 ... %1 ... ...}}
-- Example: {{#invoke:WrapIndexAttribute|byPattern|... {{((}}t1%1{{))}} {{((}}t2%1{{))}} ... {{((}}#invoke:m1{{!}}f1%1{{))}} ... ...}}
function p.byPattern(frame)
return p.new():preprocess0(frame, frame.args[1])
end
--[[
-- This is a helper function. It is used by Template:INDEX as follow,
-- {{#invoke:WrapIndexAttribute|byInvoke|WrapIndexAttribute|arg}}
--]]
function p.arg(frame)
--mw.logObject(frame.args)
--mw.logObject(frame:getParent().args)
--mw.logObject(frame:getParent():getParent())
--mw.logObject(frame:getParent():getParent().args)
return frame.args[frame:getParent().args[1]]
end
-- Not work, frame:getParent():getParent() always return nil
--function p.arg2(frame)
-- return frame.args[frame:getParent():getParent().args[1]]
--end
return p