Módulo:BibRules: mudanças entre as edições

De Wikincat
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 3: Linha 3:
function p.BibRules( frame )
function p.BibRules( frame )
-- Define o alvo
-- Define o alvo
local target = frame.args[1] or frame:getParent().args[1]
local target = frame:getParent().args[1]
if target == '' or target == nil then
if target == '' or target == nil then
target = mw.uri.decode( frame:callParserFunction( '#urlget', 'fullpagename' ) )
target = mw.uri.decode( frame:callParserFunction( '#urlget', 'fullpagename' ) )
Linha 64: Linha 64:
-- Campo 005
-- Campo 005
local queryResult = mw.smw.ask( '[[' .. target '' ']]|?Creation date#-F[l, d \d\e F \d\e Y]|headers=hide|mainlabel=-' )
local myResult = ""
if type( queryResult ) == "table" then
for num, row in pairs( queryResult ) do
myResult = myResult .. '* This is result #' .. num .. '\n'
for property, data in pairs( row ) do
local dataOutput = data
if type( data ) == 'table' then
dataOutput = mw.text.listToText( data, ', ', ' and ')
end
myResult = myResult .. '** ' .. property .. ': ' .. dataOutput .. '\n'
end
end
end

info = "* O registro foi criado em: " .. myResult
table.insert(infos, info)

end -- end if 245
end -- end if 245
return target, table.concat( infos, '\n' )
return table.concat( infos, '\n' )


end
end

Edição das 18h59min de 28 de julho de 2021

A documentação para este módulo pode ser criada em Módulo:BibRules/doc

local p = {}

function p.BibRules( frame )
    -- Define o alvo
    local target = frame:getParent().args[1]
    if target == '' or target == nil then
        target = mw.uri.decode( frame:callParserFunction( '#urlget', 'fullpagename' ) )
    end
    if target == '' or target == nil then
        target = mw.title.getCurrentTitle().prefixedText
    end
    if not mw.smw then
      return "mw.smw module not found"
    end
    local test, info
    local infos = {}
    if frame:expandTemplate{ title = 'Exist', args = { '245' } } ~= '' then
      -- Record status
      test = frame:expandTemplate{ title = 'Field data string', args = { '000', '5', '1', property = 'Leader' } } or false
      if test == 'n' then
        info = "* Segundo o Líder, este é um registro '''novo''' (não um alterado ou revisado, expandido, excluído, etc.)."
        table.insert(infos, info)
      elseif test == 'c' then
        info = "* Segundo o Líder, este é um registro '''alterado ou revisado''' (não um novo, expandido, excluído, etc.)."
        table.insert(infos, info)
      elseif test == 'a' or test == 'd' or test == 'p' then
        info = "* Segundo o Líder, este é um registro '''expandido''' ou '''excluído''' (não novo)."
        table.insert(infos, info)
      end
      -- Type of record
      test = frame:expandTemplate{ title = 'Field data string', args = { '000', '6', '1', property = 'Leader' } } or false
      if test == 'a' then
        info = "* Segundo o Líder, este registro descreve um '''material textual'''."
        table.insert(infos, info)
      end
      -- Bibliographic level
      test = frame:expandTemplate{ title = 'Field data string', args = { '000', '7', '1', property = 'Leader' } } or false
      if test == 'm' then
        info = "* Segundo o Líder, este registro descreve um '''item monográfico''' (não parte de um item, não um item seriado, não uma coleção, etc.)."
        table.insert(infos, info)
      end
      -- Encoding level
      test = frame:expandTemplate{ title = 'Field data string', args = { '000', '17', '1', property = 'Leader' } } or false
      if test == '1' then
        info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (mas o material não foi examinado)."
        table.insert(infos, info)
      else
        info = "* Segundo o Líder, este registro tem um nível '''completo''' de catalogação (a descrição foi realizada com o material em mãos)."
        table.insert(infos, info)
      end
      -- Descriptive cataloging form
      test = frame:expandTemplate{ title = 'Field data string', args = { '000', '18', '1', property = 'Leader' } } or false
      if test == 'a' then
        info = "* Segundo o Líder, este registro possui uma catalogação '''compatível com as regras do AACR 2'''."
        table.insert(infos, info)
      else
        info = "* Segundo o Líder, este registro possui uma catalogação '''não compatível com as regras da ISBD'''."
        table.insert(infos, info)
      end
      -- Explica a sintaxe "(Biblioteca)NúmeroDeControle"
      local f001 = frame:expandTemplate{ title = 'Field data string', args = { '001', '0', '', property = 'Control field data' } }
      info = '* Internamente, este registro é identificado pelo código "' .. f001 .. '"; para sistemas externos, o código é "(' .. frame:expandTemplate{ title = 'Field data string', args = { '003', '0', '', property = 'Control field data' } } .. ')' .. f001 .. '".'
      table.insert(infos, info)
      -- Campo 005
      
      local queryResult = mw.smw.ask( '[[' .. target '' ']]|?Creation date#-F[l, d \d\e F \d\e Y]|headers=hide|mainlabel=-' )
      local myResult = ""
      if type( queryResult ) == "table" then
          for num, row in pairs( queryResult ) do
              myResult = myResult .. '* This is result #' .. num .. '\n'
              for property, data in pairs( row ) do
                  local dataOutput = data
                  if type( data ) == 'table' then
                      dataOutput = mw.text.listToText( data, ', ', ' and ')
                  end
                  myResult = myResult .. '** ' .. property .. ': ' .. dataOutput .. '\n'
              end
          end
      end

      info = "* O registro foi criado em: " .. myResult
      table.insert(infos, info)

    end -- end if 245
    return table.concat( infos, '\n' )

end

return p