Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 10.08.2022, 12:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Alikberov,
Ответить с цитированием
  #42 (permalink)  
Старый 10.08.2022, 13:51
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Alikberov,
А как понять интерактивной, то есть это можно выбирать или что значит?
Ответить с цитированием
  #43 (permalink)  
Старый 10.08.2022, 16:25
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Сообщение от Сергей Ракипов Посмотреть сообщение
Alikberov,
А как понять интерактивной, то есть это можно выбирать или что значит?
Ставитe галочку и включаете режим «Активный перенос», чтобы каждое слово текста принудительно разделилось переносом…
В этом режиме хорошо просматриваются все грехи отработки моего алгоритма.
(Иначе всё это бессмысленно.)

Для качественного улучшения переносов тaм есть четыре поля - «Правило №1»…«Правило №4 .
Они интерактивные: Корректируете их, нажимаете «Enter», они вступают в силу и изучаете весь текст на предмет переносов.
Если регулярное выражение не прошло валидацию, поле покраснеет - просто вводите корректное регулярное выражение…
Ответить с цитированием
  #44 (permalink)  
Старый 11.08.2022, 06:12
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Alikberov,
Я в это не досточно образован мне просто понять нужно вот ваш последний скрипт он содержит разные правила а что из нельзя просто включить по умолчанию все и пользоваться ну хоть чем то.
Ответить с цитированием
  #45 (permalink)  
Старый 11.08.2022, 12:19
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Сообщение от Сергей Ракипов Посмотреть сообщение
вот ваш последний скрипт он содержит разные правила а что из нельзя просто включить по умолчанию все и пользоваться ну хоть чем то.
Пo умолчанию - это поддержка переноса со стороны браузера. А она - отсутствует.
Эти четыре правила - регулярные выражения, на которых и держится вся суть функции. Правила взяты буквально с потолка, чтобы скрипт хоть как-то работал. А правил «по умолчанию» в сети не найдёшь. Человеческий язык, сам по себе, субстанция сложная и стандартными машинными механизмамии парсится со скрипом…

P.S.: Однако, всё не так плохо, если использовать мой скрипт для колонок нормальной ширины.
Изъяны видны, в основном, если форсировать перенос на каждом слоге…
Ответить с цитированием
  #46 (permalink)  
Старый 11.08.2022, 12:38
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Alikberov,
Я запутался я просто хочу спросить. Если я скопирую ваш скрипт но вот без этого

Правило №1<input type=text style=width:99% maxlength=128 onchange='Separatory(); Separatism()' value='^[бвгджзклмнпрстфхцчшщ]+[ъь]?[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)'><br>
Правило №2<input type=text style=width:99% maxlength=128 onchange='Separatory(); Separatism()' value='^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?'><br>
Правило №3<input type=text style=width:99% maxlength=128 onchange='Separatory(); Separatism()' value='^([бвгджзклмнпрстфхцчшщь]+)[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?'><br>
Правило №4<input type=text style=width:99% maxlength=128 onchange='Separatory(); Separatism()' value='^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*'><br>
<input type=checkbox onchange='this.nextSibling.textContent = this.checked ? "Активный" : "Мягкий"; Separatism()'><span></span>


он будет работать в полную меру?

То есть в моей голове есть какой скрипт который работает в 4 разных вариантов и что бы работал один нужно нажат на 1 правило 2 на втрое правило и т.д.

А мне вот просто хочется взять скрипт и пользоваться в полную меру.
Ответить с цитированием
  #47 (permalink)  
Старый 11.08.2022, 14:00
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Правилa не работают сами по отдельности:
while(part.length) {
		if(slab = part.match(Regulars[0])) { // Правило №1
			seps.push(slab[0]);
			part = part.substr(slab[0].length);
		} else
		if(slab = part.match(Regulars[1])) { // Правила №2 и №3
			if(next = part.substr(slab[0].length).match(Regulars[2]))
				slab[0] += next[1];
			seps.push(slab[0]);
			part = part.substr(slab[0].length);
		} else
		if(slab = part.match(Regulars[3])) { // Правило №4
			if(slab[0].length > 1 && part.charAt(slab[0].length).match(/[аеёиоуыэюя]/i))
				slab[0] = slab[0].substr(0, slab[0].length - 1);
			seps.push(slab[0]);
			part = part.substr(slab[0].length);
		} else {
			seps.push(part);
			part = "";
		}
	}
Види е здесь каскад условий, где все правила используются в комплексе?
Их я вынес из тела программы в INPUT-поля, чтобы можно было отладить и, добившись реально гораздо лучшего результата, вставить назад в тело алгоритма.
(Однако, эксперименты показали, что первоначальный исходный свод правил, хоть не идеальный, но редактированием мало что улучшает.)

Сам алгоритм, как можно видеть, практически никакой: Там просто идёт срабатывание одного из трёх правил (№1, №2 и №4) и одного подправила (№3 - №2.1).
Есть ещё подправило №4.1, но там одни гласные и его редактировать бессмысленно.

Сравните тела условий правил №2 и №4: Они практически одинаковы.
То есть, Вы сами можете удлинить цепь условий и добавить ещё больше правил.
(Я обошёлся именно тремя звеньями, так как это, ИМХО, оптимально в данной логике)

P.S.: Как выше я говорил, не плохо было бы добавить разбор суффиксов и окончаний (как и приставок, их ограниченное множество и в несколько регулярок вместить можно) перед данным циклом.
(Но в результате, лично я, сомневаюсь и не стал усложнять свою функцию.)

Последний раз редактировалось Alikberov, 11.08.2022 в 14:03.
Ответить с цитированием
  #48 (permalink)  
Старый 11.08.2022, 14:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сергей Ракипов,
не заморачивайтесь))) есть вариант рабочий, им и пользуйтесь, Alikberov, думаю если захочет и будут значительные изменения, выкатит новый готовый вариант, а пока #40 это для тех, кто съел собаку на морфологии, для поиска и проверки RegExp.
Ответить с цитированием
  #49 (permalink)  
Старый 11.08.2022, 19:22
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

рони,
Так более понятно, успокоили
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт переноса по слогам не работает life-life Элементы интерфейса 0 18.10.2017 17:19
Отправка данных аякс по Enter, перенос строки Enter+Ctrl shyxeroks Элементы интерфейса 1 30.03.2017 15:00
JQuery + перенос в восточных языках Goopy jQuery 4 15.06.2016 17:50
Перенос строк в Ext.grid.Panel khusamov ExtJS 11 10.04.2013 04:03
Отправка формы по ENTER (ajax) и перенос строки VEGA jQuery 18 01.03.2013 14:09