Таблица 7.1. Конструкции, используемые в регулярных выражениях для поиска

Действие

Обозначение

Поиск текста с учетом регистра

(?i)

Игнорирование регистра

(?-i)

Поиск выражения в начале слова

\>

Поиск выражения в конце слова

\<

Поиск выражения в начале и в конце слова

Любой символ

\s

Пробел

\w

В листинге 7.6 приведен пример замены текста с разметкой, сделанной в PageMaker, для использования в InDesign.

Листинг 7.6. Замена текста с разметкой

var myName, myString, myStyle, myStyleName; var myDocument = app.documents.item(0); app.findGrepPreferences = NothingEnum.nothing; app.changeGrepPreferences = NothingEnum.nothing;

// Поиск тегов разметки.

// Поскольку использующийся в ней символ "\" является служебным,

// для правильного его восприятия перед ним ставят такой же символ,

// сигнализируя о том, что дальше идет специальный символ.

арр.findGrepPreferences.findwhat = "(?i)A<\\s*\\w+\\s*>"; var myFoundltems = myStory.findGrep() ;

if(myFoundlterns.length != 0)( var myFoundTags = new Array; for(var i= 0; i<myFoundItems.length; i++){ myFoundTags.push(myFoundltems[i].contents);

}

// Собираем все использованные теги, повторы не включаем myFoundTags = myRemoveDuplicates(myFoundTags);

// Мы собрали все использованные теги разметки for(i= 0; i< myFoundTags.length; i++){ myString = myFoundTags[i];

//По очереди ищем каждый тег арр.findTextPreferences.findwhat = myString;

// Получаем название тега

myStyleName = myString.substring(1, myString.length-1);

// Создаем стиль с названием тега, если он еще не существует try{

myStyle = myDocument.paragraphStyles.item(myStyleName); myName = myStyle.name;

}

catch (myError){

myStyle = myDocument.paragraphStyles.add({namermyStyleName});

}

// Применяем стиль ко всему тексту, имеющему текущий тег ■ арр.changeTextPreferences.appliedParagraphStyle = myStyle; myStory.changeText ();

// Подготовка к следующему поиску/замене арр.changeTextPreferences = NothingEnum.nothing; арр.changeTextPreferences.changeTo =

// Собственно замена myStory.changeText() ;

app.changeTextPreferences = NothingEnum.nothing;

app.findGrepPreferences = NothingEnum. nothing;

}

function myRemoveDupl.icates(myArray){

// Поиск дубликатов в массиве с названиями тегов var myNewArray = new Array;

// Сортируем - в таком случае при поиске дубликата // не потребуется пробегать по всему массиву - дубликаты // будут идти сразу за текущим элементом myArray = myArray.sort();

// Создаем новый массив из одного элемента - текущего тега myNewArray.push(myArrayL0]); if(myArray.length > 1){

for(var i= 1; i< myArray.length; i++){

if(myArray[i] != myNewArray[myNewArray.length -1]){

// В новый массив повторения не попадут myNewArray.push(myArray[i]);

}

}

}

return myNewArray;

}

7.3. Использование возможностей JavaScript

Поскольку автор занимается в том числе версткой изданий экономической направленности, которые изобилуют цифрами, сокращениями, а возможности InDesign CS2 в части замены довольно скромны, несмотря на внушительные размеры диалогового окна, встал вопрос как-то обойти его ограничения.


⇐ вернуться назад | | далее ⇒