Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Тестовая версия для работы с Coder 18.7 и выше. Сейчас вся обработка обычных правил и правил с регулярными выражениями происходит в одном цикле, что избавляет от проблемы наложения правил при горизонтальной прокрутке.


Добавлено: возможность использовать правила в "Quotes:" из "QuotesRE:". Требуется AkelPad 4.9.7 или выше.

Added: possibility to use rules in "Quotes:" from "QuotesRE:". Required AkelPad 4.9.7 or higher.


Coder plugin v18.7

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

При установке каретки в атрибуты-значения:

Code: Select all

<script attr1="value1" attr2="value2"></script>
почему-то как блок подсвечивается вся строка. Ожидается подсветка только начального script и конечного, по аналогии, как это сделано в других тэгах, имеющих атрибуты.

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

VladSh wrote:почему-то как блок подсвечивается вся строка. Ожидается подсветка только начального script и конечного
Как бы это помягче сказать... Вы ведь не первый день с программированием имеете дело.
У меня так и подсвечивается:
Image
:)
Файл xml.coder из стандартного комплекта...

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Instructor
в css.coder после перемещения секции "QuotesRE:", артефакт остался:
Image
- в секции "Quotes:" присутствует шапка и правило со структурой от секции "QuotesRE:"
Так и должно быть?

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

YuS wrote:Так и должно быть?
Да. Новые версии плагина и программы это позволяют.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

YuS
В новой версии плага заработало. Не обновлял, т.к. не знал как он будет работать с 4.9.6.

В body y Вас тоже атрибуты раскрашиваются, как например в div?

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

VladSh wrote:YuS
В body y Вас тоже атрибуты раскрашиваются, как например в div?
Нет, не подсвечивается. Но там в html.coder куча правил и надо разбирать их иерархию, чтобы определить почему захватывает не тем правилом, которым хотелось...
В принципе, ведь тег <body> ничем не отличается от других, т.е. надо просто составить четкую иерархию для всех правил, которые могут пересекаться.

Для примера:
если перелопатить Folds, т.е. выключить правило:

Code: Select all

;1052676=4+4096+1048576
370688	0	0	0	"<body"        ""            " 	>"      0	1
затем добавить:

Code: Select all

;1052676=4+4096+1048576
1052676	0	0	0	"<body\s++.*?>"        "</body>"            ""      0	2
то, всё равно, пара правил будет иметь приоритет:

Code: Select all

;4101=1+4+4096
4101	0	0	0	"<"            "</"          ""         0	1
;4101=1+4+4096
4101	0	0	0	"<"            "/>"          ""         0	1
- а вот если их оба отключить, то уже будет работать новое правило с регуляркой, и всё будет подсвечиваться и выделяться именно блоком <body></body>

Правда, не совсем понял, почему указанная выше пара правил имеет больший приоритет, ведь они в списке находятся ниже, чем новое правило, но это уже вопрос к автору, видимо...

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

YuS
Нет нужды писать правило для body. Достаточно закомментировать имеющееся:

Code: Select all

;--Ignore tags--
...
;370688=2048+8192+32768+65536+262144
;370688	0	0	0	"<body"        ""            " 	>"      0	1

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Instructor wrote:YuS
Нет нужды писать правило для body. Достаточно закомментировать имеющееся:
Тогда не будет блока, т.е. закрывающим будет, соответственно правилу, тег ">", а не "</body>...

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Instructor,
Тут ещё один интересный момент:
Если в том же файле html.coder, с работающим правилом для блока <body\s++.*?> </body>, добавить аналогичный блок для "table":

Code: Select all

;1052676=4+4096+1048576
;1052676	0	0	0	"<table\s*+.*?>"        "</table>"          ""      0	2
то ломается структура блока "body"...
Вот тут подготовленный комплект, надо только раскомментировать правило для "table". Выключение всех блоков, где присутствует </table>, не помогает...

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

