Модуль:ChemTitle
Перейти к навигации
Перейти к поиску
Реализация шаблона {{Химический заголовок}}.
Тесты
[править код]Все тесты успешно пройдены: 8
Тест | Ожидаемое значение | Фактическое значение | |
---|---|---|---|
Гидроксид-ион | Гидроксид-ион | Гидроксид-ион | |
1,3-динитробензол | 1,3-динитробензол | 1,3-динитробензол | |
Пара-метоксиметамфетамин | пара-метоксиметамфетамин | пара-метоксиметамфетамин | |
Цис-1,2,3,5-транс-4,6-циклогексангексаол | цис-1,2,3,5-транс-4,6-циклогексангексаол | цис-1,2,3,5-транс-4,6-циклогексангексаол | |
Октахлородиренат(III) тетра-н-бутиламмония | Октахлородиренат(III) тетра-н-бутиламмония | Октахлородиренат(III) тетра-н-бутиламмония | |
(S)-1-амино-2-метоксиметилпирролидин | (S)-1-амино-2-метоксиметилпирролидин | (S)-1-амино-2-метоксиметилпирролидин | |
(дикислород)бис(трифенилфосфин)платина | (дикислород)бис(трифенилфосфин)платина | (дикислород)бис(трифенилфосфин)платина |
local p = {}
local prefixes = {
['втор'] = true,
['м'] = true,
['мета'] = true,
['н'] = true,
['о'] = true,
['орто'] = true,
['п'] = true,
['пара'] = true,
['транс'] = true,
['трет'] = true,
['цис'] = true,
}
function p.formatTitle( title )
parts = mw.text.split( title, '-' )
local first = true
for pos, value in ipairs( parts ) do
if mw.ustring.match( value, '[0-9,]+' ) then
-- pass
elseif prefixes[ mw.ustring.lower( value ) ] then
parts[ pos ] = "''" .. mw.ustring.lower( value ) .. "''"
elseif first then
local charPos = string.find( value, '[А-ЯЁа-яё]' )
if charPos then
local firstChar = mw.ustring.sub( value, charPos, charPos )
if not mw.ustring.match( firstChar, '[А-ЯЁ]' ) then
parts[ pos ] = mw.ustring.sub( value, 1, charPos - 1 )
.. '<span style="text-transform:uppercase">' .. firstChar .. '</span>'
.. mw.ustring.sub( value, charPos + 1 )
end
end
if charPos ~= nil then
first = false
end
end
end
return table.concat( parts, '-' )
end
function p.main( frame )
frame = frame or mw.getCurrentFrame()
title = mw.title.getCurrentTitle()
niceTitle = p.formatTitle( title.fullText )
if title ~= niceTitle then
return frame:callParserFunction( 'DISPLAYTITLE', niceTitle, 'noerror' )
end
end
return p