Module:Newarticletext

From Coral Island Wiki
Jump to navigation Jump to search

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

local p = {}
function p.main(frame)
    local td_attr = {
        valign='top'
    }
    local td_css = {
        width='50%'
    }

    local title = frame:getParent():getTitle()
    local sections = mw.loadData('Module:Newarticletext/data')
    
    local output = {}
    -- For Each Section
    for i,section_data in ipairs(sections) do
        if section_data['header'] and section_data['sections'] then
            local evenTest
            local section = page_layout(section_data['header'])
            local row
            local column
            -- For Each Link Area
            for j,link_data in ipairs(section_data['sections']) do
                evenTest = j%2
                if evenTest==1 then
                    row = section:tag('tr')
                end
                column = row:tag('td')
                    :attr(td_attr):css(td_css)
                if (type(link_data['link']) == 'table') then
                    local ul = column:wikitext(link_data['text'] .. '<br/>'):tag('ul')
                        :addClass('pipe_delimit')
                        :css('font-size',link_data['link']['size'])
                    for k,sub_link in ipairs(link_data['link']) do
                        ul:tag('li')
                            :wikitext(preload_link(title,sub_link['link'],sub_link['text']))
                    end
                else
                    column:wikitext(preload_link(title,link_data['link'],tostring(link_data['text'])))
                end
            end
            if evenTest==1 then
                column:attr('colspan',2)
            end
            table.insert(output, tostring(section))
        end
    end

    return table.concat(output)
end
function preload_link(page,preload,display)
    return '[' .. tostring(
        mw.uri.fullUrl(page,{
            action='edit',
            preload=preload
        })
    ) .. ' ' .. display .. ']'
end
function page_layout(section_title)
    local table_attr = {
        class                 = 'wikitable mw-collapsible mw-collapsed plainlinks',
        ['data-expandtext']   = '+',
        ['data-collapsetext'] = '-'
    }
    local table_css = {
        width          = '100%',
        ['text-align'] = 'center'
    }

    return mw.html.create('table')
        :attr(table_attr)
        :css(table_css)
        :tag('tr'):tag('th')
            :attr('colspan',2)
            :wikitext(section_title)
            :allDone()
end
return p