Coder plugin (2)
- Author
- Message
- 
				
								Offline
- Site Admin
- Posts: 6411
- Joined: Thu Jul 06, 2006 7:20 am
Тестовая версия для работы с 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
			
			
									
																
						Добавлено: возможность использовать правила в "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: 3243
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
При установке каретки в атрибуты-значения:
почему-то как блок подсвечивается вся строка. Ожидается подсветка только начального script и конечного, по аналогии, как это сделано в других тэгах, имеющих атрибуты.
			
			
									
																
						Code: Select all
<script attr1="value1" attr2="value2"></script>- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
- 
				
								Offline
- Posts: 3243
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Нет, не подсвечивается. Но там в html.coder куча правил и надо разбирать их иерархию, чтобы определить почему захватывает не тем правилом, которым хотелось...VladSh wrote:YuS
В body y Вас тоже атрибуты раскрашиваются, как например в div?
В принципе, ведь тег <body> ничем не отличается от других, т.е. надо просто составить четкую иерархию для всех правил, которые могут пересекаться.
Для примера:
если перелопатить Folds, т.е. выключить правило:
Code: Select all
;1052676=4+4096+1048576
370688	0	0	0	"<body"        ""            " 	>"      0	1Code: Select all
;1052676=4+4096+1048576
1052676	0	0	0	"<body\s++.*?>"        "</body>"            ""      0	2Code: Select all
;4101=1+4+4096
4101	0	0	0	"<"            "</"          ""         0	1
;4101=1+4+4096
4101	0	0	0	"<"            "/>"          ""         0	1Правда, не совсем понял, почему указанная выше пара правил имеет больший приоритет, ведь они в списке находятся ниже, чем новое правило, но это уже вопрос к автору, видимо...
- 
				
								Offline
- Site Admin
- Posts: 6411
- Joined: Thu Jul 06, 2006 7:20 am
YuS
Нет нужды писать правило для body. Достаточно закомментировать имеющееся:
			
			
									
																
						Нет нужды писать правило для body. Достаточно закомментировать имеющееся:
Code: Select all
;--Ignore tags--
...
;370688=2048+8192+32768+65536+262144
;370688	0	0	0	"<body"        ""            " 	>"      0	1
- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Instructor,
Тут ещё один интересный момент:
Если в том же файле html.coder, с работающим правилом для блока <body\s++.*?> </body>, добавить аналогичный блок для "table":
то ломается структура блока "body"...
Вот тут подготовленный комплект, надо только раскомментировать правило для "table". Выключение всех блоков, где присутствует </table>, не помогает...
			
			
									
																
						Тут ещё один интересный момент:
Если в том же файле html.coder, с работающим правилом для блока <body\s++.*?> </body>, добавить аналогичный блок для "table":
Code: Select all
;1052676=4+4096+1048576
;1052676	0	0	0	"<table\s*+.*?>"        "</table>"          ""      0	2Вот тут подготовленный комплект, надо только раскомментировать правило для "table". Выключение всех блоков, где присутствует </table>, не помогает...
- 
				
								Offline
- Site Admin
- Posts: 6411
- Joined: Thu Jul 06, 2006 7:20 am
Чего-о?YuS wrote:Тогда не будет блока, т.е. закрывающим будет, соответственно правилу, тег ">", а не "</body>...
 
 Просто хотел отметить, что не следует усложнять там, где нет необходимости. Конструкции вида "<table\s*+.*?>" нужны только для "Rule file". И эксперименты со сложными html файлами (тем более, когда изначально структура битая, из-за использования "//--></script><noscript></noscript></td>") я бы ставил, когда понимал действие каждого правила.YuS wrote:Вот тут подготовленный комплект...
- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Сори, за косноязычие.Instructor wrote:Чего-о?YuS wrote:Тогда не будет блока, т.е. закрывающим будет, соответственно правилу, тег ">", а не "</body>...

Имелось ввиду, что при отсутствующем правиле для body, с простым комментированием ";--Ignore tags--", получим "<single" and ">", вместо "<tag" and "</tag>"...
Ну, это, естественно, на приложенном сложном файле можно пронаблюдать.

