collapsible List

Documentation for this module may be created at Module:Collapsible list/doc

-- This module implements {{collapsible list}}.  local p = {}  local function gettitlestyletracking( ts ) if not ts then return '' end ts = mw.ustring.gsub(mw.ustring.lower(ts), '%s', '') local tsvals = mw.text.split(ts, ';') table.sort(tsvals) local skey = table.concat(tsvals,';') skey = mw.ustring.gsub(skey, '^;', '') skey = mw.text.encode(mw.text.encode(skey),'%c%[%]=') if (mw.ustring.match(';' .. ts, ';background:') or mw.ustring.match(';' .. ts, ';background%-color:'))  and mw.ustring.match(';' .. ts, ';text%-align:') then  return '[[Category:Pages using collapsible list with both background and text-align in titlestyle|' .. skey .. ' ]]' end return '[[Category:Pages using collapsible list without both background and text-align in titlestyle|' .. skey .. ' ]]' end  local function getListItem( data )     if not type( data ) == 'string' then         return ''     end     return mw.ustring.format( '
  • %s
  • '
    , data ) end -- Returns an array containing the keys of all positional arguments -- that contain data (i.e. non-whitespace values). local function getArgNums( args ) local nums = {} for k, v in pairs( args ) do if type( k ) == 'number' and k >= 1 and math.floor( k ) == k and type( v ) == 'string' and mw.ustring.match( v, '%S' ) then table.insert( nums, k ) end end table.sort( nums ) return nums end -- Formats a list of classes, styles or other attributes. local function formatAttributes( attrType, ... ) local attributes = { ... } local nums = getArgNums( attributes ) local t = {} for i, num in ipairs( nums ) do table.insert( t, attributes[ num ] ) end if #t == 0 then return '' -- Return the blank string so concatenation will work. end return mw.ustring.format( ' %s="%s"', attrType, table.concat( t, ' ' ) ) end local function buildList( args ) -- Get the list items. local listItems = {} local argNums = getArgNums( args ) for i, num in ipairs( argNums ) do table.insert( listItems, getListItem( args[ num ] ) ) end if #listItems == 0 then return '' end listItems = table.concat( listItems ) -- hack around mw-collapsible show/hide jumpiness by looking for text-alignment -- by setting a margin if centered local textAlignmentCentered = 'text%-align%s*:%s*center' local centeredTitle = (args.title_style and args.title_style:lower():match(textAlignmentCentered) or args.titlestyle and args.titlestyle:lower():match(textAlignmentCentered)) local centeredTitleSpacing if centeredTitle then centeredTitleSpacing = 'margin: 0 4em' else centeredTitleSpacing = '' end -- Get class, style and title data. local collapsibleContainerClass = formatAttributes( 'class', 'mw-collapsible', not args.expand and 'mw-collapsed' ) local collapsibleContainerStyle = formatAttributes( 'style', 'text-align: center; font-size: 95%;', args.frame_style, args.framestyle ) local collapsibleTitleStyle = formatAttributes( 'style', 'line-height: 1.6em; font-weight: bold; font-size: 100%; text-align: left;', args.title_style, args.titlestyle ) local jumpyTitleStyle = formatAttributes( 'style', centeredTitleSpacing ) local title = args.title or 'List' local ulclass = formatAttributes( 'class', 'mw-collapsible-content', args.hlist and 'hlist' ) local ulstyle = formatAttributes( 'style', 'font-size: 105%; margin-top: 0; margin-bottom: 0; line-height: inherit; text-align: left;', not args.bullets and 'list-style: none none; margin-left: 0;', args.list_style, args.liststyle ) -- Build the list. return mw.ustring.format( '\n%s
    \n%s\n
    ', collapsibleContainerClass, collapsibleContainerStyle, collapsibleTitleStyle, jumpyTitleStyle, title, ulclass, ulstyle, listItems ) .. gettitlestyletracking(args.title_style or args.titlestyle) end function p.main( 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 ) end return p

    Tags:

    🔥 Trending searches on Wiki Simple English:

    List of cities in the United KingdomZlatan IbrahimovićHistoryElvis PresleyGeneration ZIsaac NewtonLondonGreat LakesExabyteSamsung Galaxy S10NeymarApricot (color)Joseph StalinKray twinsList of current heads of state and governmentBrittany CartwrightCraig ConoverAbaloneSolar SystemList of U.S. state songsAirplaneLFictional characterChristine TremarcoANursultan Ruziboev1434Washington, D.C.Suleiman the MagnificentRishi SunakLogan WilliamsJay Shah2018 FIFA World CupList of sex positionsStates of GermanyHungaryList of districts of Uttar PradeshAlfred, Lord TennysonBrock LesnarSalamVarg Vikernes19 (number)12-hour clockKurt AngleList of cities in BelgiumTypes of busesArabic languagePriyanka ChopraBill FarmerList of U.S. states and territories by areaList of U.S. statesChico fruitOld TestamentEjaculation50 (number)Doctor Strange (movie)West Coast of the United StatesGarry NewmanList of youngest prime ministersList of counties in Georgia (U.S. state)Shaquille O'NealHexadecimalRussian languageHarmonium1337xBismillahir Rahmanir RaheemThe Pirate BayRepublican Party (United States)MinecraftEnglish languageTestButterflyRabindranath TagorePoliticsDEFCON12 (number)🡆 More