Modul:Navbox: Unterschied zwischen den Versionen
add hlist support, move related strings to cfg, add support for finding classes in any class parameter
(find vanishing TemplateStyles in args, find plainlist in class args) |
(add hlist support, move related strings to cfg, add support for finding classes in any class parameter) |
||
Zeile 70: | Zeile 70: | ||
end | end | ||
local function has_navbar() | local function has_navbar() | ||
return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off | return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off | ||
Zeile 262: | Zeile 261: | ||
end | end | ||
local function has_list_class(htmlclass) | local function has_list_class(htmlclass) | ||
local patterns = { | local patterns = { | ||
'^' .. htmlclass .. '$', | '^' .. htmlclass .. '$', | ||
Zeile 277: | Zeile 269: | ||
} | } | ||
for _ | for arg, _ in pairs(args) do | ||
for _, pattern in ipairs(patterns) do | if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then | ||
for _, pattern in ipairs(patterns) do | |||
if mw.ustring.find(args[arg] or '', pattern) then | |||
return true | |||
end | |||
end | end | ||
end | end | ||
Zeile 289: | Zeile 283: | ||
-- there are a lot of list classes in the wild, so we add their TemplateStyles | -- there are a lot of list classes in the wild, so we add their TemplateStyles | ||
local function add_list_styles() | local function add_list_styles() | ||
local frame = mw.getCurrentFrame() | |||
local function add_list_templatestyles(htmlclass, templatestyles) | local function add_list_templatestyles(htmlclass, templatestyles) | ||
if has_list_class(htmlclass) then | if has_list_class(htmlclass) then | ||
return frame:extensionTag{ | return frame:extensionTag{ | ||
Zeile 300: | Zeile 294: | ||
end | end | ||
local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles) | |||
-- | local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles) | ||
-- a second workaround for [[phab:T303378]] | |||
return plainlist_styles | -- when that issue is fixed, we can actually use has_navbar not to emit the | ||
-- tag here if we want | |||
if has_navbar() and hlist_styles == '' then | |||
hlist_styles = frame:extensionTag{ | |||
name = 'templatestyles', args = { src = cfg.hlist_templatestyles } | |||
} | |||
end | |||
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. | |||
-- this ordering is not a guarantee because most navboxes will emit only | |||
-- one of these classes [hlist_note] | |||
return hlist_styles .. plainlist_styles | |||
end | end | ||
Zeile 431: | Zeile 436: | ||
:addClass(cfg.class.navbox_styles) | :addClass(cfg.class.navbox_styles) | ||
:wikitext( | :wikitext( | ||
add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles' | |||
base_templatestyles .. | base_templatestyles .. | ||
templatestyles .. | templatestyles .. | ||
child_templatestyles .. | child_templatestyles .. | ||
table.concat(hiding_templatestyles) | table.concat(hiding_templatestyles) | ||
) | ) |