И это же относится к вопросу:
Структуру не я побилInstructor wrote:И эксперименты со сложными html файлами (тем более, когда изначально структура битая, из-за использования "//--></script><noscript></noscript></td>") я бы ставил, когда понимал действие каждого правила.
 Просто взял для примера dom-структуру данного форума, т.е. фактически, пример из жизни
 Просто взял для примера dom-структуру данного форума, т.е. фактически, пример из жизни  
 А учитывая послабления в HTML5, где с тегами вообще может какая угодно чехарда случиться (т.к. многие закрывающие теги стали просто необязательны, как и вообще, в принципе, использование таких тегов как html, head, body...), при реальном использовании редактора на "живых" файлах, таких ситуаций может возникнуть масса...
Теги body и table, и правила с регэкспами были просто использованы для тестов, как раз для улучшения понимания процесса работы правил.
На простеньких, тестовых файлах, всё более-менее понятно работает, но вот когда DOM-структура запутана (что не редко присутствует в реальных файлах), то ошибки становятся неизбежны...
- 
				
								Offline
- Site Admin
- Posts: 6411
- Joined: Thu Jul 06, 2006 7:20 am
YuS wrote:... получим "<single" and ">", вместо "<tag" and "</tag>"...
Ну, это, естественно, на приложенном сложном файле можно пронаблюдать.
Видимо надо пояснить, что фолдинг теряет смысл, если есть, например, такая структура:- а вот если их оба отключить, то уже будет работать новое правило с регуляркой, и всё будет подсвечиваться и выделяться именно блоком <body></body>
Code: Select all
<table>
<a>
</table>
 , чтобы он выровнял структру файла, необходимо просто закрыть тег <a>.
, чтобы он выровнял структру файла, необходимо просто закрыть тег <a>.- 
				
								Offline
- Posts: 513
- Joined: Sun Sep 15, 2013 8:25 am
- Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы
Начнем с того, что я ведь ни на чем не настаиваю, если нельзя, то нельзя... просто констатирую факт. Возможно, что учет всех подобных тонкостей равнозначно созданию подобия браузера, что противоречит концепции AP (быть маленьким и быстрым)...Instructor wrote: Видимо надо пояснить, что фолдинг теряет смысл, если есть, например, такая структура:В данном случае нельзя увеличить приоритет <table></table>, до такой степениCode: Select all
<table> <a> </table>, чтобы он выровнял структру файла, необходимо просто закрыть тег <a>.
А вот пример не совсем удачный, т.к. по стандарту у элемента "a" открывающий и закрывающий тег обязательны, это просто конкретная ошибка структуры (хотя и этот момент, вроде бы, редактор должен учитывать, хотя бы каким-нибудь предупреждающим сообщением, типа: нарушена структура, поэтому извини - фолдинга не будет совсем
 ). Весь вопрос в том, что допускается использовать и другие элементы, в которых открывающий или закрывающий теги, могут быть не обязательными. Например, "area" или "base", или тот же "body", у которого и начальный, и конечный теги вовсе не обязательны - как учесть такие моменты при разборе структуры? Ведь абсолютно все существующие элементы, атрибуты и их сочетания в правилах не опишешь...
 ). Весь вопрос в том, что допускается использовать и другие элементы, в которых открывающий или закрывающий теги, могут быть не обязательными. Например, "area" или "base", или тот же "body", у которого и начальный, и конечный теги вовсе не обязательны - как учесть такие моменты при разборе структуры? Ведь абсолютно все существующие элементы, атрибуты и их сочетания в правилах не опишешь...В качестве конструктива: Может быть ввести какую-либо иерархию по RuleID (раз уж они уже есть), которая в зависимости от цифры, могла бы позволить при поиске закрывающего тега игнорировать все вложенные теги, либо наоборот при найденном открывающем теге совсем не пытаться искать закрывающий, либо в сочетании? Или как-то более строго учитывать... не знаю, я ведь не представляю всех сложностей в создании этого, поэтому могу только "генерировать идеи".


