Bug #589

Некорректно отрабатываются шаблоны

Добавил(а) Михаил Гагауз больше 11 лет назад. Обновлено около 11 лет назад.

Статус:New Начата:07.07.2013
Приоритет:Normal Дата выполнения:
Назначена:Alexander Tratsevskiy Готовность в %:

0%

Категория:Calculate Utilities Затраченное время: -
Версия:-
Голоса: 1

Описание

Если верить документации шаблон можно описывать при помощи регулярных выражений языка программирования Python, однако в регулярке не поддерживается символ ^ - начало строки.
К примеру:
следующий шаблон для /etc/nanorc работает корректно

# Calculate format=patch
<reg>#\s+(set\s+(autoindent|const|morespace|noconvert|nonewlines|nowrap|regexp|smarthome|smooth|softwrap)|include)</reg>
<text>\1</text>
<reg>#\s+(set\s+tabsize)\s+\d+</reg>
<text>\1 4</text>

Если же добавить указатель начала строки - шаблон не срабатывает
# Calculate format=patch
<reg>#\s+(set\s+(autoindent|const|morespace|noconvert|nonewlines|nowrap|regexp|smarthome|smooth|softwrap)|include)</reg>
<text>\1</text>
<reg>#\s+(set\s+tabsize)\s+\d+</reg>
<text>\1 4</text>

Это один из примеров, где такое может быть необходимо. И здесь такая ошибка не приводит к серьезным проблемам (просто, без указания начала строки, чуть портится один из комментариев)
Конечно, того-же можно было-бы добиться и через exec-шаблон, вызвав из него sed с параметрами.
Но если есть format=patch, использовать sed, имхо, будет сродни хинди-кодингу.

Кажется я уже поднимал эту тему только при переходе на calculate3 утилиты, но не в багтрекере. Надеюсь после того, как описал эту проблему тут - она будет решена.

История

Обновлено Михаил Гагауз больше 11 лет назад

Сорри, в примере не работающего скрипта не вставил ^, имелось ввиду вот-так:
...
Если же добавить указатель начала строки - шаблон не срабатывает

# Calculate format=patch
<reg>^#\s+(set\s+(autoindent|const|morespace|noconvert|nonewlines|nowrap|regexp|smarthome|smooth|softwrap)|include)</reg>
<text>\1</text>
<reg>^#\s+(set\s+tabsize)\s+\d+</reg>
<text>\1 4</text>

...

Обновлено Сергей Семёнов около 11 лет назад

Тоже наткнулся на данный баг.

Определил, что ^ обрабатывается только для первой строки:

Исходный файл /etc/test:

1test3
1test3
1test4
2test4
2test5
2test5

Накладываю шаблон:

# Calculate format=patch 
<reg>^1</reg>
<text>odin</text>
<reg>2</reg>
<text>dva</text>

Содержимое результирующего файла /etc/test:

odintest3
1test3
1test4
dvatest4
dvatest5
dvatest5

Версия cldx-20131001-i686.iso

Экспортировать в Atom PDF

Спасибо!