taraskevizer
Version:
Канвэртацыя акадэмічнага правапісу ў клясычны
143 lines (142 loc) • 4.63 kB
JavaScript
import { iwords } from '../iwords.js';
import { callableDict } from '../lib.js';
import { re } from '../../lib/index.js';
const common = {
lower: [
[
[/(?<=[аеёіоуўыэюяьʼ| >АЕЁІОУЎЫЭЮЯЬ]|^)е/g, 'je'],
[/(?<=[eаеёіоуўыэюяьʼ| >АЕЁІОУЎЫЭЮЯЬ]|^)ё/g, 'jo'],
[/(?<=[eoаеёіоуўыэюяьʼ| >АЕЁІОУЎЫЭЮЯЬ]|^)ю/g, 'ju'],
[/(?<=[eouаеёіоуўыэюяьʼ| >АЕЁІОУЎЫЭЮЯЬ]|^)я/g, 'ja'],
],
[
[/ʼ/g, ''],
[/ць/g, 'ć'],
[/зь/g, 'ź'],
[/сь/g, 'ś'],
[/нь/g, 'ń'],
[/ль/g, 'l'],
[/лі/g, 'li'],
[/ля/g, 'la'],
[/лё/g, 'lo'],
[/лю/g, 'lu'],
[/ле/g, 'le'],
[/а/g, 'a'],
[/б/g, 'b'],
[/в/g, 'v'],
[/г/g, 'h'],
[/ґ/g, 'g'],
[/д/g, 'd'],
[/е/g, 'ie'],
[/ё/g, 'io'],
[/ж/g, 'ž'],
[/з/g, 'z'],
[/і/g, 'i'],
[/й/g, 'j'],
[/к/g, 'k'],
[/л/g, 'ł'],
[/м/g, 'm'],
[/н/g, 'n'],
[/о/g, 'o'],
[/п/g, 'p'],
[/р/g, 'r'],
[/с/g, 's'],
[/т/g, 't'],
[/у/g, 'u'],
[/ў/g, 'ŭ'],
[/ф/g, 'f'],
[/х/g, 'ch'],
[/ц/g, 'c'],
[/ч/g, 'č'],
[/ш/g, 'š'],
[/ы/g, 'y'],
[/э/g, 'e'],
[/ю/g, 'iu'],
[/я/g, 'ia'],
],
],
upper: [
[
[/ Е(?=[ \p{P}\d]*\p{Lu}?\p{Ll})/gu, ' Je'],
[/ Ё(?=[ \p{P}\d]*\p{Lu}?\p{Ll})/gu, ' Jo'],
[/ Ю(?=[ \p{P}\d]*\p{Lu}?\p{Ll})/gu, ' Ju'],
[/ Я(?=[ \p{P}\d]*\p{Lu}?\p{Ll})/gu, ' Ja'],
],
[
[/([АЕЁІОУЎЫЭЮЯЬ| ]\(?)Е/g, '$1JE'],
[/([EАЕЁІОУЎЫЭЮЯЬ| ]\(?)Ё/g, '$1JO'],
[/([EOАЕЁІОУЎЫЭЮЯЬ| ]\(?)Ю/g, '$1JU'],
[/([EOUАЕЁІОУЎЫЭЮЯЬ| ]\(?)Я/g, '$1JA'],
],
[
[/Е/g, 'IE'],
[/Ё/g, 'IO'],
[/Ю/g, 'IU'],
[/Я/g, 'IA'],
[/Ц[Ьь]/g, 'Ć'],
[/З[Ьь]/g, 'Ź'],
[/С[Ьь]/g, 'Ś'],
[/Н[Ьь]/g, 'Ń'],
[/Л[Ьь]/g, 'L'],
[/А/g, 'A'],
[/Б/g, 'B'],
[/В/g, 'V'],
[/Г/g, 'H'],
[/Ґ/g, 'G'],
[/Д/g, 'D'],
[/Ж/g, 'Ž'],
[/З/g, 'Z'],
[/І/g, 'I'],
[/Й/g, 'J'],
[/К/g, 'K'],
[/Л/g, 'Ł'],
[/М/g, 'M'],
[/Н/g, 'N'],
[/О/g, 'O'],
[/П/g, 'P'],
[/Р/g, 'R'],
[/С/g, 'S'],
[/Т/g, 'T'],
[/У/g, 'U'],
[/Ў/g, 'Ŭ'],
[/Ф/g, 'F'],
[/ Х(?=[\p{Ll} ])/gu, ' Ch'],
[/Х/g, 'CH'],
[/Ц/g, 'C'],
[/Ч/g, 'Č'],
[/Ш/g, 'Š'],
[/Ы/g, 'Y'],
[/Э/g, 'E'],
[/Ł[Ii](?=[AEOUaeou])/g, 'L'],
[/Ł(?=[Ii])/g, 'L'],
],
],
};
export const latin = {
lower: callableDict([...common.lower[0], [/ʼі/g, 'ji'], ...common.lower[1]]),
upper: callableDict(common.upper.flat()),
};
export const latinJi = {
lower: callableDict([
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )і Ў/g, '$1j U'],
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )і ў/g, '$1j u'],
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )і /g, '$1j '],
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )І Ў/g, '$1J U'],
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )І ў/g, '$1J u'],
[/([аеёіоуыэюяАЕЁІОУЫЭЮЯ] )І /g, '$1J '],
[re.g(` і(?=${iwords})`), ' ji'],
[re.g(` І(?=${iwords})`), ' Ji'],
[re.g(` І(?=${iwords.toUpperCase()})`), ' JI'],
...common.lower[0],
[/([eouaаеёіоуыэюяʼАЕЁІОУЫЭЮЯЬ] *)і/g, '$1ji'],
...common.lower[1],
]),
upper: callableDict([
...common.upper[0],
[/([eoua] *)І(?=[ \p{P}\d]*\p{Lu}?\p{Ll})/gu, '$1Ji'],
...common.upper[1],
[/([AOEUАЕЁІОУЎЫЭЮЯ][( ]*)І/g, '$1JI'],
...common.upper[2],
[/ JIŁ -/g, ' IŁ -'],
]),
};