Модул:AutoDescriptionGalaxy
Документация за този модул може да бъде създадена на Модул:AutoDescriptionGalaxy/doc
--[[
------------------------------------------
-- AutoDescriptionGalaxy
-- Модуль для заполнения галактик.
------------------------------------------
--]]
local Dates = require("Module:Dates")
local Declension = require("Module:Declension")
local Langs = require("Module:Langs")
local MathTonumber = require("Module:Math/tonumber")
local ReturnGendered = require("Module:ReturnGendered")
local SerializeTable = require("Module:SerializeTable")
local Math = require("Module:Math")
local AutoDescriptionGalaxy={}
-- Нам необходимо сформировать и вернуть три переменных
local description = "" -- уточнение
local details = "" -- строка описания
local categories = "[[Категория:Галактики по азбучен ред]]" .. "[[Категория:Астрономически обекти по азбучен ред]]" -- категории-- Промежуточный масив сущностей, в который помещаются результаты парсинга перед формированием описания
local entitiesArray = {catalog={}, code={}, constellation="", redShift="", UGC="", DDO=""}
local entitiesArrayP = {P31="", P59="", P61="", P223="", P528="", P575="", P1090="", P1215="", P2067="", P2583="", P6257="", P6258=""}
local priority = {}
-- Точка входа
function AutoDescriptionGalaxy.launch(entity)
AutoDescriptionGalaxy.parsing(entity) -- парсим карточку викиданных
AutoDescriptionGalaxy.forming() -- формируем переменные
return details, description, categories
end
-- Последовательно проходим свойства в карточке викиданных, для формирования массива сущностей entitiesArray
function AutoDescriptionGalaxy.parsing(entity)
AutoDescriptionGalaxy.parseP31(entity)
entitiesArrayP["P59"]=AutoDescriptionGalaxy.parseP59(entity)
entitiesArrayP["P61"]=AutoDescriptionGalaxy.parseP61(entity)
entitiesArrayP["P223"]= AutoDescriptionGalaxy.parseP223(entity)
entitiesArrayP["P528"]=AutoDescriptionGalaxy.parseP528(entity)
entitiesArrayP["P575"]=AutoDescriptionGalaxy.parseP575(entity)
entitiesArrayP["P1090"]=AutoDescriptionGalaxy.parseP1090(entity)
entitiesArrayP["P1215"]=AutoDescriptionGalaxy.parseP1215(entity)
entitiesArrayP["P2067"]=AutoDescriptionGalaxy.parseP2067(entity)
entitiesArrayP["P2583"]=AutoDescriptionGalaxy.parseP2583(entity)
entitiesArrayP["P6257"]=AutoDescriptionGalaxy.parseP6257(entity)
entitiesArrayP["P6258"]=AutoDescriptionGalaxy.parseP6258(entity)
end
function AutoDescriptionGalaxy.forming()
if(entitiesArray["UGC"] ~= "") or (entitiesArray["DDO"] ~= "") then
local det=""
details = details .. "(также известен как"
if(entitiesArray["UGC"] ~= "") then det = det .. " [[Общ каталог на галактиките Упсала|" .. entitiesArray.UGC .. "]]," end
if(entitiesArray["DDO"] ~= "") then det = det .. " [[Каталог на обсерваторията на Дейвид Данлапа|" .. entitiesArray.DDO .. "]]," end
det=det:sub(1, #det - 1)
details = details .. det
details = details .. ")"
end
if(entitiesArrayP["P31"] == "галактика") then description = description .. "[[Галактики|галактика]]"
else description = description .. "[[" .. entitiesArrayP.P31 .. "]]" end
if(entitiesArray["constellation"] ~= "") then
if (string.find(entitiesArray["constellation"], ",") ) then
else description = description .. " [[" .. entitiesArray["constellation"] .. " (созвездие)|созвездия " .. entitiesArray["constellation"] .. "]]." end
else description = description .. "." end
if(entitiesArrayP["P223"] ~= "") then
description = description .. " [[Морфологическа класификация на галактиките|Морфологически тип галактики]]: " .. entitiesArrayP.P223 .. "."
end
if(entitiesArrayP["P1215"] ~= "") then
description = description .. " [[Видима звездна величина|Блясък]]: " .. entitiesArrayP.P1215 .. "."
end
if(entitiesArrayP["P2067"] ~= "") then description = description .. " Маса: " .. entitiesArray["mass"] .. "M☉ ([[Солнечная масса|M☉]] = (1,98847 ± 0,00007)⋅10<sup>30</sup> кг)." end
if(entitiesArrayP["P575"] ~= "") then description = description .. " Открита [[" .. entitiesArrayP.P575 .. " год]]у." end
if(entitiesArrayP["P61"] ~= "") then description = description .. " Първооткривател — [[" .. entitiesArrayP.P61 .. "]]." end
if(entitiesArrayP["P1090"] ~= "") then description = description .. " [[Червено отместване]]: " .. entitiesArrayP.P1090 .. '.' end
if(entitiesArrayP["P2583"] == "full") then description = description .. " Разстояние от [[Земя|Земята]]: " .. entitiesArray.distanceFromEarth .. " в cветлинни години." end
if(entitiesArrayP["P6257"] ~= "") then description = description .. " [[Пряко възхождение]]: " .. entitiesArrayP.P6257 .. '.' end
if(entitiesArrayP["P6258"] ~= "") then description = description .. " [[Склонение]]: " .. entitiesArrayP.P6258 .. '.' end
if(entitiesArrayP["P528"] == "full") then
description = description .. " <br><br>Код в каталоге: "
for k, v in pairs (entitiesArray.code) do
if(v ~= " ") then
if (entitiesArray["catalog"][k] ~= " ") then description = description .. v .. ' ([[' .. entitiesArray['catalog'][k] .. ']])' .. ", "
else description = description .. v .. ", " end
end
end
description=description:sub(1, #description - 2)
description=description..". "
end
if(entitiesArray["constellation"] ~= "") then
if (string.find(entitiesArray["constellation"], ",") ) then
else categories = categories .. "[[Категория:Галактики съзвездия " .. entitiesArray["constellation"] .. "]]" end
end
if(entitiesArrayP["P528"] == "full") then
for k, v in pairs (entitiesArray.code) do
if(v ~= " ") then
if (entitiesArray["catalog"][k] ~= " ") then categories = categories .. "[[Категория:" .. entitiesArray["catalog"][k] .. "]]" end
end
end
end
if(entitiesArrayP["P223"] ~= "") then
categories = categories .. "[[Категория:" .. entitiesArrayP.P223 .. " (Морфологически тип галактики)]]"
end
end
function AutoDescriptionGalaxy.parseP31(entity)
local value = entity:formatPropertyValues("P31",mw.wikibase.entity.claimRanks).value
if(value ~= "") then entitiesArrayP["P31"]=value end
end
function AutoDescriptionGalaxy.parseP59(entity)
local value = entity:formatPropertyValues("P59",mw.wikibase.entity.claimRanks).value
if(value ~= "") then
entitiesArray["constellation"]=value
return value
else return "" end
end
function AutoDescriptionGalaxy.parseP61(entity)
local value = entity:formatPropertyValues("P61",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP223(entity)
local value = entity:formatPropertyValues("P223",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP528(entity)
local p528Statements=mw.wikibase.getBestStatements(entity:getId(), 'P528' )
i=1
for ki, vi in pairs (p528Statements) do
local catalog=""
local code=""
if(vi['qualifiers'] ~= nil) then
if((vi['qualifiers']['P972'] ~= nil)) then catalog=vi['qualifiers']['P972'][1]['datavalue']['value']['id'] end
if((vi['mainsnak'] ~= nil)) then code=vi['mainsnak']['datavalue']['value'] end
if (catalog ~= "") then entitiesArray["catalog"][i] = mw.wikibase.getLabel(catalog)
else entitiesArray["catalog"][i] = " " end
if (code ~= "") then entitiesArray["code"][i] = code
else entitiesArray["code"][i] = " " end
i=i+1
end
if (catalog ~= "") then
if (catalog == "Q2074058") then entitiesArray["DDO"] = code
elseif (catalog == "Q615925") then entitiesArray["UGC"] = code
else end
end
end
if (i>1) then return "full"
else return "" end
end
function AutoDescriptionGalaxy.parseP575(entity)
local value = entity:formatPropertyValues("P575",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP1090(entity)
local value = entity:formatPropertyValues("P1090",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP1215(entity)
local value = entity:formatPropertyValues("P1215",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP2067(entity)
local value = entity:formatPropertyValues("P2067",mw.wikibase.entity.claimRanks).value
if(value ~= "") then
entitiesArray["mass"]=MathTonumber.integerModule(value)
return value
else return "" end
end
function AutoDescriptionGalaxy.parseP2583(entity)
local p2583Statements=entity:getAllStatements("P2583")
local i=1
for ki, vi in pairs (p2583Statements) do
local amount=""
local upperBound=""
local erroR=""
if(vi['mainsnak'] ~= nil) then
if(vi['mainsnak']['datavalue']['value']['amount'] ~= nil) then amount=vi['mainsnak']['datavalue']['value']['amount'] end
if(vi['mainsnak']['datavalue']['value']['upperBound'] ~= nil) then
upperBound=vi['mainsnak']['datavalue']['value']['upperBound']
erroR=MathTonumber.integerModule(upperBound)-MathTonumber.integerModule(amount)
end
if (erroR ~= "") then entitiesArray["distanceFromEarth"] = MathTonumber.integerModule(amount).."±"..erroR
else entitiesArray["distanceFromEarth"] = MathTonumber.integerModule(amount) end
i=i+1
end
end
if(i>1) then return "full" end
end
function AutoDescriptionGalaxy.parseP6257(entity)
local value = entity:formatPropertyValues("P6257",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
function AutoDescriptionGalaxy.parseP6258(entity)
local value = entity:formatPropertyValues("P6258",mw.wikibase.entity.claimRanks).value
if(value ~= "") then return value
else return "" end
end
return AutoDescriptionGalaxy