Line 1: |
Line 1: |
| local _ = require('Module:Core') | | local _ = require('Module:Core') |
− | local Data = require('Module:Data') | + | -- local Data = require('Module:Data') |
− | local View = require('Module:View') | + | -- local View = require('Module:View') |
| + | |
| + | local p = {} |
| + | |
| + | p.cache = {} |
| | | |
| -- [[Category:Todo]]: | | -- [[Category:Todo]]: |
Line 15: |
Line 19: |
| |style="width:20%"|Rewards | | |style="width:20%"|Rewards |
| |style="width:0.5%"| | | |style="width:0.5%"| |
− | |style="width:30%"|Note<span style="float:right;margin-top:-2em">[[https://kancolle.fandom.com/wiki/Module:Data/Quest/${category}?action=edit Edit]]</span> | + | |style="width:30%"|Note<span class="plainlinks" style="float:right">[[https://en.kancollewiki.net/Module:Data/Quest/${category}?action=edit edit]]</span> |
| |-]=] | | |-]=] |
| | | |
Line 46: |
Line 50: |
| local result = {} | | local result = {} |
| for i, category in ipairs(args.explicit) do | | for i, category in ipairs(args.explicit) do |
− | local data = Data.load('Quest', category)
| + | if not p.cache[category] then |
| + | p.cache[category] = mw.loadData('Module:Data/Quest/' .. category) |
| + | end |
| + | local data = p.cache[category] |
| table.insert(result, _.format(table_header, { category = category })) | | table.insert(result, _.format(table_header, { category = category })) |
| for i, q in ipairs(data) do | | for i, q in ipairs(data) do |
Line 86: |
Line 93: |
| table.insert(result, table_footer) | | table.insert(result, table_footer) |
| end | | end |
| + | local s = _.join(result, '\n') |
| + | s = s:gsub("{{Audio|file=([^}]+)}}", '<span class="audio-button">[[Media:%1|Play]]</span>') |
| + | s = s:gsub("{{ShipLink|([^|^}]+)}}", function(e) return string.format('[[%s]]', e:gsub('/', ' ')) end) |
| + | s = s:gsub("{{ShipLink|([^|^}]+)|kai=x}}", function(e) return string.format('[[%s]] (Kai)', e:gsub('/', ' ')) end) |
| + | s = s:gsub("{{ShipLink|([^|^}]+)|kai=x|kai_ni=x}}", function(e) return string.format('[[%s]] (Kai, Kai Ni)', e:gsub('/', ' ')) end) |
| | | |
− | return frame:preprocess(_.join(result, '\n')) | + | s = s:gsub("{{ShipLink|[^|^}]+|text=([^|^}]+)|link_class=([^|^}]+)}}", function(text, class) return string.format('[[:Category:%s Class|%s]]', class, text) end) |
| + | s = s:gsub("{{ShipLink|[^|^}]+|[^|^}]+|text=([^|^}]+)|link_class=([^|^}]+)}}", function(text, class) return string.format('[[:Category:%s Class|%s]]', class, text) end) |
| + | s = s:gsub("{{ShipLink|[^|^}]+|[^|^}]+|[^|^}]+|text=([^|^}]+)|link_class=([^|^}]+)}}", function(text, class) return string.format('[[:Category:%s Class|%s]]', class, text) end) |
| + | |
| + | s = s:gsub("{{EquipmentLink|([^|^}]+)}}", "[[%1]]") |
| + | s = s:gsub("{{EquipmentLink|([^|^}]+)|text=true|image=30px}}", "[[%1]]") |
| + | s = s:gsub("{{EquipmentLink|([^|^}]+)|image=30px|text=true}}", "[[%1]]") |
| + | s = s:gsub("{{EquipmentLink|text=true|image=30px|([^|^}]+)}}", "[[%1]]") |
| + | s = s:gsub("{{ItemLink|text=true|image=30px|([^|^}]+)}}", "[[%1]]") |
| + | s = s:gsub("{{color|red|([^}]+)}}", '<span style="color:red">%1</span>') |
| + | return s |
| + | end |
| + | |
| + | p.render = function(frame) |
| + | return render(frame and _.getTemplateArgs(frame) or {}, frame) |
| end | | end |
| | | |
− | return View(render) | + | return p |