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

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

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

Date: 2013-11-09 03:58 pm (UTC)
From: [identity profile] alexeytemnikov.livejournal.com
Продолжение с дополнением: http://alexeytemnikov.ru/?p=400 Большое спасибо!

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. 1st, 2026 10:23 pm
Powered by Dreamwidth Studios