Module:Taxonbar/confdoc: Difference between revisions
Appearance
Content deleted Content added
add examples |
add examples |
||
Line 26: | Line 26: | ||
-function to show formatURL and id for taxonomic databases |
-function to show formatURL and id for taxonomic databases |
||
]] |
]] |
||
local counter = 10 |
|||
function p.wikidataInfo( frame ) |
function p.wikidataInfo( frame ) |
||
counter = frame.args['counter'] or 50 -- too preventmany expensive calls |
|||
local wikitable = '{| class="wikitable sortable"\n' .. |
local wikitable = '{| class="wikitable sortable"\n' .. |
||
'|-\n' .. |
'|-\n' .. |
||
Line 40: | Line 42: | ||
local datatype = "" |
local datatype = "" |
||
local examples = "" |
local examples = "" |
||
⚫ | |||
local formatterURL = "" |
|||
if type(prop) == 'number' and prop > 0 then |
if type(prop) == 'number' and prop > 0 then |
||
Line 48: | Line 52: | ||
local statements = item:getBestStatements('P1630')[1] |
local statements = item:getBestStatements('P1630')[1] |
||
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then |
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then |
||
formatterURL = statements.mainsnak.datavalue.value |
|||
url = formatterURL |
url = formatterURL |
||
else |
else |
||
Line 71: | Line 75: | ||
end |
end |
||
end |
end |
||
examples = p.getExamples( item ) |
examples, links = p.getExamples( item, prop, formatterURL, datatype ) |
||
end |
end |
||
Line 81: | Line 85: | ||
.. '\n|' .. examples |
.. '\n|' .. examples |
||
.. '\n|' .. datatype |
.. '\n|' .. datatype |
||
.. '\n|' .. url |
.. '\n|' .. url .. (links or "") |
||
end |
end |
||
end |
end |
||
Line 87: | Line 91: | ||
return wikitable .. '\n|}' |
return wikitable .. '\n|}' |
||
end |
end |
||
function p.getExamples( |
function p.getExamples( propItem , prop, formatterURL, datatype) |
||
counter = counter -1 |
|||
⚫ | |||
if counter < 0 then return "count exceeded" end |
|||
⚫ | |||
local examples = "" |
|||
local links = "" |
|||
local exampleStatements = propItem:getBestStatements('P1855') |
|||
--local statement = statements[1] |
--local statement = statements[1] |
||
for _, statement in pairs( |
for _, statement in pairs( exampleStatements ) do |
||
if statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then |
if statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then |
||
local examplesValue = statement.mainsnak.datavalue.value |
local examplesValue = statement.mainsnak.datavalue.value |
||
if examplesValue and examplesValue.id then |
if examplesValue and examplesValue.id then |
||
local exampleID = examplesValue.id |
local exampleID = examplesValue.id |
||
examples = examples .. '[[:d:' .. exampleID .. '|' .. exampleID ..']] <br/>' |
examples = examples .. '\n*[[:d:' .. exampleID .. '|' .. exampleID ..']] <br/>' |
||
local item = mw.wikibase.getEntity(exampleID) |
|||
if item and item ~= "" then |
|||
--datatype = item.datatype |
|||
⚫ | |||
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then |
|||
local taxon = statements.mainsnak.datavalue.value |
|||
examples = examples .. ' [[' .. taxon .. ']]' |
|||
end |
|||
local statements = item:getBestStatements('P'..prop)[1] -- the databas property |
|||
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then |
|||
local id = statements.mainsnak.datavalue.value |
|||
local link = formatterURL:gsub('$1', id) |
|||
if (datatype == "url") then link = id end |
|||
examples = examples .. ' (' .. id .. ')' |
|||
links = links .. '\n*' .. link .. '' |
|||
end |
|||
end |
|||
else |
else |
||
examples = examples .. "No example" |
examples = examples .. "No example" |
||
Line 107: | Line 133: | ||
end |
end |
||
return examples |
return examples, links |
||
end |
end |
||
return p |
return p |
Revision as of 16:37, 14 November 2021
![]() | This module depends on the following other modules: |
Related pages |
---|
About
This module allows Module:Taxonbar/conf to automatically update its own documentation table of Wikidata taxon ID properties on Template:Taxonbar/doc.
Usage
{{#invoke:Taxonbar/confdoc|confdoc}}
Output
{{#invoke:Taxonbar/confdoc|confdoc}}
Lua error in package.lua at line 80: module 'Module:No globals' not found.
Wikidata link information
{{#invoke:Taxonbar/confdoc|wikidataInfo
Lua error in package.lua at line 80: module 'Module:No globals' not found.
require('Module:No globals')
local conf = require( "Module:Taxonbar/conf" ) -- configuration module
local p = {}
function p.confdoc( frame )
local wikitable = '{| class="wikitable sortable"\n' ..
'|-\n' ..
'! Parameter !! data-sort-type=number style="white-space: nowrap;"|Wikidata ID !! Authority !! Description'
for _, db in pairs( conf.databases ) do
local param = mw.ustring.lower(db[1])
local prop = db[3]
if type(prop) == 'number' and prop > 0 then
local TaxonbarProperty = frame:expandTemplate{ title = 'Taxonbar/Property', args = { prop } }
wikitable = wikitable .. '\n' ..
'|-\n' ..
'|' .. param .. '||' .. TaxonbarProperty
end
end
return wikitable .. '\n|}'
end
--[[ p.wikidataInfo( frame )
-function to show formatURL and id for taxonomic databases
]]
local counter = 10
function p.wikidataInfo( frame )
counter = frame.args['counter'] or 50 -- too preventmany expensive calls
local wikitable = '{| class="wikitable sortable"\n' ..
'|-\n' ..
'! Parameter !! data-sort-type=number style="white-space: nowrap;"|Wikidata ID !! Database !! Examples !! datatype !! formatterURL or alternative'
for _, db in pairs( conf.databases ) do
local param = mw.ustring.lower(db[1])
local link = db[2]
local prop = db[3]
local id = 'id'
local url = 'url'
local datatype = ""
local examples = ""
local links = ""
local formatterURL = ""
if type(prop) == 'number' and prop > 0 then
local item = mw.wikibase.getEntity('P'..prop) --('P5354')
if item and item ~= "" then
datatype = item.datatype
local statements = item:getBestStatements('P1630')[1]
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then
formatterURL = statements.mainsnak.datavalue.value
url = formatterURL
else
url = "No formatter URL (P1630)."
if datatype == "url" then url = url .. " The id of the external database is the url." end
local subjectItem = item:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
if officialWebsite then
url = url .. '<br/>website: ' .. officialWebsite.mainsnak.datavalue.value
end
else
url = url .. ' or official website (P856) of wikidata item of this property (P1629)'
-- use third-party formatter URL. e.g for Euring number (P3459)
local statements = item:getBestStatements('P3459')[1]
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then
local thirdPartyURL = statements.mainsnak.datavalue.value
url = url ..'<br/>use third party url: ' .. thirdPartyURL
else
url = url .. ' or third party formatter url (P3459) '
end
end
end
examples, links = p.getExamples( item, prop, formatterURL, datatype )
end
wikitable = wikitable .. '\n' .. '|-'
.. '\n|' .. param
.. '\n|' .. '[[:d:Property:P' .. prop .. '|P' .. prop .. ']]'
.. '\n|' .. link
.. '\n|' .. examples
.. '\n|' .. datatype
.. '\n|' .. url .. (links or "")
end
end
return wikitable .. '\n|}'
end
function p.getExamples( propItem , prop, formatterURL, datatype)
counter = counter -1
if counter < 0 then return "count exceeded" end
local examples = ""
local links = ""
local exampleStatements = propItem:getBestStatements('P1855')
--local statement = statements[1]
for _, statement in pairs( exampleStatements ) do
if statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then
local examplesValue = statement.mainsnak.datavalue.value
if examplesValue and examplesValue.id then
local exampleID = examplesValue.id
examples = examples .. '\n*[[:d:' .. exampleID .. '|' .. exampleID ..']] <br/>'
local item = mw.wikibase.getEntity(exampleID)
if item and item ~= "" then
--datatype = item.datatype
local statements = item:getBestStatements('P225')[1] -- taxon name
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then
local taxon = statements.mainsnak.datavalue.value
examples = examples .. ' [[' .. taxon .. ']]'
end
local statements = item:getBestStatements('P'..prop)[1] -- the databas property
if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then
local id = statements.mainsnak.datavalue.value
local link = formatterURL:gsub('$1', id)
if (datatype == "url") then link = id end
examples = examples .. ' (' .. id .. ')'
links = links .. '\n*' .. link .. ''
end
end
else
examples = examples .. "No example"
end
else
examples = examples .. "No examples statements"
end
end
return examples, links
end
return p