Modul:Kemijski identifikatori
Izvor: Hrvatska internetska enciklopedija
<templatestyles src="Modul:Dokumentacija/styles.css"></templatestyles>
Modul radi kao dio predloška {{Infookvir kemijski spoj}}.
Modul ima jednu javnu funkciju imena glavna.
Funkcija dohvaća identifikator članka na Wikidati, te traži kemijske identifikatore povezane uz stavku na Wikidati. Kemijski identifikatori se uspoređuju sa lokalnim vrijednostima, te se označavaju ovisno o poklapanjima.
Popis identifikatora i broj njihovog svojstva nalazi se u tablici imena identifikatori na početku modula. Tablica popisuje i sprema lokalnu vrijednost i vrijednost sa Wikidate u varijablama lokalnaval i WDval, respektivno.
Ovisno o podudarnosti, modul vraća:
- ako obje vrijednosti postoje i jednake su, vraća se lokalna vrijednost, znak ✓ i članak se svrstava u Kategorija:Kemijski identifikatori isti kao na Wikidati
- ako obje vrijednosti postoje ali nisu jednake, vraća se Wikidata vrijednost, znak X i Kategorija:Kemijski identifikatori različiti od Wikidate
- ako lokalni identifikator ne postoji, vraća se Wikidata vrijednost, znak ✓ i Kategorija:Podatci dohvaćeni sa Wikidate
- ako Wikidata identifikator ne postoji, vraća se lokalna vrijednost, znak ? i Kategorija:Kemijski identifikatori koji nisu prisutni na Wikidati
local p = {} local entityID = mw.wikibase.getEntityIdForCurrentPage() local identifikatori = { [0] = { ime = "CAS", WDprop = "P231", lokalnaval = "", WDval = "", link = "CAS registarski broj", vp = "https://chem.nlm.nih.gov/chemidplus/rn/$1"}, [1] = { ime = "EC", WDprop = "P232", lokalnaval = "", WDval = "", link = "EC registarski broj", vp = "https://echa.europa.eu/information-on-chemicals/ec-inventory"}, [2] = { ime = "UN", WDprop = "P695", lokalnaval = "", WDval = "", link = "UN broj", vp = "http://www.unece.org/fileadmin/DAM/trans/danger/publi/adr/adr2011/English/VolumeI.pdf"}, [3] = { ime = "RTECS", WDprop = "P657", lokalnaval = "", WDval = "", link = "RTECS broj", vp = "https://www.cdc.gov/niosh/npg/npgdrtec.html"}, [4] = { ime = "PubChem", WDprop = "P662", lokalnaval = "", WDval = "", link = "PubChem", vp = "https://pubchem.ncbi.nlm.nih.gov/compound/$1"}, } function dohvatiLokalneID(frame) local args = mw.getCurrentFrame():getParent().args for i,v in pairs(identifikatori) do identifikatori[i].lokalnaval = args[identifikatori[i].ime] or '' end end function dohvatiWikidataID(frame, entityID) if (entityID) then --ako je trenutna stranica povezana s wikidatom local entity = mw.wikibase.getEntity( entityID ) for i,v in pairs(identifikatori) do identifikatori[i].WDval = entity:formatPropertyValues( identifikatori[i].WDprop )["value"] end end end function p.dohvatiIdentifikatore(frame) dohvatiLokalneID(frame) dohvatiWikidataID(frame, entityID) local retval = '' local catbase = "Kemijski identifikatori" for i,v in pairs(identifikatori) do if (identifikatori[i].lokalnaval ~= '' and identifikatori[i].lokalnaval ~= '-' ) and identifikatori[i].WDval ~= '' then -- obje vrijednosti postoje if identifikatori[i].lokalnaval == identifikatori[i].WDval then --obje vrijednosti postoje i iste su retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>' .. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].lokalnaval) .. ' ' .. identifikatori[i].lokalnaval .. ']' .. ' <abbr style="color:limegreen;" title="Podatak je isti kao na Wikidati"><b>✓</b></abbr>' .. "[[Kategorija:" .. catbase .. " isti kao na Wikidati]]" else -- obje vrijednosti postoje no nisu iste retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>' .. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].WDval) .. " " .. identifikatori[i].WDval .. "]" .. ' <abbr style="color:red;" title="Podatak je različit od Wikidate (lokalni navodi '.. identifikatori[i].lokalnaval ..')><b>X</b></abbr>' .. "[[Kategorija:" .. catbase .. " različiti od Wikidate]]" end --obje jednake else -- ako jedan od podataka ne postoji if identifikatori[i].WDval ~= '' then -- WD postoji a lokalna ne postoji retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>' .. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].WDval) .. " " .. identifikatori[i].WDval .. "]" .. ' <abbr style="color:darkgreen;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>' .. "[[Kategorija:" .. catbase .. " dohvaćeni s Wikidate]]" else if identifikatori[i].lokalnaval ~= '' and identifikatori[i].lokalnaval ~= '-' then -- lokalna postoji a WD ne postoji retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>' .. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].lokalnaval) .. " " .. identifikatori[i].lokalnaval .. "]" .. ' <abbr style="color:darkgrey;" title="Nije moguće potvrditi; podatak nije prisutan na Wikidati"><b>?</b></abbr>' .. "[[Kategorija:" .. catbase .. " koji nisu prisutni na Wikidati]]" else retval = retval..'' end --WD postoji end --lokalna postoji end -- obje postoje end -- end do return retval end function p.dohvatiFormulu(frame) if (entityID) then --ako je trenutna stranica povezana s wikidatom return mw.wikibase .getEntity(entityID) :formatPropertyValues( 'P274')['value'] .. ' <abbr style="color:darkgreen; position: absolute;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>' .. '[[Kategorija:Kemijske formule dohvaćene s Wikidate]]' end end function p.dohvatiNFPA(frame) local ret = '\n|-\n| <b>[[NFPA 704]]</b>\n|' if (frame:getParent().args['NFPA 704'] ~= nil and frame:getParent().args['NFPA 704'] ~= '' ) then -- provjera - baza -- TODO dodati logiku usporedbe --mw.log(frame:getParent().args['NFPA 704']) local check = {} for capture in frame:getParent().args['NFPA 704']:gmatch('%a+ [012345]%.') do table.insert(check, capture) end mw.logObject(check) ret = ret .. frame:getParent().args['NFPA 704'] return ret else local WDprop = { ['property'] = 'P4952', ['pval'] = 'Q51139288', ['props'] = { ['H'] = { p = 'P993', val = '', wdval = ''}, ['F'] = { p = 'P994', val = '', wdval = ''}, ['R'] = { p = 'P995', val = '', wdval = ''}, ['O'] = { p = 'P877', val = '', wdval = ''}, } } if (entityID and mw.wikibase.getEntity( entityID )['claims'][WDprop['property']] ~= nil) then --ako je trenutna stranica povezana s wikidatom local entity = mw.wikibase.getEntity( entityID )['claims'][WDprop['property']][1] -- provjera valjanosti if (entity['mainsnak']['datavalue']['value']['id'] == WDprop.pval and entity['mainsnak']['property'] == WDprop.property) then mw.log('Provjera prolaz') for k, v in pairs(WDprop['props']) do if entity['qualifiers'][v['p']][1]['datavalue'] == nil then v['wdval'] = "0" else v['wdval'] = entity['qualifiers'][v['p']][1]['datavalue']['value'] end end ret = ret .. '\n'.. frame:expandTemplate{ title = 'NFPA 704', args = { H = WDprop['props']['H']['wdval'], F = WDprop['props']['F']['wdval'], R = WDprop['props']['R']['wdval'], O = WDprop['props']['O']['wdval'], } } ret = ret ..' <abbr style="color:darkgreen; position: absolute; line-height: 110px; padding-left: 10px;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>' .. '[[Kategorija:Kemijski identifikator NFPA 704 dohvaćen s Wikidate]]' end else ret = '' end end return ret end return p