<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ALegislationuk%2FMw.html_extension</id>
	<title>Module:Legislationuk/Mw.html extension - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ALegislationuk%2FMw.html_extension"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Legislationuk/Mw.html_extension&amp;action=history"/>
	<updated>2026-06-14T09:30:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Legislationuk/Mw.html_extension&amp;diff=472455&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Legislationuk/Mw.html_extension&amp;diff=472455&amp;oldid=prev"/>
		<updated>2021-07-15T23:32:07Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local checkType = require( 'libraryUtil' ).checkType&lt;br /&gt;
local mwHtml = getmetatable( mw.html.create() ).__index  -- Trick to get acces to the mw.html class&lt;br /&gt;
local stack = {}  -- Used to keep track of nested IF-END tags&lt;br /&gt;
local noOp = {}  -- This object is returned by IF(false) tag&lt;br /&gt;
&lt;br /&gt;
function mwHtml:addClassIf( cond, class )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:addClass( class )&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:tagIf( cond, tagname )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:tag( tagname )&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:wikitextIf( cond, text )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:wikitext( text )&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:doneIf( cond )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:done()&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:attrIf( cond, name, value )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:attr( name, value )&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:cssIf( cond, name, value )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:css( name, value )&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:na()&lt;br /&gt;
    return self:tag( 'td' )&lt;br /&gt;
            :attr( 'data-sort-value', 0 )&lt;br /&gt;
            :attr( 'class', 'table-na' )&lt;br /&gt;
            :wikitext( '&amp;lt;small&amp;gt;N/A&amp;lt;/small&amp;gt;' )&lt;br /&gt;
        :done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:naIf( cond )&lt;br /&gt;
    if cond then&lt;br /&gt;
        return self:na()&lt;br /&gt;
    else&lt;br /&gt;
        return self&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addValues( self, settings )&lt;br /&gt;
    -- wikitext and addClass are no-ops when their argument is nil&lt;br /&gt;
    self:wikitext( settings[1] or settings.wikitext )&lt;br /&gt;
    self:addClass( settings.class or settings.addClass )&lt;br /&gt;
&lt;br /&gt;
    if settings.attr then&lt;br /&gt;
        if settings.attr[1] and settings.attr[2] then&lt;br /&gt;
            self:attr( settings.attr[1], settings.attr[2] )&lt;br /&gt;
        else&lt;br /&gt;
            self:attr( settings.attr )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if settings.css then&lt;br /&gt;
        if settings.css[1] and settings.css[2] then&lt;br /&gt;
            self:css( settings.css[1], settings.css[2] )&lt;br /&gt;
        else&lt;br /&gt;
            self:css( settings.css )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if settings.cssText then&lt;br /&gt;
        self:cssText( settings.cssText )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:tr( settings )&lt;br /&gt;
    if self.tagName == 'tr' then&lt;br /&gt;
        self = self:done():tag( 'tr' )&lt;br /&gt;
    elseif self.tagName == 'th' or self.tagName == 'td' then&lt;br /&gt;
        self = self:done():done():tag( 'tr' )&lt;br /&gt;
    else&lt;br /&gt;
        self = self:tag( 'tr' )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if type( settings ) == 'table' then&lt;br /&gt;
        addValues( self, settings )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:th( settings )&lt;br /&gt;
    if self.tagName == 'th' or self.tagName == 'td' then&lt;br /&gt;
        self = self:done():tag( 'th' )&lt;br /&gt;
    else&lt;br /&gt;
        self = self:tag( 'th' )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if type( settings ) == 'table' then&lt;br /&gt;
        addValues( self, settings )&lt;br /&gt;
    else&lt;br /&gt;
        self = self:wikitext( settings )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:td( settings )&lt;br /&gt;
    if self.tagName == 'th' or self.tagName == 'td' then&lt;br /&gt;
        self = self:done():tag( 'td' )&lt;br /&gt;
    else&lt;br /&gt;
        self = self:tag( 'td' )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if type( settings ) == 'table' then&lt;br /&gt;
        addValues( self, settings )&lt;br /&gt;
    else&lt;br /&gt;
        self = self:wikitext( settings )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:IF( cond )&lt;br /&gt;
    if cond then&lt;br /&gt;
        table.insert( stack, { obj=noOp, trueCaseCompleted=true } )&lt;br /&gt;
        return self&lt;br /&gt;
    else&lt;br /&gt;
        table.insert( stack, { obj=self, trueCaseCompleted=false } )&lt;br /&gt;
        return noOp&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:ELSEIF( cond )&lt;br /&gt;
    if #stack == 0 then error( 'Missing IF tag', 2 ) end&lt;br /&gt;
    local last = stack[#stack]&lt;br /&gt;
&lt;br /&gt;
    if cond and not last.trueCaseCompleted then&lt;br /&gt;
        last.trueCaseCompleted = true&lt;br /&gt;
        local res = last.obj&lt;br /&gt;
        last.obj = noOp&lt;br /&gt;
        return res&lt;br /&gt;
    else&lt;br /&gt;
        if self ~= noOp then&lt;br /&gt;
            last.obj = self&lt;br /&gt;
        end&lt;br /&gt;
        return noOp&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:ELSE()&lt;br /&gt;
    return self:ELSEIF( true )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:END()&lt;br /&gt;
    if #stack == 0 then error( 'Missing IF tag', 2 ) end&lt;br /&gt;
&lt;br /&gt;
    local res = table.remove( stack )  -- Pop element from the end&lt;br /&gt;
    if res.obj == noOp then&lt;br /&gt;
        return self&lt;br /&gt;
    else&lt;br /&gt;
        return res.obj&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mwHtml:exec( func, ... )&lt;br /&gt;
    checkType( 'exec', 1, func, 'function' )&lt;br /&gt;
    return func( self, ... )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.addFunction( func, name )&lt;br /&gt;
    checkType( 'addFunction', 1, func, 'function' )&lt;br /&gt;
    checkType( 'addFunction', 2, name, 'string' )&lt;br /&gt;
&lt;br /&gt;
    if mwHtml[name] then&lt;br /&gt;
        error( 'Function &amp;quot;' .. name .. '&amp;quot; already exists', 2 )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    mwHtml[name] = func&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
noOp.IF = mwHtml.IF&lt;br /&gt;
noOp.ELSEIF = mwHtml.ELSEIF&lt;br /&gt;
noOp.ELSE = mwHtml.ELSE&lt;br /&gt;
noOp.END = mwHtml.END&lt;br /&gt;
setmetatable( noOp, {&lt;br /&gt;
    __index = function( self )&lt;br /&gt;
        return self&lt;br /&gt;
    end,&lt;br /&gt;
    __call = function( self )&lt;br /&gt;
        return self&lt;br /&gt;
    end,&lt;br /&gt;
    __tostring = function()&lt;br /&gt;
        error( 'Attempting to convert no-op object into a string. Check for unbalanced IF-END tags', 2 )&lt;br /&gt;
    end,&lt;br /&gt;
    __concat = function()&lt;br /&gt;
        error( 'Attempting to concatenate a no-op object. Check for unbalanced IF-END tags', 2 )&lt;br /&gt;
    end&lt;br /&gt;
} )&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>