- Сообщения
- 251
- Реакции
- 4
Скрипт, обсуждавшийся в предыдущей теме, принял окончательный вид и заработал .
НО, учитывая, что словарь состоит из 114+ тыс. слов работает он неприемлемо медленно. Небольшой абзац обрабатывается порядка 10-15 минут . Очевидно, что такой алгоритм не годится. Уважаемые профессионалы, может ли кто-нибудь предложить более "шустрый" алгоритм? Итак, задача в следующем. Имеется текст, в котором вручную проставлены ударения. И есть словарь слов с ударениями. Нужен скрипт, который проверяет каждое слово текста на предмет присутствия в словаре и если его там нет, помечает цветом.
Код:
#include Arr.jsx// словарь
Array.prototype.isElement = function (item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return true;
};
};
return false;
}
myDoc = app.activeDocument;
myAbsentColorSample = [100, 0, 100, 0]; // цвет для отсутствующих в словаре слов
try{
myColor = myDoc.colors.item("myAbsentColor");
myName = myColor.name;
}
catch (myError) {
myColor = myDoc.colors.add ({name:"myAbsentColor", model:ColorModel.process, space:ColorSpace.CMYK, colorValue:myAbsentColorSample});
}
var myPage = myDoc.pages[0];
var myTextFrame = myPage.textFrames[0];
for (j=0; j <= myTextFrame.words.length-1; j++){
var myWord = myTextFrame.words[j];
myWord = myWord.contents.toLowerCase().replace(/[.,!?:;]*$/, '');
if (arr.isElement(myWord)) {continue;}
myTextFrame.words[j].fillColor = "myAbsentColor";
}
НО, учитывая, что словарь состоит из 114+ тыс. слов работает он неприемлемо медленно. Небольшой абзац обрабатывается порядка 10-15 минут . Очевидно, что такой алгоритм не годится. Уважаемые профессионалы, может ли кто-нибудь предложить более "шустрый" алгоритм? Итак, задача в следующем. Имеется текст, в котором вручную проставлены ударения. И есть словарь слов с ударениями. Нужен скрипт, который проверяет каждое слово текста на предмет присутствия в словаре и если его там нет, помечает цветом.