Module:NoteTA

来自Bejeweled Wiki
跳转到导航 跳转到搜索
Template-info.svg 模块文档

文档页面Module:NoteTA/doc尚未创建。点击链接以创建页面!


-- <nowiki>

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 = {}
  -- Auto Add CGroups (Common + NS)
  if not args['aac']
  then
    table.insert( code, group( 'Common', frame ) )
    table.insert( code, group( 'Proper noun', frame ) )
    -- ns:0
    if mw.title.getCurrentTitle():inNamespace( '' )
    then
    --  table.insert( code, group( 'Article', frame ) )
    -- ns:2
    elseif mw.title.getCurrentTitle():inNamespace( 'User' )
    then
    --  table.insert( code, group( 'User', frame ) )
    -- ns:4
    elseif mw.title.getCurrentTitle():inNamespace( 'Project' )
    then
    --  table.insert( code, group( 'Project', frame ) )
    -- ns:12
    elseif mw.title.getCurrentTitle():inNamespace( 'User_blog' )
    then
      table.insert( code, group( 'Blog', frame ) )
    end
  end
  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 ~= '' and not args['noindicator'] then
    local hash = code:len()
    code = tostring( mw.html.create( 'div' )
      :attr( 'id', 'mw-indicator-noteTA-' .. hash )
      :attr( 'class', 'mw-indicator' )
      :attr( 'dir', 'rtl' )
      :attr( 'style', 'text-align: right; display: block' ) )
    .. tostring( mw.html.create( 'div' )
        :attr( 'id', 'noteTA-' .. hash )
        :attr( 'class', 'noteTA' )
        :wikitext( code ) )
    if mw.title.getCurrentTitle():inNamespace( 'Template' ) then
      code = code .. ''
    end
  end
  return code
end

return z

-- </nowiki>

-- <noinclude>[[Category:模組]]</noinclude>