(Add notitle param) Tag: Mobile edit |
(autoformat) |
||
(20 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
-- {{Protocol version}} |
-- {{Protocol version}} |
||
− | function p.protocol_version( |
+ | function p.protocol_version(f) |
− | + | local args = f |
|
− | + | if f == mw.getCurrentFrame() then |
|
− | + | args = require("Module:ProcessArgs").merge(true) |
|
− | + | end |
|
− | + | local version = mw.text.trim(args[1] or "") |
|
+ | |||
− | |||
− | + | -- load the values from the submodule |
|
− | + | local version_data = mw.loadData("Module:Protocol version/Versions").versions[version] |
|
+ | |||
− | + | local category = "" |
|
− | + | local value |
|
⚫ | |||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | + | value = "[[Template:Protocol version#Unknown version|Unknown]]" |
|
⚫ | |||
− | end |
||
⚫ | |||
− | + | end |
|
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | end |
||
+ | else |
||
⚫ | |||
⚫ | |||
+ | category = "[[Category:Pending protocol version]]" |
||
+ | end |
||
+ | end |
||
⚫ | |||
end |
end |
||
-- {{Data version}} |
-- {{Data version}} |
||
− | function p.data_version( |
+ | function p.data_version(f) |
− | + | local args = f |
|
− | + | if f == mw.getCurrentFrame() then |
|
− | + | args = require("Module:ProcessArgs").merge(true) |
|
− | + | end |
|
− | + | local version = mw.text.trim(args[1] or "") |
|
+ | |||
− | |||
− | + | -- load the values from the submodule |
|
− | + | local version_data = mw.loadData("Module:Protocol version/Versions").versions[version] |
|
+ | |||
− | + | local category = "" |
|
− | + | local value |
|
⚫ | |||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
+ | if version_data then |
||
− | else |
||
+ | if version_data.data then |
||
⚫ | |||
+ | if version_data.data == "Unknown" then |
||
− | end |
||
⚫ | |||
⚫ | |||
+ | if not args.nocat and title.namespace == 0 and not title.isSubpage then |
||
⚫ | |||
+ | category = "[[Category:Unknown data version]]" |
||
⚫ | |||
+ | end |
||
⚫ | |||
+ | else |
||
⚫ | |||
⚫ | |||
− | end |
||
− | + | end |
|
+ | else |
||
⚫ | |||
+ | value = "N/A" |
||
+ | end |
||
+ | else |
||
+ | value = "[[Template:Data version#Unknown version|Pending]]" |
||
+ | if not args.nocat and title.namespace == 0 and not title.isSubpage then |
||
+ | category = "[[Category:Pending data version]]" |
||
+ | end |
||
+ | end |
||
⚫ | |||
end |
end |
||
-- Version table ({{Protocol version/table}}) |
-- Version table ({{Protocol version/table}}) |
||
− | function p.table( |
+ | function p.table(f) |
− | + | local args = f |
|
− | + | if f == mw.getCurrentFrame() then |
|
− | + | args = require("Module:ProcessArgs").merge(true) |
|
− | + | end |
|
− | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | + | if #args ~= 0 then |
|
− | + | include = nil |
|
⚫ | |||
⚫ | |||
+ | if name == group.name then |
||
⚫ | |||
⚫ | |||
end |
end |
||
end |
end |
||
Line 76: | Line 98: | ||
if include then |
if include then |
||
− | + | if not args.notitle then |
|
− | + | table.insert(html, "=== [[" .. group.link .. "|" .. group.name .. "]] ===\n") |
|
+ | end |
||
− | end |
||
− | + | if group.desc ~= nil then |
|
− | + | table.insert(html, group.desc .. "\n") |
|
− | + | end |
|
− | + | table.insert(html, "<table class='wikitable sortable jquery-tablesorter'>\n") |
|
− | + | table.insert(html, "<tr>\n") |
|
− | + | table.insert(html, "<th>Client version</th>\n") |
|
− | + | table.insert(html, "<th>[[Protocol version]]</th>\n") |
|
− | + | if group.has_data_versions then |
|
− | + | table.insert(html, "<th>[[Data version]]</th>\n") |
|
− | + | end |
|
− | + | table.insert(html, "</tr>\n") |
|
+ | |||
− | |||
− | + | local num_same_protocol |
|
− | + | local last_protocol = -1 |
|
− | + | local protocol_row |
|
+ | |||
− | |||
+ | local num_same_data |
||
⚫ | |||
+ | local last_data = -1 |
||
⚫ | |||
+ | local data_row |
||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | + | table.insert(html, "<td>[[" .. version.name .. "]]</td>\n") |
|
⚫ | |||
⚫ | |||
⚫ | |||
− | else |
||
− | + | num_same_protocol = 1 |
|
− | + | table.insert(html, '<td style="text-align:center">' .. version.protocol .. "</td>\n") |
|
⚫ | |||
− | end |
||
+ | else |
||
⚫ | |||
+ | num_same_protocol = num_same_protocol + 1 |
||
⚫ | |||
+ | html[protocol_row] = '<td style="text-align:center" rowspan="' |
||
− | table.insert( html, '<td>' .. version.data .. '</td>' ) |
||
⚫ | |||
− | else |
||
+ | .. '">' |
||
⚫ | |||
+ | .. version.protocol |
||
− | end |
||
+ | .. "</td>\n" |
||
− | end |
||
+ | end |
||
⚫ | |||
⚫ | |||
− | end |
||
⚫ | |||
− | |||
+ | if version.data ~= last_data then |
||
− | table.insert( html, '</table>\n' ) |
||
+ | last_data = version.data |
||
− | end |
||
+ | num_same_data = 1 |
||
⚫ | |||
⚫ | |||
+ | data_row = #html |
||
+ | else |
||
+ | num_same_data = num_same_data + 1 |
||
+ | html[data_row] = '<td style="text-align:center" rowspan="' |
||
+ | .. num_same_data |
||
+ | .. '">' |
||
+ | .. version.data |
||
+ | .. "</td>\n" |
||
+ | end |
||
+ | else |
||
⚫ | |||
+ | last_data = "N/A" |
||
+ | num_same_data = 1 |
||
+ | table.insert(html, '<td style="text-align:center">N/A</td>\n') |
||
+ | data_row = #html |
||
+ | else |
||
+ | num_same_data = num_same_data + 1 |
||
+ | html[data_row] = '<td style="text-align:center" rowspan="' |
||
+ | .. num_same_data |
||
+ | .. '">' |
||
+ | .. "N/A </td>\n" |
||
+ | end |
||
+ | end |
||
+ | end |
||
⚫ | |||
+ | end |
||
+ | |||
⚫ | |||
+ | end |
||
+ | end |
||
− | + | return table.concat(html) |
|
end |
end |
||
Latest revision as of 05:48, 6 May 2021
This module implements {{Protocol version}}
, {{Data version}}
, and {{Protocol version/Table}}
.
The actual data used by this module is stored in Module:Protocol version/Versions.
See also
{{Protocol version}}
{{Protocol version/Table}}
{{Data version}}
- Module:Protocol version
[view | edit | history | purge]The above documentation is transcluded from Module:Protocol version/doc.
local p = {}
-- {{Protocol version}}
function p.protocol_version(f)
local args = f
if f == mw.getCurrentFrame() then
args = require("Module:ProcessArgs").merge(true)
end
local version = mw.text.trim(args[1] or "")
-- load the values from the submodule
local version_data = mw.loadData("Module:Protocol version/Versions").versions[version]
local category = ""
local value
local title = mw.title.getCurrentTitle()
if version_data then
if version_data.protocol then
if version_data.protocol == "Unknown" then
value = "[[Template:Protocol version#Unknown version|Unknown]]"
if not args.nocat and title.namespace == 0 and not title.isSubpage then
category = "[[Category:Unknown protocol version]]"
end
else
value = version_data.protocol
end
else
value = "N/A"
end
else
value = "[[Template:Protocol version#Unknown version|Pending]]"
if not args.nocat and title.namespace == 0 and not title.isSubpage then
category = "[[Category:Pending protocol version]]"
end
end
return value .. category
end
-- {{Data version}}
function p.data_version(f)
local args = f
if f == mw.getCurrentFrame() then
args = require("Module:ProcessArgs").merge(true)
end
local version = mw.text.trim(args[1] or "")
-- load the values from the submodule
local version_data = mw.loadData("Module:Protocol version/Versions").versions[version]
local category = ""
local value
local title = mw.title.getCurrentTitle()
if version_data then
if version_data.data then
if version_data.data == "Unknown" then
value = "[[Template:Data version#Unknown version|Unknown]]"
if not args.nocat and title.namespace == 0 and not title.isSubpage then
category = "[[Category:Unknown data version]]"
end
else
value = version_data.data
end
else
value = "N/A"
end
else
value = "[[Template:Data version#Unknown version|Pending]]"
if not args.nocat and title.namespace == 0 and not title.isSubpage then
category = "[[Category:Pending data version]]"
end
end
return value .. category
end
-- Version table ({{Protocol version/table}})
function p.table(f)
local args = f
if f == mw.getCurrentFrame() then
args = require("Module:ProcessArgs").merge(true)
end
local html = {}
local groups = mw.loadData("Module:Protocol version/Versions").groups
for _, group in ipairs(groups) do
local include = true
if #args ~= 0 then
include = nil
for __, name in ipairs(args) do
if name == group.name then
include = true
break
end
end
end
if include then
if not args.notitle then
table.insert(html, "=== [[" .. group.link .. "|" .. group.name .. "]] ===\n")
end
if group.desc ~= nil then
table.insert(html, group.desc .. "\n")
end
table.insert(html, "<table class='wikitable sortable jquery-tablesorter'>\n")
table.insert(html, "<tr>\n")
table.insert(html, "<th>Client version</th>\n")
table.insert(html, "<th>[[Protocol version]]</th>\n")
if group.has_data_versions then
table.insert(html, "<th>[[Data version]]</th>\n")
end
table.insert(html, "</tr>\n")
local num_same_protocol
local last_protocol = -1
local protocol_row
local num_same_data
local last_data = -1
local data_row
for __, version in ipairs(group.values) do
table.insert(html, "<tr>")
table.insert(html, "<td>[[" .. version.name .. "]]</td>\n")
if version.protocol ~= last_protocol or version.force_split_protocol then
last_protocol = version.protocol
num_same_protocol = 1
table.insert(html, '<td style="text-align:center">' .. version.protocol .. "</td>\n")
protocol_row = #html
else
num_same_protocol = num_same_protocol + 1
html[protocol_row] = '<td style="text-align:center" rowspan="'
.. num_same_protocol
.. '">'
.. version.protocol
.. "</td>\n"
end
if group.has_data_versions then
if version.data then
if version.data ~= last_data then
last_data = version.data
num_same_data = 1
table.insert(html, '<td style="text-align:center">' .. version.data .. "</td>\n")
data_row = #html
else
num_same_data = num_same_data + 1
html[data_row] = '<td style="text-align:center" rowspan="'
.. num_same_data
.. '">'
.. version.data
.. "</td>\n"
end
else
if last_data ~= "N/A" then
last_data = "N/A"
num_same_data = 1
table.insert(html, '<td style="text-align:center">N/A</td>\n')
data_row = #html
else
num_same_data = num_same_data + 1
html[data_row] = '<td style="text-align:center" rowspan="'
.. num_same_data
.. '">'
.. "N/A </td>\n"
end
end
end
table.insert(html, "</tr>\n")
end
table.insert(html, "</table>\n")
end
end
return table.concat(html)
end
return p