|
|
|
| Попалась мне тут в руки одна программка-валидатор. Мне там приглянулась одна функция: показывается дерево всех тегов (html) со всей их вложенностью и структурой. И вот задумался я о структурном коде... понятно, что когда его пишешь, то стараешься оформлять соотвествующим образом, но вот в процессе переписывания или отладки - совсем ен до того. Что хочется: либо программку, либо скрипт, которому можно скормить файл и он бы его соотвествующим образом оформил (имеются ввиду отступы и соответствие фигурных скобок). Если ни того ни другого на примере нет, то примерный алгоритм как это можно реализовать (для структурирования php кода, понятное дело). | |
|
|
|
|
|
|
|
для: Loki
(10.11.2005 в 09:14)
| | Пока идея следующая: если находим открывающую фигурную скобку, то делаем ++ к отступу, если закрывающую, то делаем --. Если находим точку с запятой - переводим строку.
Только как сделать, чтобы не обрабатывались данные в кавычках? Ну и еще какие-нить случаи надо предусмотреть... | |
|
|
|
|
|
|
|
для: Loki
(10.11.2005 в 09:21)
| | Такие штуки, вроде, называются CodeSweeper'ами... В HomeSite, например, есть набор таких для HTML и JS... Значит, где-то ещё можно найти и для PHP :) | |
|
|
|
|
|
|
|
для: DDK
(10.11.2005 в 10:30)
| | попробовал в гугле "code sweeper for php"... всего пара скриптов нашлась, да и те, как я понял, только убирают лишние строки и пробелы... короче, всем подавай быстро, а мне - красиво:)
Пытаюсь придумать алгоритм, но пока получается какая-то лажа:
1. считываем файл в переменную.
2. убираем все двойные пробелы и знаки табуляции, находящиеся вне кавычек
3. убераем все переводы строк
4. начинаем побайтово просматривать текст, заменяя все фигурные скобки на отступ+скобка+перевод строки (закрывающие заменять не надо будет, просто перевести строку), а все точки с запятой на точка с запятой+перевод строки+отступ
пункт 2 у меня вызывает трудности..
по пункту 4 остаются неясности, но пока не готов из сформулировать. | |
|
|
|
|
|
|
|
для: Loki
(10.11.2005 в 11:04)
| | Понадобится наверное как в компиляторе стек фигурных скобок организовывать... | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 13:05)
| | если обрабатывать весь файл, то да. А если побайтово, то не понадобится. Просто встречая открывающую скобку увеличиваем отступ на единицу, а первая же закрывающая - уменьшает его.
Быть может поделитесь идеями по второму пункту? а дальше, может и сам осилю:) | |
|
|
|
|
|
|
|
для: Loki
(10.11.2005 в 14:10)
| | Наверное их нужно регулярными выражениями глушить... хотя... может тоже побайтово: как встретили кавычку перестаём удалять, как нашли завершающую - начинаем по новой... | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 22:40)
| | Хм... а как быть с одинарными/двойными? | |
|
|
|
|
|
|
|
для: Loki
(11.11.2005 в 00:08)
| | Пока не открыта ни одна кавычка реагировать на каждую кавычку, будь то двойная или одинарная, как только кавычка открыта - баста, ищем закрывающую кавычку этого вида не реагируя ни на что, ни на лишние пробелы, ни на кавычки. | |
|
|
|
|
|
|
|
для: cheops
(11.11.2005 в 00:28)
| | + проверить что перед кавычкой нет знака "\" | |
|
|
|
|
|
|
|
для: isset
(11.11.2005 в 00:30)
| | Кстати, да... ещё и экранирование... | |
|
|
|
|
|
|
|
для: Loki
(10.11.2005 в 09:14)
| | SourceFormatX
http://www.textrush.com/formatx.htm
PHP Code Beautifuler
http://www.phpedit.net/products/phpCodeBeautifier/
Онлайнсервис
http://www.tote-taste.de/X-Project/beautify/index.html | |
|
|
|