Модуль:Automatic transliteration
Зовнішній вигляд
| Цей модуль на стадії К:пре-альфа (6). Він незавершений і може бути або не бути на стадії активної розробки. Його не можна використовувати на сторінках головного простору назв. Модулі залишаються на стадії пре-альфа, поки його розробник або інший редактор, який перебирає на себе обов'язки з розвитку модуля, якщо його протягом деякого часу не редагують, не буде задоволений з базовою структурою модуля. |
| Цей модуль залежить від наступних модулів: |
Рання версія модуля, що робить автоматичне створення транслітерації на основі вхідного тексту.
Використання
[ред. код]{{#invoke:Automatic transliteration|назва функції}}
Документація вище включена з Модуль:Automatic transliteration/документація. (ред. | історія)
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля.
Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки.
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля.
Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки.
local data = require ('Модуль:Automatic transliteration/data')
local invert = require('Модуль:TableTools').invert
local function split(test, separator)
if not (test and (test ~= '') and separator and (separator ~= '')) then
return ''
end
test = test .. separator
local splitted_table = test:gmatch('(%S+),%s*')
return splitted_table
end
local function invert_pairs (a_table)
local inverted_table = {}
for key, item in pairs(a_table) do
inverted_table[item] = key
end
return inverted_table
end
local function create_text (base_text, table_name, is_invert)
return mw.ustring.gsub(base_text, '.', is_invert and invert_pairs(data[table_name]) or data[table_name])
end
local function get_abbr_name(system_name)
local name = data.jaAbbrName[system_name]
return name .. ': '
end
local function look_for_transliteration (text, language)
for i, item in ipairs(data.jaFeature_obj) do
if mw.ustring.match(text, item) then
return data.jaFeature_name[i]
end
end
end
local function formated_text (base_text, language, systems, is_trans)
local table_name
local formed_text = ''
if is_trans then
local transl_name = look_for_transliteration(base_text, language)
base_text = create_text(base_text, transl_name, true)
error(base_text)
systems = systems .. ', ' .. transl_name:gsub(language, '')
end
if systems then
for item in split(systems, ',') do
table_name = language .. item
formed_text = formed_text .. get_abbr_name(table_name) .. create_text (base_text, table_name) .. ', '
end
else
formed_text = ''
end
return formed_text
end
local function _main(args)
local original_text = args[1] or args.original or args['оригінал']
local transliterad_text = args[2] or args.transliteration or args['транслітерація']
local systems = args[3] or args.systems or args['системи']
local formed_text
if original_text and not (original_text == '') then
formed_text = formated_text(original_text, 'ja', systems)
elseif transliterad_text and not (transliterad_text == '') then
formed_text = formated_text(transliterad_text, 'ja', systems, true)
else
formed_text = "Помилка: Не вказано текст, з якого створювати транслітерацію."
end
return formed_text
end
local function main (frame)
return _main(frame.args)
end
return {
main = main,
_main = _main
}