ermouth: (Default)
[personal profile] ermouth

Вдруг пригодится кому, я не нашёл в сети русские переносы более-менее автоматические ни два года назад, ни сейчас. Ни на javascript, ни по-другому, так что может ещё кому пригодится.

Оно неидеальное, конечно. Пропускает слова с дефисами и цифрами, граничащие с тэгами, в скобках. Но в целом вполне приличные результаты. Расставляются символы мягкого переноса, это которые ­ в HTML. Их не видно если в консоли запустить, зато хорошо видно в вёрстке.


var shy =  function (s) {
	return s
	.replace(/\s+/g," ")
	.replace(/^\s|\s$/g,"")
	.replace(/([а-яё])([\.,;])([а-яё])/gi,"$1$2 $3")
	.split(" ").map(function(w) { 
		return w
		.replace(/^(верх|ниж|зад)(не)/i,"$1ᴥ$2ᴥ")
		.replace(/^(су|ги)(пер)/i,"$1ᴥ$2ᴥ")
		.replace(/^(над|под|пара|без|раз|суб|бес|за|пере)/i,"$1ᴥ")
		.replace(/^([а-яё]+?[б-джзй-нп-тф-щ][аеёиоуыэюя])([аеёиоуыэюя][а-яё]+)/gi,"$1ᴥ$2")
		.replace(/([аеёоуыэюя][б-джзй-нп-тф-щ][ъь])([б-джзй-нп-тф-щ][а-яё])/gi,"$1ᴥ$2")
		.replace(/([аеёиоуыэюяйᴥ][б-джзй-нп-тф-щъь])([б-джзй-нп-тф-щ][б-джзй-нп-тф-щ]*?[аеёиоуыэюяй][а-яёᴥ]*?)/gi,"$1ᴥ$2")
		.replace(/([а-яё]{2}[аеёиоуыэюя])([б-джзк-нп-тф-щ][а-щыэ-яё])/gi,"$1ᴥ$2")
		.replace(/([а-яё]{2}[б-джзк-нп-тф-щ])([аеёиоуыэюя][а-яё])/gi,"$1ᴥ$2")
		.replace(/(ᴥ)([б-джзй-нп-тф-щъь]+)$/i,"$2")
		.replace(/(ᴥ)([ъьы])/gi,"$2")
		.replace(/ᴥᴥ/gi,"ᴥ")
		.replace(/ᴥ/g,"\u00ad")
	}).join(" ")
};

Получается примерно так (тут мягкий перенос на дефис заменён, чтобы было видно):

Оп-реде-лить в п. 12 нас-то-яще-го дого-вора от-ветств-ен-ное лицо от За-каз-чика (в даль-ней-шем – От-ветств-ен-ное лицо), кото-рое име-ет ис-клю-чит-ель-ное пра-во под-писы-вать про-меж-уточ-ные рез-уль-таты раб-от, ука-зан-ных в Гра-фике.

Фото-сес-сия дос-топри-меч-атель-ность ад-верго-тик-ом вели-кол-епие объек-то-ориен-тиро-ван-ный су-пер-объек-тив вер-х-не-тоем-ский пара-олим-пийс-кий мани-лов-щина поло-теныш-ко над-нац-ио-наль-ный без-ус-ловный

Буду уточнять ещё.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 2nd, 2026 03:56 am
Powered by Dreamwidth Studios