Модуль:ChemElement
Зовнішній вигляд
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
У документації цього модуля не вистачає або відсутній опис його функціоналу, або параметрів у його коді. Будь ласка, допоможіть покращити її. |
Модуль використовується для реалізації функціональності шаблону {{Нуклід}}.
Використання
[ред. код]{{#invoke: ChemElement|nuclide_ref| гідроген | 2}}
— 2H{{#invoke: ChemElement|nuclide_ref|гідроген||3}}
— 31H{{#invoke: ChemElement|nuclide_ref|гідроген||3|посилання= так }}
— 31H{{#invoke: ChemElement|nuclide_ref|водень||3|посилання = ні }}
— 31H{{#invoke: ChemElement|nuclide_ref|Уран||238|посилання = ні }}
— 23892U
Документація вище включена з Модуль:ChemElement/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
local m = {}
m.names_num = {
["h"] = 1, ["hydrogen"] = 1, ["водень"] = 1, ["гідроген"] = 1,
["d"] = 1, ["deuterium"] = 1, ["дейтерій"] = 1,
["t"] = 1, ["tritium"] = 1, ["тритій"] = 1,
["he"] = 2, ["helium"] = 2, ["гелій"] = 2,
["li"] = 3, ["lithium"] = 3, ["літій"] = 3,
["be"] = 4, ["beryllium"] = 4, ["берилій"] = 4,
["b"] = 5, ["boron"] = 5, ["бор"] = 5,
["c"] = 6, ["carbon"] = 6, ["вуглець"] = 6, ["карбон"] = 6,
["n"] = 7, ["nitrogen"] = 7, ["азот"] = 7, ["нітроген"] = 7,
["o"] = 8, ["oxygen"] = 8, ["кисень"] = 8, ["оксиген"] = 8,
["f"] = 9, ["fluorine"] = 9, ["фтор"] = 9, ["флуор"] = 9,
["ne"] = 10, ["neon"] = 10, ["неон"] = 10,
["na"] = 11, ["sodium"] = 11, ["натрій"] = 11,
["mg"] = 12, ["magnesium"] = 12, ["магній"] = 12,
["al"] = 13, ["aluminium"] = 13, ["алюміній"] = 13,
["si"] = 14, ["silicon"] = 14, ["кремній"] = 14, ["силіцій"] = 14,
["p"] = 15, ["phosphorus"]= 15, ["фосфор"] = 15,
["s"] = 16, ["sulfur"] = 16, ["сірка"] = 16, ["сульфур"] = 16,
["cl"] = 17, ["chlorine"] = 17, ["хлор"] = 17,
["ar"] = 18, ["argon"] = 18, ["аргон"] = 18,
["k"] = 19, ["potassium"] = 19, ["калій"] = 19,
["ca"] = 20, ["calcium"] = 20, ["кальцій"] = 20,
["sc"] = 21, ["scandium"] = 21, ["скандій"] = 21,
["ti"] = 22, ["titanium"] = 22, ["титан"] = 22,
["v"] = 23, ["vanadium"] = 23, ["ванадій"] = 23,
["cr"] = 24, ["chromium"] = 24, ["хром"] = 24,
["mn"] = 25, ["manganese"] = 25, ["марганець"] = 25, ["манган"] = 25,
["fe"] = 26, ["iron"] = 26, ["залізо"] = 26, ["ферум"] = 26,
["co"] = 27, ["cobalt"] = 27, ["кобальт"] = 27,
["ni"] = 28, ["nickel"] = 28, ["нікель"] = 28,
["cu"] = 29, ["copper"] = 29, ["мідь"] = 29, ["купрум"] = 29,
["zn"] = 30, ["zinc"] = 30, ["цинк"] = 30,
["ga"] = 31, ["gallium"] = 31, ["галій"] = 31,
["ge"] = 32, ["germanium"] = 32, ["германій"] = 32,
["as"] = 33, ["arsenic"] = 33, ["миш'як"] = 33, ["арсен"] = 33,
["se"] = 34, ["selenium"] = 34, ["селен"] = 34,
["br"] = 35, ["bromine"] = 35, ["бром"] = 35,
["kr"] = 36, ["krypton"] = 36, ["криптон"] = 36,
["rb"] = 37, ["rubidium"] = 37, ["рубідій"] = 37,
["sr"] = 38, ["strontium"] = 38, ["стронцій"] = 38,
["y"] = 39, ["yttrium"] = 39, ["ітрій"] = 39,
["zr"] = 40, ["zirconium"] = 40, ["цирконій"] = 40,
["nb"] = 41, ["niobium"] = 41, ["ніобій"] = 41,
["mo"] = 42, ["molybdenum"]= 42, ["молібден"] = 42,
["tc"] = 43, ["technetium"]= 43, ["технецій"] = 43,
["ru"] = 44, ["ruthenium"] = 44, ["рутеній"] = 44,
["rh"] = 45, ["rhodium"] = 45, ["родій"] = 45,
["pd"] = 46, ["palladium"] = 46, ["паладій"] = 46,
["ag"] = 47, ["silver"] = 47, ["срібло"] = 47, ["аргентум"] = 47,
["cd"] = 48, ["cadmium"] = 48, ["кадмій"] = 48,
["in"] = 49, ["indium"] = 49, ["індій"] = 49,
["sn"] = 50, ["tin"] = 50, ["олово"] = 50, ["станум"] = 50,
["sb"] = 51, ["antimony"] = 51, ["сурма"] = 51, ["стибій"] = 51,
["te"] = 52, ["tellurium"] = 52, ["телур"] = 52,
["i"] = 53, ["iodine"] = 53, ["йод"] = 53,
["xe"] = 54, ["xenon"] = 54, ["ксенон"] = 54,
["cs"] = 55, ["caesium"] = 55, ["цезій"] = 55,
["ba"] = 56, ["barium"] = 56, ["барій"] = 56,
["la"] = 57, ["lanthanum"] = 57, ["лантан"] = 57,
["ce"] = 58, ["cerium"] = 58, ["церій"] = 58,
["pr"] = 59, ["praseodymium"]= 59,["празеодим"] = 59,
["nd"] = 60, ["neodymium"] = 60, ["неодим"] = 60,
["pm"] = 61, ["promethium"]= 61, ["прометій"] = 61,
["sm"] = 62, ["samarium"] = 62, ["самарій"] = 62,
["eu"] = 63, ["europium"] = 63, ["європій"] = 63,
["gd"] = 64, ["gadolinium"]= 64, ["гадоліній"] = 64,
["tb"] = 65, ["terbium"] = 65, ["тербій"] = 65,
["dy"] = 66, ["dysprosium"]= 66, ["диспрозій"] = 66,
["ho"] = 67, ["holmium"] = 67, ["гольмій"] = 67,
["er"] = 68, ["erbium"] = 68, ["ербій"] = 68,
["tm"] = 69, ["thulium"] = 69, ["тулій"] = 69,
["yb"] = 70, ["ytterbium"] = 70, ["ітербій"] = 70,
["lu"] = 71, ["lutetium"] = 71, ["лютецій"] = 71,
["hf"] = 72, ["hafnium"] = 72, ["гафній"] = 72,
["ta"] = 73, ["tantalum"] = 73, ["тантал"] = 73,
["w"] = 74, ["tungsten"] = 74, ["вольфрам"] = 74,
["re"] = 75, ["rhenium"] = 75, ["реній"] = 75,
["os"] = 76, ["osmium"] = 76, ["осмій"] = 76,
["ir"] = 77, ["iridium"] = 77, ["іридій"] = 77,
["pt"] = 78, ["platinum"] = 78, ["платина"] = 78,
["au"] = 79, ["gold"] = 79, ["золото"] = 79, ["аурум"] = 79,
["hg"] = 80, ["mercury"] = 80, ["ртуть"] = 80, ["меркурій"] = 80, ["гідраргірум"] = 80,
["tl"] = 81, ["thallium"] = 81, ["талій"] = 81,
["pb"] = 82, ["lead"] = 82, ["свинець"] = 82, ["плюмбум"] = 82,
["bi"] = 83, ["bismuth"] = 83, ["вісмут"] = 83, ["бісмут"] = 83,
["po"] = 84, ["polonium"] = 84, ["полоній"] = 84,
["at"] = 85, ["astatine"] = 85, ["астат"] = 85,
["rn"] = 86, ["radon"] = 86, ["радон"] = 86,
["fr"] = 87, ["francium"] = 87, ["францій"] = 87,
["ra"] = 88, ["radium"] = 88, ["радій"] = 88,
["ac"] = 89, ["actinium"] = 89, ["актиній"] = 89,
["th"] = 90, ["thorium"] = 90, ["торій"] = 90,
["pa"] = 91, ["protactinium"]= 91,["протактиній"] = 91,
["u"] = 92, ["uranium"] = 92, ["уран"] = 92,
["np"] = 93, ["neptunium"] = 93, ["нептуній"] = 93,
["pu"] = 94, ["plutonium"] = 94, ["плутоній"] = 94,
["am"] = 95, ["americium"] = 95, ["америцій"] = 95,
["cm"] = 96, ["curium"] = 96, ["кюрій"] = 96,
["bk"] = 97, ["berkelium"] = 97, ["берклій"] = 97,
["cf"] = 98, ["californium"]= 98, ["каліфорній"]= 98,
["es"] = 99, ["einsteinium"]= 99, ["ейнштейній"]= 99,
["fm"] = 100, ["fermium"] = 100, ["фермій"] = 100,
["md"] = 101, ["mendelevium"]= 101,["менделєвій"]= 101,
["no"] = 102, ["nobelium"] = 102, ["нобелій"] = 102,
["lr"] = 103, ["lawrencium"]= 103, ["лоуренсій"] = 103,
["rf"] = 104, ["rutherfordium"] = 104, ["резерфордій"] = 104,
["db"] = 105, ["dubnium"] = 105, ["дубній"] = 105,
["sg"] = 106, ["seaborgium"]= 106, ["сіборгій"] = 106,
["bh"] = 107, ["bohrium"] = 107, ["борій"] = 107,
["hs"] = 108, ["hassium"] = 108, ["гасій"] = 108,
["mt"] = 109, ["meitnerium"]= 109, ["мейтнерій"] = 109,
["ds"] = 110, ["darmstadtium"] = 110, ["дармштадтій"] = 110,
["rg"] = 111, ["roentgenium"] = 111, ["рентгеній"] = 111,
["cn"] = 112, ["copernicium"] = 112, ["коперницій"] = 112,
["uut"] = 113, ["ununtrium"] = 113, ["унунтрій"] = 113,
["fl"] = 114, ["flerovium"] = 114, ["флеровій"] = 114,
["uup"] = 115, ["ununpentium"] = 115, ["унунпентій"] = 115,
["lv"] = 116, ["livermorium"] = 116, ["ліверморій"] = 116,
["uus"] = 117, ["ununseptium"] = 117, ["унунсептій"] = 117,
["uuo"] = 118, ["ununoctium"] = 118, ["унуноктій"] = 118,
["uue"] = 119, ["ununennium"] = 119, ["унуненній"] = 119
}
m.symbols = {
"H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl",
"Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As",
"Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In",
"Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb",
"Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl",
"Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk",
"Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Uut",
"Fl", "Uup", "Lv", "Uus", "Uuo", "Uue", "Ubn", "Ubu", "Ubb", "Ubt", "Ubq", "Ubp", "Ubh"
}
m.wikinames = {
"Водень", "Гелій", "Літій", "Берилій", "Бор", "Вуглець", "Азот", "Кисень", "Фтор", "Неон",
"Натрій", "Магній", "Алюміній", "Кремній", "Фосфор", "Сірка", "Хлор", "Аргон",
"Калій", "Кальцій", "Скандій", "Титан", "Ванадій", "Хром", "Манган", "Залізо",
"Кобальт", "Нікель", "Мідь", "Цинк", "Галій", "Германій", "Арсен", "Селен", "Бром",
"Криптон", "Рубідій", "Стронцій", "Ітрій", "Цирконій", "Ніобій", "Молібден",
"Технецій", "Рутеній", "Родій", "Паладій", "Срібло", "Кадмій", "Індій", "Олово",
"Стибій", "Телур", "Йод", "Ксенон", "Цезій", "Барій", "Лантан", "Церій", "Празеодим",
"Неодим", "Прометій", "Самарій", "Європій", "Гадоліній", "Тербій", "Диспрозій", "Гольмій",
"Ербій", "Тулій", "Ітербій", "Лютецій", "Гафній", "Тантал", "Вольфрам", "Реній",
"Осмій", "Іридій", "Платина", "Золото", "Ртуть", "Талій", "Свинець", "Бісмут", "Полоній",
"Астат", "Радон", "Францій", "Радій", "Актиній", "Торій", "Протактиній", "Уран",
"Нептуній", "Плутоній", "Америцій", "Кюрій", "Берклій", "Каліфорній", "Ейнштейній",
"Фермій", "Менделєвій", "Нобелій", "Лоуренсій", "Резерфордій", "Дубній", "Сіборгій",
"Борій", "Гасій", "Мейтнерій", "Дармштадтій", "Рентгеній", "Коперницій", "Унунтрій",
"Флеровій", "Унунпентій", "Ліверморій", "Унунсептій", "Унуноктій", "Унуненній",
"Унбінілій", "Унбіуній", "Унбібій", "Унбітрій", "Унбіквадій", "Унбіпентій", "Унбігексій"
}
function m._error(message)
return '<strong class="error">' .. message .. '</strong>'
end
function m.number(frame)
-- отримуємо назву елемента з параметрів без пробілів і в нижньому регістрі
local name = mw.ustring.lower(frame.args[1]:gsub("%s+", ""))
-- повертаємо порядковий номер елемента
local num = m.names_num[name]
if not num then
return m._error('Некоректний елемент: ' .. name)
end
return num
end
function m.symbol(frame)
local num = tonumber(frame.args[1])
if not num then
return m._error('Некоректний номер елемента: ' .. frame.args[1])
end
return m.symbols[num]
end
function m.symbol_by_name(frame)
local name = mw.ustring.lower(frame.args[1]:gsub("%s+", ""))
local num = m.names_num[name]
if not num then
return m._error('Некоректний елемент: ' .. frame.args[1])
end
return m.symbols[num]
end
function m.wikiname(frame)
local num = tonumber(frame.args[1])
if not num then
return m._error('Некоректний номер елемента: ' .. frame.args[1])
end
return m.wikinames[num]
end
function m._name(a, z, symbol, anti)
if not a and not z then
return symbol
end
local res = '<span style="white-space: nowrap;"><span style="display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:bottom;min-height:1em;font-size:80%;line-height:1;margin-bottom:-0.1em;overflow:visible;text-align:right">'
local resa = ''
if a then
resa = '<span style="display:block;min-height:1em;margin-top:-1.1em;line-height:1;background:transparent;overflow:visible">' .. tostring(a) .. '</span>'
end
local resz = ''
if z then
resz = '<span style="display:block;min-height:1em;background:transparent;line-height:1;overflow:visible">' .. tostring(z) .. '</span>'
end
local sym = (anti and anti == "так") and ('<span style="text-decoration:overline;">' .. symbol .. '</span>') or symbol
return res .. resa .. resz .. '</span>' .. sym .. '</span>'
end
function m.nuclide_ref(frame)
-- отримуємо назву елемента з параметрів без пробілів і в нижньому регістрі
local name = mw.ustring.lower(frame.args[1]:gsub("%s+", ""))
-- отримуємо порядковий номер елемента
local num = m.names_num[name]
-- перевіримо, чи знайдено такий елемент
if not num then
return m._error('Некоректний елемент: ' .. name)
end
-- отримаємо масове число
local a = frame.args[2]
-- це антиелемент?
local anti = frame.args["анти"]
-- формуємо кінцеве позначення
local res = nil
-- в залежності від того, чи є другий аргумент, чи немає,
-- формуємо різні позначення для нуклідів
if not a or a == "" then
a = frame.args[3]
res = m._name(a, num, m.symbols[num], anti)
else
res = m._name(a, nil, m.symbols[num], anti)
end
-- чи потрібне посилання?
local use_link = frame.args["посилання"]
-- повертаємо позначення з посиланням
if use_link and use_link == "так" then
return '[[' .. m.wikinames[num] .. "-" .. tostring(a) .. '|' .. res .. ']]'
end
-- повертаємо тільки позначення
return res
end
return m