Module:Unbulleted list
-- This module implements and .
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(
'
', style, itemStyle, data ) else return mw.ustring.format( '
', 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',
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' )
}