请输入您要查询的百科知识:

 

词条 Module:Lok sabha constituency
释义

local loksabha = {}

local args = {}

local QId

local label =mw.loadData('Module:Lok_sabha_constituency/labels')

local lang=mw.language.getContentLanguage().code

local function ifnotempty(s,a,b)

if (s and s ~= ) then

return a

else

return b

end

end

local function ifexist(page)

if not page then return false end

if mw.title.new(page).exists then return true end

return false

end

local function getwikidatalabel(id)

--wikidata label

return mw.wikibase.label(id) or id

end

local function getwikilink(id)

if ifexist(mw.wikibase.sitelink(id)) then

return ''.. mw.wikibase.label(id) ..''

else

return mw.wikibase.label(id) or id

end

end

--comma

function comma_value(amount)

if amount==nil then return end

local formatted = tonumber(amount)

while true do

local k

formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')

if k==0 then

break

end

end

return formatted

end

--print(getProperty('Q1255973','P159'))

function getProperty(id, propertyName )

local entity = mw.wikibase.getEntityObject(id)

return getPropertyByEntity(entity,propertyName)

end --getproperty

function getPropertyByEntity(_entity, propertyName )

local entity = _entity -- mw.wikibase.getEntityObject(id)

if not entity or not entity.claims then return end--the entity doesnt exist or have no claims

local property = entity.claims[propertyName]

if not property then return end--no such property for this item

--lang=mw.language.getContentLanguage()

local i=1

default_lang='en'

local default_text=

for _ in ipairs(property) do

propy = property[i]

i=i+1

local propValue = propy.mainsnak and propy.mainsnak.datavalue

local propType = propy.mainsnak and propy.mainsnak.datatype

if not propValue then return end --property doesnt exist

if propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == default_lang then

default_text = propValue.value['text']..mw.ustring.format( "update at :%s", _entity.id, _entity.id..':'.. propertyName )

end

if propValue['type'] == 'wikibase-entityid' then

local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )

local linkTitle = mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )

return linkTarget and linkTitle and mw.ustring.format( "%s", linkTarget, linkTitle )

--return linkTitle

elseif propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == lang then

return propValue.value['text']

elseif propType and (propType == 'commonsMedia' or propType=='string') then

return propValue['value']

elseif propType and propType == 'quantity' then

return tonumber(propValue.value['amount'])

end --if

end --for

return default_text --incase value for other language missing

end --getproperty

function getQualifierDateValue(_entity,propertyID,qualifierID)

local pattern = "+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"

if _entity.claims[propertyID] ~= nil then

local out = {}

for k, v in pairs(_entity.claims[propertyID]) do

if v.qualifiers and v.qualifiers[qualifierID] ~= nil then

for k2, v2 in pairs(v.qualifiers[qualifierID]) do

if v2.datatype=='time' and v2.datavalue then

local xyear=v2.datavalue.value['time']:match(pattern)

--print(xyear)

table.insert(out ,xyear)

elseif v2.datatype=="time" and v2.snaktype=="novalue" then

table.insert(out, v2.snaktype)

end

end

end

end

return out

else

return ""

end

end

function getExistence(_entity)

local a={}

local b={}

a=getQualifierDateValue(_entity,'P31','P580') --instance of / start time

b=getQualifierDateValue(_entity,'P31','P582') --instance of / end time

table.sort(a)

table.sort(b)

local str=""

if a~=nil then

for k,v in ipairs(a) do

if str ~="" then str= str.."
" end

if tonumber(v) and tonumber(b[k]) and tonumber(v)

str=tostring(str) .. tostring(v) .." - ".. tostring(b[k])

elseif tonumber(b[k]) ==nil then

if b[k]=="novalue" or b[k]==nil then b[k]= label.Present end --mw.wikibase.label("Q193168") or "" end --present

str=tostring(str) .. tostring(v) .." - ".. tostring(b[k])

end

end

else

str="Start Time Property value
missing at ".. _entity.id ..":P31:P580"

end

--print(str)

return(str)

end

--print(getPropertyValue('Q7785493','P991'))

function getPropertyValue(id, propertyName )

local _entity = mw.wikibase.getEntityObject(id)

return getPropertyValueByEntity(_entity,propertyName)

end --getPropertyValueById

function getPropertyValueByEntity(_entity, propertyName )

if not _entity or not _entity.claims then return end--the entity doesnt exist or have no claims

