Замена текстов
Для замены текстов следует зарегистрироваться в Смереке с правами редактора, выбрать вершину для замены и нажать кнопку «Заменить» на панели инструментов слева от инспектора.
Эта кнопка вызывает диалог замены текстов. В нем следует задать: имя атрибута, в котором нужно провести замену, текст, который нужно найти, текст, который нужно вставить вместо найденного, селектор «Домен» и селектор «Режим замены».
Селектор «Домен» задает область действия команды. Это может быть одно из следующих значений: текущая вершина, крона (текущая вершина + все подчиненные ей вершины), дочерние вершины (только подчиненные вершины, без текущей), равные вершины и равные вершины с кронами.
Селектор «Режим замены» можно установить в одно из следующих значений: литеральний, расширенный, preg_replace.
Перед выполнением команды тексты поиска и замены нормализуются, т.е. все переводы строк приводятся к Windows стилю – CR + LF. Поскольку этот стиль является внутренним стилем Смереки для хранения текстов, замена текста из многих строк становится более предсказуемой.
Следует знать, что для языково-зависимых атрибутов команда «Замена текста» выполняет замену только в текущей языковой версии атрибутов.
Литеральний режим замены
При литеральном режиме все символы текста поиска и текста замены воспринимаются литерально, т.е. представляют сами себя. Никакие замены и подстановки в них не выполняются, все пробельные символы интерпретируются так, как они записаны. При этом пользователь имеет две возможности:
1. Если поле «Искать» заполнено, заданный атрибут сканируется и все вхождения текста для поиска заменяются на текст замены (который может быть пустым, в этом случае искомые фрагменты просто удаляются).
2. Если поле «Искать» не заполнено, заданный атрибут безусловно заменяется на текст замены. Этот вариант использования команды очень похож на команду «Установить атрибут», с той разницей, что данная команда может установить текст из многих строк, а команда «Установить атрибут» – только текст в одну строку.
Расширенный режим замены
При расширенном режиме замены текст поиска интерпретируется литерально, а текст замены должен содержать магические символы.
Добавить сначала / в конце
Чтобы воспользоваться возможностью добавить текст в начале или в конце атрибута, надо оставить текст поиска пустым. В тексте замены магические символы [DdtSp] и [DdtKn] выступают маркерами текстов, которые нужно вставить соответственно перед или после существующего значения атрибута.
Например, пусть текст замены имеет вид:
[DdtSp]У попа [DdtKn] Мерседес.
(обратите внимание на запись в одну строку и пробелы), а набор вершин имеет в каком атрибуте значения:
была собака был автомобиль было начальство
Тогда результатом выполнения данной команды будет набор значений:
У попа была собака Мерседес. У попа была автомобиль Мерседес. У попа была начальство Мерседес.
Текст замены может содержать только один из маркеров; но если заданы оба, то сначала должна идти [DdtSp], а после него – [DdtKn].
Заменить голову / хвост
Текст поиска должен быть задан. Текст замены должен содержать магические символы [GlvA] и / или [XvsT]. Если атрибут содержит текст поиска, то текст, который идет перед ним, считается головой, а текст, который идет после него – хвостом. Команда заменяет в тексте замены магический символ [GlvA] на голову, а магический символ [XvsT] – на хвост.
Например, если задано текст поиска <hr> и текст замены [GlvA], то из каждого атрибута, который содержит такой дескриптор горизонтальной линии, будут удалено все, что идет после этой линии (включая саму линию, то есть сам текст поиска. Если текст замены задано как [GlvA] <hr>, к главе будет присоединен указанный текст. Аналогично, если текст замены задано как [XvsT], из атрибута удаляется все, что идет перед текстом поиска (и сам текст поиска).
Текст замены, заданный как [XvsT] [GlvA], позволяет поменять местами голову и хвост текста атрибута, и так далее.
Следует учитывать, что в этом режиме используется только первое вхождение текста поиска значения атрибута.
Режим замены правилам-выражениями
В режиме замены preg_replace обработку текста атрибута выполняет функция PHP:
preg_replace ([Текст поиска], [Текст замены], [Значение атрибута])
Итак, текст поиска должен быть корректным правилом-выражением, соответствующий синтаксиса PCRE (Perl-Compatible Regular Expressions), включая символы-ограничения и модификаторы. Соответственно текст замены может содержать ссылки на найденные фрагменты, как это объяснено в документации PHP. Следует учитывать, что в этом режиме выполняется замена всех фрагментов, соответствующих заданному правилу.