「模板:NoteTA」修訂間的差異
(已建立頁面,內容為 "{{#invoke:NoteTA|main}}<noinclude> {{模板文档}} <!-- 請在將分類與跨語言連結增加在 /doc 子頁面 --> </noinclude>") |
|||
| 行 1: | 行 1: | ||
| − | {{ | + | 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 = mw.loadData( '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 ) ) | ||
| + | if args.G31 ~= nil then | ||
| + | code = code .. '[[Category:NoteTA模板参数使用数量超过限制的页面|G]]' | ||
| + | end | ||
| + | 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 ) ) | ||
| + | if args[31] ~= nil then | ||
| + | code = code .. '[[Category:NoteTA模板参数使用数量超过限制的页面|L]]' | ||
| + | end | ||
| + | end | ||
| + | return code | ||
| + | end | ||
| + | |||
| + | function z.main( frame ) | ||
| + | local args | ||
| + | if frame == mw.getCurrentFrame() then | ||
| + | -- Being called from {{noteTA}} | ||
| + | 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 = '[[File:Zh conversion icon m.svg|35px|本页使用了标题或全文手工转换|link=]]', | ||
| + | args = { name = string.format( 'noteTA-%x', hash ) }, | ||
| + | } .. tostring( mw.html.create( 'div' ) | ||
| + | :attr( 'id', string.format( 'noteTA-%x', hash ) ) | ||
| + | :attr( 'class', 'noteTA' ) | ||
| + | :wikitext( code ) ) | ||
| + | if mw.title.getCurrentTitle():inNamespace( 'Template' ) then | ||
| + | code = code .. '[[Category:放置于模板的noteTA]]' | ||
| + | end | ||
| + | end | ||
| + | return code | ||
| + | end | ||
| + | |||
| + | return z | ||
於 2021年8月15日 (日) 01:31 的修訂
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 = mw.loadData( '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 ) ) if args.G31 ~= nil then code = code .. end 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 ) ) if args[31] ~= nil then code = code .. end end return code end
function z.main( frame ) local args if frame == mw.getCurrentFrame() then -- Being called from 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 = mw.loadData( '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 ) ) if args.G31 ~= nil then code = code .. end 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 ) ) if args[31] ~= nil then code = code .. end end return code end
function z.main( frame ) local args if frame == mw.getCurrentFrame() then -- Being called from 偵測到模板迴圈:模板:NoteTA 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 ) ) if mw.title.getCurrentTitle():inNamespace( 'Template' ) then code = code .. end end return code end
return z 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 ) ) if mw.title.getCurrentTitle():inNamespace( 'Template' ) then code = code .. end end return code end
return z