local property = _entity.claims[propertyName]

if not property then return end--no such property for this item

--local lang=mw.language.getContentLanguage().code

local i=1

for _ in ipairs(property) do

propy = property[i]

i=i+1

local propValue = propy.mainsnak and propy.mainsnak.datavalue

local propType = propy.mainsnak and propy.mainsnak.datatype

if not propValue then return end --property doesnt exist

-- print(mw.dumpObject(propValue))

if propValue['type'] == 'wikibase-entityid' then

local numericid = "Q" .. propValue.value['numeric-id']

return numericid

elseif propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == lang then

return propValue.value['text']

else

return

end --if

end --for

return default_text --incase value for other language missing

end --getPropertyValueByEntity

local function getReserved(classification)

--local classification=getPropertyValueByEntity(_entity,'P2502') --P2502:classification

if not classification then return end

classification='Q'..classification

local scst=getPropertyValue(classification,'P361') --P361 :partof

--print(scst)

if ifexist(mw.wikibase.sitelink(scst)) then

_shortname=getShortName(classification)

if _shortname~=nil then --P1813:short name

return mw.ustring.format( "%s", mw.wikibase.sitelink(scst), mw.wikibase.label(classification) or classification)

else

return mw.ustring.format( "%s", mw.wikibase.sitelink(scst))

end

else

return mw.wikibase.label(classification) or classification

end

end

--print(getReserved('22813282'))

function getPartyLink(partyid)--party of successful candidate

local str="Qualifier Political party (102) is missing under P585 in ".. QId ..""

if partyid==nil then return str end

--local partyid=getPropertyValue(id,'P102')--member of political party

partyid='Q'..partyid

if ifexist(mw.wikibase.sitelink(partyid)) then

_shortname=getShortName(partyid)

if _shortname~=nil then --short name

str= mw.ustring.format( "%s", mw.wikibase.sitelink(partyid), _shortname)

else

str= mw.ustring.format( "%s", mw.wikibase.sitelink(partyid))

end

else

str= mw.wikibase.label(partyid) or "Political party (P102) is missing at ".. QId ..""

end

return str

end

function getCurrentMP(_id)

local propertyID ="P991" --successful candidate

local str="Current MP (Successful candidate - P991) name is missing at ".. QId ..""

if _id==nil then return str

elseif ifexist(mw.wikibase.sitelink(_id)) then

str=mw.ustring.format( "%s", mw.wikibase.sitelink(_id), mw.wikibase.label(_id))

elseif mw.wikibase.label(_id) then

str= mw.ustring.format( "%s", mw.wikibase.label(_id))

else

str=_id

end

return str

end

function getElectionYear(_id,elec_year)

if _id==nil or _id=='Q' then

return nil

elseif mw.wikibase.sitelink(_id)~=nil then

return mw.ustring.format( "%s", mw.wikibase.sitelink(_id), elec_year)

elseif mw.wikibase.label(_id) then

return mw.ustring.format( "%s", mw.wikibase.label(_id), elec_year)

else

return nil

end

end

function getMostSuccessfulParty(_entity)

party_list={}

local propertyID='P585' --point in time

if _entity.claims[propertyID] then

local pattern="+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"

for k, v in pairs(_entity.claims[propertyID]) do

P585Qual = v['qualifiers']

if P585Qual~=nil and P585Qual['P102']~=nil then S102=P585Qual['P102'][1].datavalue.value['numeric-id'] end --classification

local string s=mw.ustring.format("%s",S102)

if party_list[s] ~=nil then

party_list[s]=tonumber(party_list[s])+1

else

party_list[s]=1

end

end

end

local max_val, key = -math.huge

for k, v in pairs(party_list) do

if v > max_val then

max_val, key = v, k

end

end

if key~=nil then

_shortname=getShortName('Q'..key)

if mw.wikibase.sitelink('Q'..key)~=nil then

party=mw.ustring.format("%s", mw.wikibase.sitelink('Q'..key), _shortname or mw.wikibase.label('Q'..key) or )

elseif mw.wikibase.label('Q'..key)~=nil then

party=mw.ustring.format("%s", mw.wikibase.label('Q'..key))

else

party=mw.ustring.format("d:%s", 'Q'..key)

end

return mw.ustring.format("%s \\(%s %s\\)",party, max_val,label.Times)

else

return ""

end

