Module:NoteTA

local z = {} local WikitextLC = require( 'Module:WikitextLC' )

function Tcode( args ) if args.T == nil or args.T == '' then return '' end local div = mw.html.create( 'div' ) :attr( 'class', 'noteTA-title' ) :attr( 'data-noteta-code', args.T ) :wikitext( WikitextLC.title( args.T ) ) if args.dt ~= nil and args.dt ~= '' then div:attr( 'data-noteta-desc', args.dt ) end return tostring( div ) end

function group( name, frame ) if name == nil or name == '' then return '' end local moduleTitle = mw.title.makeTitle( 'Module', 'CGroup/' .. name ) if moduleTitle and moduleTitle.exists then local data = require( 'Module:CGroup/' .. name ) local pieces = {} if data.content then for i, v in ipairs( data.content ) do				if v.type == 'item' and v.rule then table.insert( pieces, '-{H|' .. v.rule .. '}-' ) end end return tostring( mw.html.create( 'div' )				:attr( 'data-noteta-group-source', 'module' )				:attr( 'data-noteta-group', data.name or name )				:wikitext( table.concat( pieces ) ) ) end end local templateTitle = mw.title.makeTitle( 'Template', 'CGroup/' .. name ) if templateTitle and templateTitle.exists then return frame:expandTemplate{ title = templateTitle } end return tostring( mw.html.create( 'div' )			-- :attr( 'id', 'noteTA-group-' .. mw.uri.anchorEncode( name ) )			:attr( 'data-noteta-group-source', 'none' )			:attr( 'data-noteta-group', name ) ) end

function Gcode( args, frame ) local code = {} for i = 1, 30 do table.insert( code, group( args['G' .. i], frame ) ) end code = table.concat( code ) if code ~= '' then code = tostring( mw.html.create( 'div' )				:attr( 'class', 'noteTA-group' )				:wikitext( code ) ) end return code end

function local_( i, code, desc ) if code == nil or code == '' then return '' end local div = mw.html.create( 'div' ) -- :attr( 'id', 'noteTA-local-' .. i ) :attr( 'data-noteta-code', code ) :wikitext( WikitextLC.hidden( code ) ) if desc ~= nil and desc ~= '' then div:attr( 'data-noteta-desc', desc ) end return tostring( div ) end

function Lcode( args ) local code = {} for i = 1, 30 do table.insert( code, local_( i, args[i], args['d' .. i] ) ) end code = table.concat( code ) if code ~= '' then code = tostring( mw.html.create( 'div' )				:attr( 'class', 'noteTA-local' )				:wikitext( code ) ) end return code end

function z.main( frame ) local args if frame == mw.getCurrentFrame then -- Being called from args = frame:getParent.args else -- Being called from another module args = frame frame = mw.getCurrentFrame end local Tc = Tcode( args ) local Gc = Gcode( args, frame ) local Lc = Lcode( args ) local code = Tc .. Gc .. Lc	if code ~= '' then local hash = require( 'Module:Crc32lua' ).crc32( mw.dumpObject( args ) ) code = frame:extensionTag{ name = 'indicator', content = '', args = { name = string.format( 'noteTA-%x', hash ) }, } .. tostring( mw.html.create( 'div' )				:attr( 'id', string.format( 'noteTA-%x', hash ) )				:attr( 'class', 'noteTA' )				:wikitext( code ) ) end return code end

return z