07.08.2022, 08:35
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
Да то что нужно я был просто не внимателен и не увидел разницу в символе. Спасибо.
А как вы считаете насколько корректен это перенос с точки зрения русского языка ?
И это скрипт не сильно будет тормозить страницу если так будет большой объем текста?
|
|
07.08.2022, 08:43
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
А как это скрипт переделать что бы он работал с только с тем блоком у которого есть к класс .tekst
|
|
07.08.2022, 11:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сергей Ракипов,
строка 64 укажите нужный класс/ы.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.separated {
width: 80%;
margin: 30px auto;
}
.separated.min{
width: 30%;
}
</style>
<script>
var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig;
var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i;
function Separatist(part, pos, text) {
var slab, next, seps = [];
var pref;
pos += part.match(/^\s*/)[0].length;
part = part.replace(/^\s+/, "");
while ((pref = part.match(Prefixes)) && pref[0] != "") {
seps.push(pref[0]);
part = part.substr(pref[0].length);
}
if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) {
seps.push(part.substr(0, slab[0].length));
part = part.substr(slab[0].length);
}
while (part.length) {
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) {
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) {
if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) {
if (!next[0].match(/[аеёиоуыэюя]/i))
slab[0] += next[0];
}
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) {
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 = "";
}
}
if (seps.length > 1 && seps[0].length == 1)
seps[0] = seps.shift() + seps[0];
if (seps.length > 1 && seps[seps.length - 1].length == 1)
seps[seps.length - 2] = seps[seps.length - 2] + seps.pop();
return seps.join("\u00AD");
}
document.addEventListener("DOMContentLoaded", function() {
let elems = document.querySelectorAll(".separated");
elems.forEach(el => {
let txt = el.textContent;
el.textContent = txt.replace(WholeWord, Separatist);
})
})
</script>
</head>
<body>
<div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
<div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
</body>
</html>
|
|
07.08.2022, 11:59
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
Спасибо
|
|
07.08.2022, 14:44
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
А что получается если внутри какой то класс то это класс не будет работать?
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.separated {
width: 80%;
margin: 30px auto;
}
.separated.min{
width: 30%;
}
.test{
font-size: 2rem;
}
</style>
<script>
var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig;
var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i;
function Separatist(part, pos, text) {
var slab, next, seps = [];
var pref;
pos += part.match(/^\s*/)[0].length;
part = part.replace(/^\s+/, "");
while ((pref = part.match(Prefixes)) && pref[0] != "") {
seps.push(pref[0]);
part = part.substr(pref[0].length);
}
if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) {
seps.push(part.substr(0, slab[0].length));
part = part.substr(slab[0].length);
}
while (part.length) {
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) {
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) {
if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) {
if (!next[0].match(/[аеёиоуыэюя]/i))
slab[0] += next[0];
}
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) {
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 = "";
}
}
if (seps.length > 1 && seps[0].length == 1)
seps[0] = seps.shift() + seps[0];
if (seps.length > 1 && seps[seps.length - 1].length == 1)
seps[seps.length - 2] = seps[seps.length - 2] + seps.pop();
return seps.join("\u00AD");
}
document.addEventListener("DOMContentLoaded", function() {
let elems = document.querySelectorAll(".separated");
// указать нужные классы
elems.forEach(el => {
let txt = el.textContent;
el.textContent = txt.replace(WholeWord, Separatist);
})
})
</script>
</head>
<body>
<div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, <span class="test">потому что проводится много мероприятий,</span> бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
<div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
</body>
</html>
|
|
07.08.2022, 16:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от Сергей Ракипов
|
А что получается если внутри какой то класс то это класс не будет работать?
|
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.separated {
width: 80%;
margin: 30px auto;
}
.separated.min{
width: 30%;
}
.test{
font-size: 2rem;
}
</style>
<script>
var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig;
var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i;
function Separatist(part, pos, text) {
var slab, next, seps = [];
var pref;
pos += part.match(/^\s*/)[0].length;
part = part.replace(/^\s+/, "");
while ((pref = part.match(Prefixes)) && pref[0] != "") {
seps.push(pref[0]);
part = part.substr(pref[0].length);
}
if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) {
seps.push(part.substr(0, slab[0].length));
part = part.substr(slab[0].length);
}
while (part.length) {
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) {
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) {
if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) {
if (!next[0].match(/[аеёиоуыэюя]/i))
slab[0] += next[0];
}
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) {
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 = "";
}
}
if (seps.length > 1 && seps[0].length == 1)
seps[0] = seps.shift() + seps[0];
if (seps.length > 1 && seps[seps.length - 1].length == 1)
seps[seps.length - 2] = seps[seps.length - 2] + seps.pop();
return seps.join("\u00AD");
}
document.addEventListener("DOMContentLoaded", function() {
let elems = document.querySelectorAll(".separated");
// указать нужные классы
elems.forEach(el => {
let txt;
walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
while(txt=walk.nextNode()) txt.data = txt.data.replace(WholeWord, Separatist);
})
})
</script>
</head>
<body>
<div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, <span class="test">потому что проводится много мероприятий,</span> бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
<div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что
если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную
связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает,
что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят
и те, кто выбирается на служение о многом не знают.</div>
</body>
</html>
|
|
08.08.2022, 05:16
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
А это я был не внимательный или скрипт изменен был?
|
|
08.08.2022, 07:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сергей Ракипов,
скрипт, конечно, изменён, в новом варианте, внутри элемента изменяются все текстовые блоки, а не текст целиком, что приводило к стиранию внутренних элементов.
|
|
08.08.2022, 07:48
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
рони,
Спасибо ) я правда вам благодарен за все года что вы помогаете тут. Спасибо
|
|
08.08.2022, 15:00
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Неплохo было бы вставить весь текст отсюда («Война и Мир») здесь и оценить время работы функции на большом объёме текста…
( К тому же все баги переноса выявятся на этой классике.)
P.S.: Не думаю, что на сайтах будут публиковать колонки размером больше классики…
В худшем случае, можно на серверной стороне предобработать все тексты заранее (в момент первого доступа к конкретному) и закешировать, выдавая пользователю их уже в готовом виде с переносами.
P.P.S.: Исправил ещё один баг: Слово «тускловатый» делилось на «тус-кло-ва-тый» (верно - «туск-ло-ва-тый»)…
Фиксится вот этот код этим:
if(slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) {
if(next = part.substr(slab[0].length).match(/^([бвгджзклмнпрстфхцчшщ]+)[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i))
slab[0] += next[1];
seps.push(slab[0]);
part = part.substr(slab[0].length);
} else
Последний раз редактировалось Alikberov, 08.08.2022 в 17:15.
|
|
|
|