end

function getImage(_entity)

local property=getPropertyByEntity(_entity, 'P242' )

if property~=nil then

return mw.ustring.format( "", property)

else

return

end

end

function getImageLegend(_entity)

--lang=mw.language.getContentLanguage().code

local propertyID='P242' --locator map image

local qualifierID='P2096' --image legend

local legend ="Image Legend qualifier
missing at ".. _entity.id ..":P242:P2096"

if _entity.claims[propertyID] then

for k, v in pairs(_entity.claims[propertyID]) do

if v.qualifiers~=nil and v.qualifiers[qualifierID] then

for k2, v2 in pairs(v.qualifiers[qualifierID]) do

if v2.datatype=='monolingualtext' and v2.datavalue and v2.datavalue.value['language']==lang then

legend=v2.datavalue.value['text']

end

end

end

end

end

return legend

end

local function getElectors(_entity)

local property=getPropertyByEntity(_entity, 'P1867' )--eligible voters

if property~=nil then

return mw.ustring.format( "%s", property)

else

return

end

end

local function assemblylist(_entity)

--has part P527

--local Qid="Q7785493"

local propertyID ="P527"--has part

--local entity = mw.wikibase.getEntityObject(Qid)

local str=""

if _entity.claims[propertyID] ~= nil then

for k, v in pairs(_entity.claims[propertyID]) do

if str ~="" then str= str.."
" end

local id='Q' ..v.mainsnak.datavalue.value['numeric-id']

local series=getProperty(id,'P1545')

if series~=nil then series=series ..". " end

-- str =str .. (series or ) .. mw.ustring.format( "%s", mw.wikibase.sitelink(id), mw.wikibase.label(id))

if mw.wikibase.sitelink(id)~=nil and mw.wikibase.label(id) ~=nil then

str =str .. mw.ustring.format( "%s", mw.wikibase.sitelink(id), mw.wikibase.label(id))

elseif mw.wikibase.sitelink(id)~=nil then

str =str .. mw.ustring.format( "%s", mw.wikibase.sitelink(id))

elseif mw.wikibase.label(id)~=nil then

str =str .. mw.ustring.format( "%s", mw.wikibase.label(id))

else

str =str .. mw.ustring.format( "d:%s", id)

end

end

-- print(str)

end

return str

end

function getShortName(_id)

local _entity = mw.wikibase.getEntityObject(_id)

if _entity==nil then return

elseif _entity.claims==nil then return end

local propertyID='P1813'

if _entity.claims[propertyID] then

for k, v in pairs(_entity.claims[propertyID]) do

--print(mw.dumpObject(v.mainsnak.datavalue.value))

if(v.mainsnak.datavalue.value.language==lang)then

return v.mainsnak.datavalue.value.text

end

end

end

end

local function setarg(k, v)

if(v and v ~= ) then args[k] = v end

end

local function loadLokSabha(frame,s)

local yearstr = string.sub(s,1,4)

local Elected_Year =frame.args.Elected_Year

QId=string.sub(s,5) or QId

local _entity = mw.wikibase.getEntityObject(QId)

local lokassmlist = assemblylist(_entity)

local propertyID='P585' --point in time

local elec_year

if _entity.claims[propertyID] then

local elyear={}

local pattern = "+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"

pos=1

for k, v in pairs(_entity.claims[propertyID]) do

local val=mw.ustring.format("%s%s%s",v.mainsnak.datavalue.value.time:match(pattern))

elyear[pos]=val

pos=pos+1

end

local max_val, key = -math.huge

for k, v in pairs(elyear) do

if tonumber(v) > tonumber(max_val) then

max_val, key = v, k

end

end

P585Qual = _entity.claims[propertyID][key]['qualifiers']

elec_year = string.sub(max_val,1,4)

if P585Qual['P2502']~=nil then P2502=P585Qual['P2502'][1].datavalue.value['numeric-id'] end

if P585Qual['P102'] ~=nil then P102 =P585Qual['P102'][1].datavalue.value['numeric-id'] end

if P585Qual['P805'] ~=nil then P805 ='Q'..P585Qual['P805'][1].datavalue.value['numeric-id'] end

if P585Qual['P991'] ~=nil then P991 ='Q'..P585Qual['P991'][1].datavalue.value['numeric-id'] end

if P585Qual['P1867'] ~=nil then P1867 =P585Qual['P1867'][1].datavalue.value['amount'] end