YuS wrote:Тогда не будет блока, т.е. закрывающим будет, соответственно правилу, тег ">", а не "</body>...
Чего-о? :)
YuS wrote:Вот тут подготовленный комплект...
Просто хотел отметить, что не следует усложнять там, где нет необходимости. Конструкции вида "<table\s*+.*?>" нужны только для "Rule file". И эксперименты со сложными html файлами (тем более, когда изначально структура битая, из-за использования "//--></script><noscript></noscript></td>") я бы ставил, когда понимал действие каждого правила.

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Instructor wrote:
YuS wrote:Тогда не будет блока, т.е. закрывающим будет, соответственно правилу, тег ">", а не "</body>...
Чего-о? :)
Сори, за косноязычие. :)
Имелось ввиду, что при отсутствующем правиле для body, с простым комментированием ";--Ignore tags--", получим "<single" and ">", вместо "<tag" and "</tag>"...
Ну, это, естественно, на приложенном сложном файле можно пронаблюдать.
Image
И это же относится к вопросу:
Instructor wrote:И эксперименты со сложными html файлами (тем более, когда изначально структура битая, из-за использования "//--></script><noscript></noscript></td>") я бы ставил, когда понимал действие каждого правила.
Структуру не я побил :) Просто взял для примера dom-структуру данного форума, т.е. фактически, пример из жизни :)
А учитывая послабления в HTML5, где с тегами вообще может какая угодно чехарда случиться (т.к. многие закрывающие теги стали просто необязательны, как и вообще, в принципе, использование таких тегов как html, head, body...), при реальном использовании редактора на "живых" файлах, таких ситуаций может возникнуть масса...
Теги body и table, и правила с регэкспами были просто использованы для тестов, как раз для улучшения понимания процесса работы правил.
На простеньких, тестовых файлах, всё более-менее понятно работает, но вот когда DOM-структура запутана (что не редко присутствует в реальных файлах), то ошибки становятся неизбежны...

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

YuS wrote:... получим "<single" and ">", вместо "<tag" and "</tag>"...
Ну, это, естественно, на приложенном сложном файле можно пронаблюдать.
- а вот если их оба отключить, то уже будет работать новое правило с регуляркой, и всё будет подсвечиваться и выделяться именно блоком <body></body>
Видимо надо пояснить, что фолдинг теряет смысл, если есть, например, такая структура:

Code: Select all

<table>
<a>
</table>
В данном случае нельзя увеличить приоритет <table></table>, до такой степени :), чтобы он выровнял структру файла, необходимо просто закрыть тег <a>.

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Instructor wrote: Видимо надо пояснить, что фолдинг теряет смысл, если есть, например, такая структура:

Code: Select all

<table>
<a>
</table>
В данном случае нельзя увеличить приоритет <table></table>, до такой степени :), чтобы он выровнял структру файла, необходимо просто закрыть тег <a>.
Начнем с того, что я ведь ни на чем не настаиваю, если нельзя, то нельзя... просто констатирую факт. Возможно, что учет всех подобных тонкостей равнозначно созданию подобия браузера, что противоречит концепции AP (быть маленьким и быстрым)...
А вот пример не совсем удачный, т.к. по стандарту у элемента "a" открывающий и закрывающий тег обязательны, это просто конкретная ошибка структуры (хотя и этот момент, вроде бы, редактор должен учитывать, хотя бы каким-нибудь предупреждающим сообщением, типа: нарушена структура, поэтому извини - фолдинга не будет совсем :) ). Весь вопрос в том, что допускается использовать и другие элементы, в которых открывающий или закрывающий теги, могут быть не обязательными. Например, "area" или "base", или тот же "body", у которого и начальный, и конечный теги вовсе не обязательны - как учесть такие моменты при разборе структуры? Ведь абсолютно все существующие элементы, атрибуты и их сочетания в правилах не опишешь...

Code: Select all

<table> 
	<keygen> 
</table>

<form method="post" action="http://www.example.com/cgi-bin/decode.cgi">
	<keyqen name="RSA public key" challenge="123456789" keytype="RSA">
	<input type="submit" name= "createcertificate" value="Make Кеу">
</form>

<select name= "ice_cream" size= "6" multiple="multiple">
	<optgroup laЬel="traditional">
		<option>Vanilla</option>
		<option>Chocolate</option>
	</optgroup>
	<optgroup laЬel="specialty">
		<option>Inside-out Rocky Road</option>
		<option>Praline Pecan Smashup</option>
</select>

<video src= "blockbuster.webm">
	<track kind="subtitles" src="blockbuster.en.vtt" srclang="en" label="English">
	<track kind="suЬtitles" src="blockbuster.de.vtt" srclang="de" label="Deutsch">
</video>

<table>
	<embed src= "movies/vacation.mov" width="240" height="l96" type="video/quicktime">
</table>

В качестве конструктива: Может быть ввести какую-либо иерархию по RuleID (раз уж они уже есть), которая в зависимости от цифры, могла бы позволить при поиске закрывающего тега игнорировать все вложенные теги, либо наоборот при найденном открывающем теге совсем не пытаться искать закрывающий, либо в сочетании? Или как-то более строго учитывать... не знаю, я ведь не представляю всех сложностей в создании этого, поэтому могу только "генерировать идеи". :)

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

YuS
Сейчас возможности Coder'а стали существенно шире, подумаем.
Locked