మాడ్యూల్:Unbulleted list
స్వరూపం
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This module outputs an unbulleted list. It has two functions: unbulleted
, for a normal unbulleted list, and hlist
, for a horizontal list using the hlist
class (see WP:HLIST). It supersedes the templates {{unbulleted list}} and {{hlist}}.
Usage
[మార్చు]Unbulleted list
[మార్చు]- Quick usage
{{#invoke:unbulleted list|unbulleted|first item|second item|third item|...}}
- All parameters
{{#invoke:unbulleted list|unbulleted |first item|second item|third item|... |class = class |style = style |ul_style = style for ul tag |li_style = style for all li tags |li_style1 = style for first li tag |li_style2 = style for second li tag |... }}
- Arguments passed from parent template
{{#invoke:unbulleted list|unbulleted}}
Horizontal list
[మార్చు]- Quick usage
{{#invoke:unbulleted list|hlist|first item|second item|third item|...}}
- All parameters
{{#invoke:unbulleted list|hlist |first item|second item|third item|... |class = class |style = style |ul_style = style for ul tag |li_style = style for all li tags |li_style1 = style for first li tag |li_style2 = style for second li tag |... |indent = indent for the list }}
- Arguments passed from parent template
{{#invoke:unbulleted list|hlist}}
Parameters
[మార్చు]- Positional parameters (
1
,2
,3
...) - these are the list items. If no list items are present, the module will output nothing. class
- a custom class for the<div>...</div>
tags surrounding the list, e.g.plainlinks
.style
- a custom css style for the<div>...</div>
tags surrounding the list, e.g.font-size: 90%;
.ul_style
- a custom css style for the<ul>...</ul>
tags around the list. The format is the same as for the|style=
parameter.li_style
- a custom css style for all of the list items (the<li>...</li>
tags). The format is the same as for the|style=
parameter.li_style1
,li_style2
,li_style3
... - custom css styles for each of the list items. The format is the same as for the|style=
parameter.indent
- for horizontal lists only, this parameter indents the list. The value must be a number, e.g.2
. The indent is calculated in em, and is 1.6 times the value specified. If no indent is specified, the default is zero.
Examples
[మార్చు]- Unbulleted lists
Code | Result |
---|---|
{{#invoke:unbulleted list|unbulleted|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}}
|
|
{{#invoke:unbulleted list|unbulleted|Winner|Runner-up|Third place|li_style=color:blue;}}
|
|
{{#invoke:unbulleted list|unbulleted|Winner|Runner-up|Third place|li_style1=background-color:yellow;|li_style2=background-color:silver;}}
|
|
- Horizontal lists
Code | Result |
---|---|
{{#invoke:unbulleted list|hlist|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}}
|
|
{{#invoke:unbulleted list|hlist|Winner|Runner-up|Third place|li_style=color:blue;}}
|
|
{{#invoke:unbulleted list|hlist|Winner|Runner-up|Third place|li_style=color:blue;|indent=2}}
|
|
{{#invoke:unbulleted list|hlist|Winner|Runner-up|Third place|li_style1=background-color:yellow;|li_style2=background-color:silver;}}
|
|
-- This module implements {{unbulleted list}} and {{hlist}}.
local function getListItem( data, style, itemStyle )
if not data then
return nil
end
if style or itemStyle then
style = style or ''
itemStyle = itemStyle or ''
return mw.ustring.format(
'<li style="%s%s">%s</li>',
style, itemStyle, data
)
else
return mw.ustring.format(
'<li>%s</li>',
data
)
end
end
local function getArgNums( args )
-- Returns an array containing the keys of all positional arguments
-- that contain data (i.e. non-whitespace values).
local nums = {}
for k, v in pairs( args ) do
if type( k ) == 'number' and
k >= 1 and
math.floor( k ) == k and
mw.ustring.match( v, '%S' ) then
table.insert( nums, k )
end
end
table.sort( nums )
return nums
end
local function getClass( listType, class )
local classes = {}
if listType == 'hlist' then
table.insert( classes, 'hlist' )
end
table.insert( classes, 'plainlist' )
table.insert( classes, class )
local ret
if #classes == 0 then
return nil
end
return mw.ustring.format( ' class="%s"', table.concat( classes, ' ' ) )
end
local function getStyle( listType, indent, style )
local styles = {}
if listType == 'hlist' then
indent = indent and tonumber( indent )
indent = tostring( ( indent and indent * 1.6 ) or 0 )
table.insert( styles, 'margin-left: ' .. indent .. 'em;' )
end
table.insert( styles, style )
if #styles == 0 then
return nil
end
return mw.ustring.format( ' style="%s"', table.concat( styles, ' ' ) )
end
local function buildList( args, listType )
local listItems = {}
local argNums = getArgNums( args )
for i, num in ipairs( argNums ) do
local item = getListItem(
args[ num ],
args.li_style,
args[ 'li_style' .. tostring( num ) ]
)
table.insert( listItems, item )
end
if #listItems == 0 then
return ''
end
local class = getClass( listType, args.class ) or ''
local style = getStyle( listType, args.indent, args.style ) or ''
local ulStyle = ( args.ul_style and ( ' style="' .. args.ul_style .. '"' ) ) or ''
return mw.ustring.format(
'<div%s%s><ul%s>%s</ul></div>',
class, style, ulStyle, table.concat( listItems )
)
end
local function makeWrapper( listType )
return function( frame )
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
origArgs = frame
end
local args = {}
for k, v in pairs( origArgs ) do
if type( k ) == 'number' or v ~= '' then
args[ k ] = v
end
end
return buildList( args, listType )
end
end
return {
hlist = makeWrapper( 'hlist' ),
unbulleted = makeWrapper( 'unbulleted' )
}