if P585Qual['P1868'] ~=nil then P1868 =P585Qual['P1868'][1].datavalue.value['amount'] end

end

setarg('title',getwikidatalabel(QId))

setarg('image', getImage(_entity) )

setarg('caption', getImageLegend(_entity) or )

setarg('Existence', getExistence(_entity) or )

setarg('Reservation', getReserved(P2502) or)

setarg('CurrMP', getCurrentMP(P991))

setarg('Party', getPartyLink(P102))

setarg('Yr', getElectionYear(P805, elec_year) or Elected_Year or )

setarg('State', getPropertyByEntity(_entity,'P131'))--dargs['State']

setarg('TotElec', comma_value(P1867))--dargs['TotElec']

setarg('SuccParty', getMostSuccessfulParty(_entity) or)

--setarg('Category', dargs['Category'] or )

setarg('AssList',lokassmlist or )

end

local function infobox(frame)

local abovestr =args['title'] or

local bgcolor = args['background'] or args['bgcolour'] or

return frame:expandTemplate{ title = 'infobox', args = {

["bodyclass"] = "vevent",

["bodystyle"] = "width:25em; text-align:left; font-size:90%;",

["above"] = mw.ustring.format( "%s [ edit ]",abovestr ,QId),

["aboveclass"] = "summary",

["abovestyle"] = "padding-bottom:0.25em; background:" .. bgcolor .. "; line-height:1.2em; text-align:center; font-size:115%;",

------------------ Images and maps ------------------

["image"] = args['image'] or ,

["imagestyle"] = "padding-bottom:0.5em;",

["caption"] = args['caption'] or ,

["captionstyle"] = "padding-top:0.1em; line-height:1.2em; font-size:90%;",

["headerstyle"] = "background:#eee; font-size:105%;",

["labelstyle"] = "padding:0 0.5em 0 0; line-height:1.1em;",

["datastyle"] = "padding:0; line-height:1.2em; vertical-align:middle;",

-- ["label1"] = 'Title',-- ["data1"] = args['title'] or ,

["label3"] = label.Existence,

["data3"] = args['Existence'] or ,

["label4"] = label.Reservation,

["data4"] = args['Reservation'] or ,

["label5"] = label.CurrentMP,

["data5"] = args['CurrMP'] or ,

["label6"] = label.Party,

["data6"] = args['Party'] or ,

["label7"] = label.ElectedYear,

["data7"] = args['Yr'] or ,

["label8"] = label.State,

["data8"] = args['State'] or ,

["label9"] = label.TotalElectors,

["data9"] = args['TotElec'] or ,

["label10"] = label.MostSuccessfulParty,

["data10"] = args['SuccParty'] or ,

["label11"] = label.Category,

["data11"] = args['Category'] or ,

["label12"] = label.AssemblyConstituencies,

["data12"] = args['AssList'] or ,

} }

end

function loksabha.currentmember(frame)

args = require('Module:Arguments').getArgs(frame, {

wrappers = 'Template:Infobox lok sabha constituency1' --test

})

if( args['2'] and args['2'] ~= ) then

loadloksabhadb(frame,frame.args.year .. args['1'])

elseif( args['1'] and args['1'] ~= ) then

--loadloksabhadb(frame,frame.args.year .. args['1'])

local entity=mw.wikibase.getEntityObject()

if entity then

--return entity.metatable.id

--return mw.dumpObject(entity)

end

--page id

if(entity ) then

if entity.id then QId = entity.id end

end

loadLokSabha(frame,frame.args.year .. args['1'])

end

return args['CurrMP'] or

--infobox(frame)

end

function loksabha.box(frame)

args = require('Module:Arguments').getArgs(frame, {

wrappers = 'Template:Infobox lok sabha constituency1' --test

})

if( args['2'] and args['2'] ~= ) then

loadloksabhadb(frame,frame.args.year .. args['1'])

elseif( args['1'] and args['1'] ~= ) then

--loadloksabhadb(frame,frame.args.year .. args['1'])

local entity=mw.wikibase.getEntityObject()

if entity then

--return entity.metatable.id

--return mw.dumpObject(entity)

end

--page id

if(entity ) then

if entity.id then QId = entity.id end

end

loadLokSabha(frame,frame.args.year .. args['1'])

end

return infobox(frame)

end

return loksabha

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/21 22:11:10