Модуль:Automatic transliteration

![]() | Цей модуль на стадії К:пре-альфа (5). Він незавершений і може бути або не бути на стадії активної розробки. Його не можна використовувати на сторінках головного простору назв. Модулі залишаються на стадії пре-альфа, поки перший редактор (або хтось, хто перебирає на себе обов'язки з розвитку модуля, якщо його протягом деякого часу не редагують) не буде задоволений з базовою структурою модуля. |
![]() | Цей модуль залежить від наступних модулів: |
Рання версія модуля, що робить автоматичне створення транслітерації на основі вхідного тексту.
Використання
[ред. код]{{#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 }