<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://homologacao2.wikifavelas.com.br/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMedbar</id>
	<title>Módulo:Medbar - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://homologacao2.wikifavelas.com.br/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMedbar"/>
	<link rel="alternate" type="text/html" href="https://homologacao2.wikifavelas.com.br/index.php?title=M%C3%B3dulo:Medbar&amp;action=history"/>
	<updated>2026-05-07T00:07:12Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://homologacao2.wikifavelas.com.br/index.php?title=M%C3%B3dulo:Medbar&amp;diff=15165&amp;oldid=prev</id>
		<title>Patrícia Ferreira: Criou página com &#039;require(&#039;Módulo:No globals&#039;)  local conf = require( &quot;Módulo:Medbar/conf&quot; )  local function isNilOrEmpty( thing )     if thing == nil or thing == &#039;&#039; then         return true...&#039;</title>
		<link rel="alternate" type="text/html" href="https://homologacao2.wikifavelas.com.br/index.php?title=M%C3%B3dulo:Medbar&amp;diff=15165&amp;oldid=prev"/>
		<updated>2022-04-26T14:10:03Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;require(&amp;#039;Módulo:No globals&amp;#039;)  local conf = require( &amp;quot;Módulo:Medbar/conf&amp;quot; )  local function isNilOrEmpty( thing )     if thing == nil or thing == &amp;#039;&amp;#039; then         return true...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Módulo:No globals&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local conf = require( &amp;quot;Módulo:Medbar/conf&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
local function isNilOrEmpty( thing )&lt;br /&gt;
    if thing == nil or thing == &amp;#039;&amp;#039; then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitLccn( id )&lt;br /&gt;
    if id:match( &amp;#039;^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$&amp;#039; ) then&lt;br /&gt;
        id = id:gsub( &amp;#039;^(%l+)(%d+)(%d%d%d%d%d%d)$&amp;#039;, &amp;#039;%1/%2/%3&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
    if id:match( &amp;#039;^%l%l?%l?/%d%d%d?%d?/%d+$&amp;#039; ) then&lt;br /&gt;
         return mw.text.split( id, &amp;#039;/&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getIdFromWikidata( item, property )&lt;br /&gt;
    local id = nil&lt;br /&gt;
    if item.claims[property] == nil then&lt;br /&gt;
        return id&lt;br /&gt;
    end&lt;br /&gt;
    for _, statement in pairs( item.claims[property] ) do&lt;br /&gt;
        if statement.mainsnak.datavalue then&lt;br /&gt;
            id = statement.mainsnak.datavalue.value&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLink( property, val, mask )&lt;br /&gt;
    local link, returnVal = &amp;#039;&amp;#039;, {}&lt;br /&gt;
    &lt;br /&gt;
    returnVal.isError = false&lt;br /&gt;
    &lt;br /&gt;
    if mw.ustring.find( val, &amp;#039;//&amp;#039; ) then&lt;br /&gt;
        link = val&lt;br /&gt;
    else&lt;br /&gt;
        if type(property) == &amp;#039;number&amp;#039; and property &amp;gt; 0 then&lt;br /&gt;
            local entityObject = mw.wikibase.getEntity(&amp;#039;P&amp;#039;..property)&lt;br /&gt;
            local dataType&lt;br /&gt;
            &lt;br /&gt;
            if entityObject then dataType = entityObject.datatype&lt;br /&gt;
            else returnVal.isError = true end&lt;br /&gt;
            &lt;br /&gt;
            if dataType == &amp;#039;external-id&amp;#039; then&lt;br /&gt;
                local formatterURL = nil&lt;br /&gt;
                if property == 3746 then --Wildflowers of Israel ID&amp;#039;s 2nd formatterURL is in English&lt;br /&gt;
                    formatterURL = entityObject:getBestStatements(&amp;#039;P1630&amp;#039;)[2]&lt;br /&gt;
                end&lt;br /&gt;
                if formatterURL == nil then formatterURL = entityObject:getBestStatements(&amp;#039;P1630&amp;#039;)[1] end&lt;br /&gt;
                if formatterURL then&lt;br /&gt;
                    if formatterURL.mainsnak.datavalue and formatterURL.mainsnak.datavalue.value then --nil check for ABA&lt;br /&gt;
                        link = formatterURL.mainsnak.datavalue.value&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            elseif dataType == &amp;#039;url&amp;#039; then&lt;br /&gt;
                local subjectItem = entityObject:getBestStatements(&amp;#039;P1629&amp;#039;)[1]&lt;br /&gt;
                if subjectItem then&lt;br /&gt;
                    local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements(&amp;#039;P856&amp;#039;)[1]&lt;br /&gt;
                    if officialWebsite then    link = officialWebsite.mainsnak.datavalue.value end&lt;br /&gt;
                end&lt;br /&gt;
            elseif dataType == &amp;#039;string&amp;#039; then&lt;br /&gt;
                local formatterURL = entityObject:getBestStatements(&amp;#039;P1630&amp;#039;)[1]&lt;br /&gt;
                if formatterURL then&lt;br /&gt;
                    link = formatterURL.mainsnak.datavalue.value&lt;br /&gt;
                else&lt;br /&gt;
                    local subjectItem = entityObject:getBestStatements(&amp;#039;P1629&amp;#039;)[1]&lt;br /&gt;
                    if subjectItem then&lt;br /&gt;
                        local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements(&amp;#039;P856&amp;#039;)[1]&lt;br /&gt;
                        if officialWebsite then    link = officialWebsite.mainsnak.datavalue.value end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                returnVal.isError = true&lt;br /&gt;
            end&lt;br /&gt;
        elseif type(property) == &amp;#039;string&amp;#039; then&lt;br /&gt;
            link = property&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        local valurl = val&lt;br /&gt;
        valurl = mw.ustring.gsub(valurl,&amp;#039;%%&amp;#039;,&amp;#039;%%%%&amp;#039;)&lt;br /&gt;
        link = mw.ustring.gsub(link, &amp;#039;$1&amp;#039;, valurl)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    link = mw.ustring.gsub(link, &amp;#039;^[Hh][Tt][Tt][Pp]([Ss]?)&amp;amp;#58;//&amp;#039;, &amp;#039;http%1://&amp;#039;) -- fix wikidata URL&lt;br /&gt;
    link = mw.ustring.gsub(link, &amp;#039; &amp;#039; , &amp;#039;&amp;#039;)&lt;br /&gt;
    val = mw.ustring.match(val, &amp;#039;([^=/]*)/?$&amp;#039;) -- get display name from end of URL&lt;br /&gt;
    if mw.ustring.find( link, &amp;#039;//&amp;#039; ) then&lt;br /&gt;
        if mask == &amp;#039;y&amp;#039; then&lt;br /&gt;
            returnVal.text = &amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[&amp;#039;..link..&amp;#039; ID]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            returnVal.text = &amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[&amp;#039;..link..&amp;#039; &amp;#039;..mw.text.encode(mw.uri.decode(val, &amp;#039;PATH&amp;#039;),&amp;#039;%[%]&amp;#039;)..&amp;#039;]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    elseif link == &amp;#039;&amp;#039; then&lt;br /&gt;
        returnVal.text = val&lt;br /&gt;
    else&lt;br /&gt;
        returnVal.text = &amp;#039;[[&amp;#039;..link..&amp;#039;|&amp;#039;..val..&amp;#039;]]&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return returnVal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function createRow( id, label, rawValue, link, withUid )&lt;br /&gt;
    if link then&lt;br /&gt;
        local outStr = &amp;#039;*&amp;lt;span style=&amp;quot;white-space:nowrap;&amp;quot;&amp;gt;&amp;#039; .. label .. &amp;#039; &amp;lt;span&amp;#039;&lt;br /&gt;
        if withUid then outStr = outStr..&amp;#039; class=&amp;quot;uid&amp;quot;&amp;#039; end&lt;br /&gt;
        return outStr..&amp;#039;&amp;gt;&amp;#039; .. link .. &amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;\n&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;* &amp;#039; .. mw.text.tag(&amp;#039;span&amp;#039;, {class=&amp;#039;error&amp;#039;}, &amp;#039;O identificador &amp;#039; .. id .. &amp;#039; &amp;#039; .. rawValue .. &amp;#039; não é válido.&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function copyTable(inTable)&lt;br /&gt;
    if type(inTable) ~= &amp;#039;table&amp;#039; then return inTable end&lt;br /&gt;
    local outTable = setmetatable({}, getmetatable(inTable))&lt;br /&gt;
    for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end&lt;br /&gt;
    return outTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.authorityControlMed( frame )&lt;br /&gt;
    local resolve = require( &amp;#039;Módulo:ResolveEntityId&amp;#039; )&lt;br /&gt;
    local parentArgs = copyTable(frame:getParent().args)&lt;br /&gt;
    local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
    local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
    &lt;br /&gt;
    local stringArgs = false&lt;br /&gt;
    local fromTitleCount, firstRow, rowCount = 1, 0, 0&lt;br /&gt;
    local outString, errors = &amp;#039;&amp;#039;, &amp;#039;&amp;#039;&lt;br /&gt;
    local tFroms = {} --non-sequential table of unique froms&lt;br /&gt;
    local iFroms = 0 --integer size of tFroms, b/c Lua&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    --Cleanup args&lt;br /&gt;
    for k, v in pairs( frame:getParent().args ) do&lt;br /&gt;
        if type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
            --make args case insensitive&lt;br /&gt;
            local lowerk = mw.ustring.lower(k)&lt;br /&gt;
            if isNilOrEmpty( parentArgs[lowerk] ) then&lt;br /&gt;
                parentArgs[k] = nil&lt;br /&gt;
                parentArgs[lowerk] = v&lt;br /&gt;
            end&lt;br /&gt;
            --remap abc to abc1&lt;br /&gt;
            if mw.ustring.find(lowerk,&amp;#039;%d$&amp;#039;) == nil then --if no number at end of param&lt;br /&gt;
                if isNilOrEmpty( parentArgs[lowerk..&amp;#039;1&amp;#039;] ) then&lt;br /&gt;
                    parentArgs[lowerk] = nil&lt;br /&gt;
                    lowerk = lowerk..&amp;#039;1&amp;#039;&lt;br /&gt;
                    parentArgs[lowerk] = v&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if v and v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                --remap &amp;#039;for&amp;#039; to &amp;#039;title&amp;#039;&lt;br /&gt;
                if mw.ustring.sub(lowerk,1,3) == &amp;#039;for&amp;#039; then&lt;br /&gt;
                    local forTitle = mw.ustring.gsub(lowerk,&amp;#039;^for&amp;#039;,&amp;#039;title&amp;#039;,1)&lt;br /&gt;
                    if isNilOrEmpty( parentArgs[forTitle] ) then&lt;br /&gt;
                        parentArgs[lowerk] = nil&lt;br /&gt;
                        lowerk = forTitle&lt;br /&gt;
                        parentArgs[lowerk] = v&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                --find highest from or title param&lt;br /&gt;
                if mw.ustring.sub(lowerk,1,4) == &amp;#039;from&amp;#039; then&lt;br /&gt;
                    local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))&lt;br /&gt;
                    if fromNumber and fromNumber &amp;gt;= fromTitleCount then fromTitleCount = fromNumber end&lt;br /&gt;
                    --look for duplicate froms while we&amp;#039;re here&lt;br /&gt;
                    if mw.ustring.find(v, &amp;#039;^Q%d&amp;#039;) then&lt;br /&gt;
                        if tFroms[v] then&lt;br /&gt;
&lt;br /&gt;
                            tFroms[v] = tFroms[v] + 1&lt;br /&gt;
                        else&lt;br /&gt;
                            tFroms[v] = 1&lt;br /&gt;
                            iFroms = iFroms + 1&lt;br /&gt;
                        end&lt;br /&gt;
                        if iFroms == 2 then&lt;br /&gt;
&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                elseif mw.ustring.sub(lowerk,1,5) == &amp;#039;title&amp;#039; then&lt;br /&gt;
                    local titleNumber = tonumber(mw.ustring.sub(lowerk,4,-1))&lt;br /&gt;
                    if titleNumber and titleNumber &amp;gt;= fromTitleCount then fromTitleCount = titleNumber end&lt;br /&gt;
                elseif mw.ustring.lower(v) ~= &amp;#039;no&amp;#039; then&lt;br /&gt;
                    stringArgs = true&lt;br /&gt;
&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    --Check for unknown parameters&lt;br /&gt;
    --create knowns list&lt;br /&gt;
    local acceptableArgs = { from = true, } --master list of l/c acceptable args&lt;br /&gt;
    for _, d in pairs( conf.databases ) do&lt;br /&gt;
        if d[1] ~= &amp;#039;Wikidata&amp;#039; then --made obsolete by from&lt;br /&gt;
            acceptableArgs[mw.ustring.lower(d[1])] = true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for _, a in pairs( conf.aliases ) do&lt;br /&gt;
        acceptableArgs[mw.ustring.lower(a[1])] = true&lt;br /&gt;
    end&lt;br /&gt;
    --create trimmed parents list&lt;br /&gt;
    local baseParentArgs = {} --condensed list of l/c parent args w/o trailing #s&lt;br /&gt;
    for k, v in pairs( parentArgs ) do&lt;br /&gt;
        if type(k) == &amp;#039;string&amp;#039; then --ignore unnamed params, which have keys of type &amp;#039;number&amp;#039;&lt;br /&gt;
            local lowerk = mw.ustring.lower(k)&lt;br /&gt;
            local base = mw.ustring.gsub(lowerk, &amp;#039;[%d]*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
            baseParentArgs[base] = true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    --compare lists and spit out unknowns&lt;br /&gt;
    local unknownParams = {}&lt;br /&gt;
    for k, v in pairs( baseParentArgs ) do&lt;br /&gt;
        if acceptableArgs[k] == nil then&lt;br /&gt;
&lt;br /&gt;
            unknownParams[#unknownParams + 1] = k&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    --warn if unknown(s) present&lt;br /&gt;
    if #unknownParams &amp;gt; 0 then&lt;br /&gt;
        if frame:preprocess( &amp;#039;{{REVISIONID}}&amp;#039; ) == &amp;#039;&amp;#039; then&lt;br /&gt;
            errors = errors..&amp;#039;&amp;lt;div class=&amp;quot;hatnote&amp;quot; style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;#039;..&lt;br /&gt;
                     &amp;#039;&amp;lt;strong&amp;gt;Atenção:&amp;lt;/strong&amp;gt; parâmetros desconhecidos &amp;lt;strong&amp;gt;&amp;#039;..table.concat(unknownParams, &amp;#039;, &amp;#039;)..&amp;#039;&amp;lt;/strong&amp;gt;.&amp;lt;br /&amp;gt;&amp;#039;..&lt;br /&gt;
                     &amp;#039;Corrije-os ou considere liga-los à Wikidata.&amp;lt;br /&amp;gt;&amp;#039;..&lt;br /&gt;
                     &amp;#039;Esta mensagem só se amostra na vista prévia.&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    --Setup navbox&lt;br /&gt;
local navboxParams = {&lt;br /&gt;
        name  = &amp;#039;Controle de autoridades&amp;#039;,&lt;br /&gt;
        bodyclass = &amp;#039;hlist&amp;#039;,&lt;br /&gt;
        listclass = &amp;#039;plainlinks&amp;#039;,&lt;br /&gt;
        groupstyle = &amp;#039;width: 12%; text-align:center;&amp;#039;,&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    for f = 1, fromTitleCount, 1&lt;br /&gt;
    do&lt;br /&gt;
        local elements, title = {}, nil&lt;br /&gt;
        --cleanup parameters&lt;br /&gt;
        if parentArgs[&amp;#039;from&amp;#039;..f] == &amp;#039;&amp;#039; then parentArgs[&amp;#039;from&amp;#039;..f] = nil end&lt;br /&gt;
        if parentArgs[&amp;#039;title&amp;#039;..f] == &amp;#039;&amp;#039; then parentArgs[&amp;#039;title&amp;#039;..f] = nil end&lt;br /&gt;
        --remap aliases&lt;br /&gt;
        for _, a in pairs( conf.aliases ) do&lt;br /&gt;
            local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])&lt;br /&gt;
            if parentArgs[alias..f] and parentArgs[name..f] == nil then&lt;br /&gt;
                parentArgs[name..f] = parentArgs[alias..f]&lt;br /&gt;
                parentArgs[alias..f] = nil&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        --Fetch Wikidata item&lt;br /&gt;
        local from = resolve._entityid(frame, parentArgs[&amp;#039;from&amp;#039;..f])&lt;br /&gt;
        local item = mw.wikibase.getEntity(from)&lt;br /&gt;
        local label = nil&lt;br /&gt;
        if type(item) == &amp;#039;table&amp;#039; then&lt;br /&gt;
            local statements = item:getBestStatements(&amp;#039;P225&amp;#039;)[1] --taxon name&lt;br /&gt;
            if statements then&lt;br /&gt;
                local datavalue = statements.mainsnak.datavalue&lt;br /&gt;
                if datavalue then&lt;br /&gt;
                    label = datavalue.value&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            label = label or item:getLabel()&lt;br /&gt;
        else&lt;br /&gt;
            if parentArgs[&amp;#039;from&amp;#039;..f] then&lt;br /&gt;
&lt;br /&gt;
                errors = errors .. mw.text.tag(&amp;#039;strong&amp;#039;, {class=&amp;#039;error&amp;#039;}, &amp;#039;Erro: &amp;quot;&amp;#039; ..&lt;br /&gt;
                         parentArgs[&amp;#039;from&amp;#039;..f] .. &amp;#039;&amp;quot; nome é um ID de entidade Wikidata válido.&amp;lt;br /&amp;gt;&amp;#039;)                &lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if label and label ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            title = mw.title.new(label)&lt;br /&gt;
        end&lt;br /&gt;
        if title == nil and parentArgs[&amp;#039;title&amp;#039;..f] then&lt;br /&gt;
            title = mw.title.new(parentArgs[&amp;#039;title&amp;#039;..f])&lt;br /&gt;
        end&lt;br /&gt;
        if title == nil and f == 1 then&lt;br /&gt;
            title = currentTitle&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        if title then&lt;br /&gt;
            if isNilOrEmpty( parentArgs[&amp;#039;wikidata&amp;#039;..f] ) and&lt;br /&gt;
               (title.namespace == 0) then&lt;br /&gt;
                if parentArgs[&amp;#039;from&amp;#039;..f] then&lt;br /&gt;
                    parentArgs[&amp;#039;wikidata&amp;#039;..f] = parentArgs[&amp;#039;from&amp;#039;..f]&lt;br /&gt;
                elseif item then&lt;br /&gt;
                    parentArgs[&amp;#039;wikidata&amp;#039;..f] = item.id&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if title.namespace == 0 or stringArgs then --only in mainspace or if manual overrides exist&lt;br /&gt;
                local sourceCount = 0&lt;br /&gt;
                for _, params in pairs( conf.databases ) do&lt;br /&gt;
                    params[1] = mw.ustring.lower(params[1])&lt;br /&gt;
                    local propId = params[3]&lt;br /&gt;
                    --Wikidata fallback if requested&lt;br /&gt;
                    if (item and item.claims) and&lt;br /&gt;
                       (type(propId) == &amp;#039;string&amp;#039; or (type(propId) == &amp;#039;number&amp;#039; and propId &amp;gt; 0)) then&lt;br /&gt;
                        local wikidataId = getIdFromWikidata( item, &amp;#039;P&amp;#039; .. propId )&lt;br /&gt;
                        local v = parentArgs[params[1]..f]&lt;br /&gt;
                        if wikidataId then&lt;br /&gt;
                            if isNilOrEmpty(v) then&lt;br /&gt;
                                parentArgs[params[1]..f] = wikidataId&lt;br /&gt;
                            else&lt;br /&gt;
                                if v and v ~= &amp;#039;no&amp;#039; and v ~= wikidataId then&lt;br /&gt;
&lt;br /&gt;
                                elseif v and v == wikidataId then&lt;br /&gt;
&lt;br /&gt;
                                end&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                    local val = parentArgs[params[1]..f]&lt;br /&gt;
                    if val and val ~= &amp;#039;&amp;#039; and mw.ustring.lower(val) ~= &amp;#039;não&amp;#039; then&lt;br /&gt;
                        &lt;br /&gt;
                        if params[1] == &amp;#039;issn&amp;#039; and parentArgs[&amp;#039;worldcatid&amp;#039;..f] and parentArgs[&amp;#039;worldcatid&amp;#039;..f] ~= &amp;#039;&amp;#039; then -- &amp;#039;issn&amp;#039; is the first element following the &amp;#039;wikidata&amp;#039; item&lt;br /&gt;
                            table.insert( elements, createRow( params[1], &amp;#039;&amp;#039;, parentArgs[&amp;#039;worldcatid&amp;#039;..f], &amp;#039;[//www.worldcat.org/identities/&amp;#039; .. parentArgs[&amp;#039;worldcatid&amp;#039;..f] .. &amp;#039; WorldCat]&amp;#039;, false ) ) --Validation?&lt;br /&gt;
                        elseif params[1] == &amp;#039;viaf&amp;#039; and parentArgs[params[1]..f] and string.match( parentArgs[params[1]..f], &amp;#039;^%d+$&amp;#039; ) and not parentArgs[&amp;#039;worldcatid&amp;#039;..f] then -- Hackishly copy the validation code; this should go away when we move to using P1793 and P1630&lt;br /&gt;
                            table.insert( elements, createRow( params[1], &amp;#039;&amp;#039;, parentArgs[params[1]], &amp;#039;[//www.worldcat.org/identities/containsVIAFID/&amp;#039; .. parentArgs[params[1]..f] .. &amp;#039; WorldCat]&amp;#039;, false ) )&lt;br /&gt;
                        elseif params[1] == &amp;#039;lccn&amp;#039; and parentArgs[params[1]..f] and parentArgs[params[1]..f] ~= &amp;#039;&amp;#039; and not parentArgs[&amp;#039;viaf&amp;#039;..f] and not parentArgs[&amp;#039;worldcatid&amp;#039;..f] then&lt;br /&gt;
                            local lccnParts = splitLccn( parentArgs[params[1]..f] )&lt;br /&gt;
                                if lccnParts and lccnParts[1] ~= &amp;#039;sh&amp;#039; then&lt;br /&gt;
                                table.insert( elements, createRow( params[1], &amp;#039;&amp;#039;, parentArgs[params[1]..f], &amp;#039;[//www.worldcat.org/identities/lccn-&amp;#039; .. lccnParts[1] .. lccnParts[2] .. &amp;#039;-&amp;#039; .. lccnParts[3] .. &amp;#039; WorldCat]&amp;#039;, false ) )&lt;br /&gt;
                                end&lt;br /&gt;
                        end&lt;br /&gt;
                        &lt;br /&gt;
                        if type(propId) == &amp;#039;number&amp;#039; then&lt;br /&gt;
                            if propId &amp;lt; 0 then propId = -propId end --allow link&lt;br /&gt;
                            if propId &amp;gt; 0 then --link&lt;br /&gt;
                                table.insert( elements, createRow( params[1], params[2]..&amp;#039;:&amp;#039;, val, getLink( propId, val, params[4] ).text, true ) )&lt;br /&gt;
                            else --propId == 0; no link&lt;br /&gt;
                                table.insert( elements, createRow( params[1], params[2]..&amp;#039;:&amp;#039;, val, val, true ) )&lt;br /&gt;
                            end&lt;br /&gt;
                        else&lt;br /&gt;
                            table.insert( elements, createRow( params[1], params[2]..&amp;#039;:&amp;#039;, val, getLink( propId, val, params[4] ).text, true ) )&lt;br /&gt;
                        end&lt;br /&gt;
                        if params[1] ~= &amp;#039;wikidata&amp;#039; and params[1] ~= &amp;#039;wikispecies&amp;#039; then&lt;br /&gt;
                            sourceCount = sourceCount + 1&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
&lt;br /&gt;
                &lt;br /&gt;
                --Generate navbox title&lt;br /&gt;
                if sourceCount &amp;gt; 0 then --TODO: don&amp;#039;t count Wikispecies towards &amp;#039;taxon ID count&amp;#039;&lt;br /&gt;
                    rowCount = rowCount + 1&lt;br /&gt;
                    if firstRow == 0 then firstRow = f end&lt;br /&gt;
                    --set title from wikidata if it doesn&amp;#039;t exist&lt;br /&gt;
                    if isNilOrEmpty( parentArgs[&amp;#039;title&amp;#039;..f] ) then&lt;br /&gt;
                        parentArgs[&amp;#039;noTitle&amp;#039;..f] = true&lt;br /&gt;
                        parentArgs[&amp;#039;title&amp;#039;..f] = title.text&lt;br /&gt;
                    end&lt;br /&gt;
                    --if it exists now, set row heading to title&lt;br /&gt;
                    if not isNilOrEmpty( parentArgs[&amp;#039;title&amp;#039;..f] ) then&lt;br /&gt;
&lt;br /&gt;
                    else&lt;br /&gt;
                        navboxParams[&amp;#039;group&amp;#039;..f] = &amp;#039;&amp;#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    navboxParams[&amp;#039;list&amp;#039;..f] = table.concat( elements )&lt;br /&gt;
                elseif currentEntityId then&lt;br /&gt;
&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
                --Categorize&lt;br /&gt;
                &lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end --for f = 1, fromTitleCount, 1&lt;br /&gt;
    &lt;br /&gt;
    if rowCount &amp;gt; 0 then&lt;br /&gt;
        local Navbox = require(&amp;#039;Módulo:Navbox&amp;#039;)&lt;br /&gt;
        if rowCount &amp;gt; 1 then&lt;br /&gt;
            --remove duplicates and move page title to top&lt;br /&gt;
            local rowIDs = {}&lt;br /&gt;
            for f = 1,fromTitleCount,1&lt;br /&gt;
            do&lt;br /&gt;
                if not isNilOrEmpty( parentArgs[&amp;#039;title&amp;#039;..f] ) then&lt;br /&gt;
                    if rowIDs[parentArgs[&amp;#039;wikidata&amp;#039;..f]] then --remove duplicate&lt;br /&gt;
                        navboxParams[&amp;#039;group&amp;#039;..f] = nil&lt;br /&gt;
                        navboxParams[&amp;#039;list&amp;#039;..f] = nil&lt;br /&gt;
                    else&lt;br /&gt;
                        rowIDs[parentArgs[&amp;#039;wikidata&amp;#039;..f]] = true&lt;br /&gt;
                        if f &amp;gt; firstRow and (parentArgs[&amp;#039;title&amp;#039;..f] == currentTitle.text or&lt;br /&gt;
                           parentArgs[&amp;#039;wikidata&amp;#039;..f] == currentEntityId) then --move item linked to page to top&lt;br /&gt;
                            if navboxParams[&amp;#039;group&amp;#039;..f] and&lt;br /&gt;
                               navboxParams[&amp;#039;group&amp;#039;..f] ~= &amp;#039;&amp;#039; and&lt;br /&gt;
                               navboxParams[&amp;#039;list&amp;#039;..f] and&lt;br /&gt;
                               navboxParams[&amp;#039;list&amp;#039;..f] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                                local tempGroup, tempList = navboxParams[&amp;#039;group&amp;#039;..f], navboxParams[&amp;#039;list&amp;#039;..f]&lt;br /&gt;
                                navboxParams[&amp;#039;group&amp;#039;..f], navboxParams[&amp;#039;list&amp;#039;..f] = navboxParams[&amp;#039;group&amp;#039;..firstRow], navboxParams[&amp;#039;list&amp;#039;..firstRow]&lt;br /&gt;
                                navboxParams[&amp;#039;group&amp;#039;..firstRow], navboxParams[&amp;#039;list&amp;#039;..firstRow] = tempGroup, tempList&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            --adjust navbox for number of rows&lt;br /&gt;
            navboxParams[&amp;#039;title&amp;#039;] = &amp;#039;Identificadores&amp;#039;&lt;br /&gt;
            if rowCount &amp;gt; 2 then&lt;br /&gt;
                navboxParams[&amp;#039;navbar&amp;#039;] = &amp;#039;plain&amp;#039;&lt;br /&gt;
            else&lt;br /&gt;
                navboxParams[&amp;#039;state&amp;#039;] = &amp;#039;off&amp;#039;&lt;br /&gt;
                navboxParams[&amp;#039;navbar&amp;#039;] = &amp;#039;off&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
        elseif parentArgs[&amp;#039;noTitle&amp;#039;..firstRow] then&lt;br /&gt;
            navboxParams[&amp;#039;group&amp;#039;..firstRow] = &amp;#039;Identificadores&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            navboxParams[&amp;#039;group&amp;#039;..firstRow] = &amp;#039;Identificadores&amp;lt;br /&amp;gt;&amp;#039; .. navboxParams[&amp;#039;group&amp;#039;..firstRow]&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        --return navbox&lt;br /&gt;
        outString = Navbox._navbox(navboxParams)&lt;br /&gt;
    end --if rowCount &amp;gt; 0&lt;br /&gt;
    &lt;br /&gt;
    --Add categories&lt;br /&gt;
    if string.sub(currentTitle.subpageText,1,9) == &amp;#039;testcases&amp;#039; then parentArgs[&amp;#039;demo&amp;#039;] = true end&lt;br /&gt;
&lt;br /&gt;
    return outString .. errors&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Patrícia Ferreira</name></author>
	</entry>
</feed>