webapp/src/intl/prepositions.ts

228 lines
3.5 KiB
TypeScript
Raw Normal View History

2024-07-05 19:40:54 +00:00
export const dictionaryBefore = [
2024-07-05 21:09:56 +00:00
'а',
'без',
'в',
'во',
'до',
'за',
'из',
'к',
'ко',
'на',
'над',
'о',
'об',
'от',
'по',
'под',
'при',
'про',
'с',
'со',
'у',
'через',
'близ',
'вне',
'для',
'меж',
'ради',
'среди',
'около',
'против',
'между',
'перед',
'вокруг',
'возле',
'и',
'но',
'да',
'или',
'либо',
'ни',
'как',
'то',
'не',
'что',
'ведь',
'вот',
'вон',
'именно',
'лишь',
'просто',
'прямо',
'только',
'даже',
'уже',
'еще',
'все',
'однако',
'хоть',
'хотя',
'будто',
'словно',
'точно',
'ровно',
'так',
'если',
'чтобы',
'вдруг',
'опять',
'снова',
'вновь',
'тоже',
'также',
'почти',
'едва',
'чуть',
'совсем',
'совершенно',
'абсолютно',
'мол',
'дескать',
'якобы',
'авось',
'небось',
'никак',
'неужели',
'разве',
'ужели',
'вряд',
'пусть',
'пускай',
'давай',
'давайте',
'нет',
'конечно',
'несомненно',
'безусловно',
'итак',
'следовательно',
'значит',
'поэтому',
'потому',
'вообще',
'кстати',
'кроме',
'впрочем',
'однако',
'это',
'эта',
'этот',
'эти',
'та',
'тот',
'те',
'ну',
'аж',
'вплоть',
'ведь',
'весьма',
'крайне',
'очень',
'слишком',
'всего',
'всего-навсего',
'лишь',
'только',
'исключительно',
'вроде',
'типа',
'наподобие',
'когда',
'куда',
'откуда',
'зачем',
'почему',
'отчего',
'где',
'кто',
'кого',
'кому',
'кем',
'который',
'которая',
'которое',
'которые',
'чей',
'чья',
'чье',
'чьи',
'каков',
'какова',
'каково',
'каковы',
'сколько',
'насколько',
'настолько',
'пока',
'пока не',
'едва',
'едва не',
'чем',
'нежели',
'словно',
'будто',
'хоть',
'хотя',
'пускай',
'пусть',
'раз',
'раз уж',
'коли',
'коль',
'чуть',
'чуть ли не',
2024-07-08 14:51:55 +00:00
'чуть не',
'a',
'to',
'in',
'into',
'from',
'get',
'of',
'out',
'the',
'is',
'are',
'be',
'at'
2024-07-05 19:40:54 +00:00
]
export const dictionaryAfter = [
2024-07-05 21:09:56 +00:00
'ли',
'же',
'бы',
'б',
'ж',
2024-07-05 19:40:54 +00:00
'таки',
2024-07-05 21:09:56 +00:00
'как',
'так',
'эдак',
'эти',
'это',
'эта',
'этот',
'те',
'то',
'та',
'тот',
'а',
'и',
'но',
'да',
'нет'
2024-07-05 19:40:54 +00:00
]
export const processPrepositions = (text: string): string => {
const prepositionRegexBefore = new RegExp(`(^|\\s)(${dictionaryBefore.join('|')})(\\s|$)`, 'gmi')
const prepositionRegexAfter = new RegExp(`(\\S+)\\s+(${dictionaryAfter.join('|')})(\\s|$)`, 'gmi')
return text
.replace(prepositionRegexBefore, (_match, start, word, _end) => {
return `${start}${word} `
})
.replace(prepositionRegexAfter, (_match, word, particle, end) => {
return `${word} ${particle}${end}`
})
}