Bug #589

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

Added by Михаил Гагауз over 10 years ago. Updated over 10 years ago.

Status:New Start:07/07/2013
Priority:Normal Due date:
Assignee:Alexander Tratsevskiy % Done:

0%

Category:Calculate Utilities Spent time: -
Target version:-
Votes: 1

Description

Если верить документации шаблон можно описывать при помощи регулярных выражений языка программирования 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 утилиты, но не в багтрекере. Надеюсь после того, как описал эту проблему тут - она будет решена.

History

Updated by Михаил Гагауз over 10 years ago

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

# 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>

...

Updated by Сергей Семёнов over 10 years ago

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

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

Исходный файл /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

Also available in: Atom PDF

Thank you!