Фрагмент TextMate для добавления имени файла и пути в комментарии? - PullRequest
0 голосов
/ 11 июля 2010

Я использую существующий фрагмент в Textmate, чтобы уменьшить количество повторений при создании контроллеров и моделей. Фрагмент отлично работает, но я бы хотел добавить комментарий в конец каждого файла. Например:

/* End of file filename.php */  
/* Location: ./system/application/controllers/filename.php */

Первая строка проста:

/* End of file ${TM_FILENAME} */

Вторая часть почти так же проста с переменной TM_FILEPATH:

/* Location: ./${TM_FILEPATH} */

Проблема в том, что я не хочу, чтобы возвращался весь путь к файлу, просто что-нибудь ПОСЛЕ «системы», если она существует, или «приложения», если нет. Например, использование TM_FILEPATH возвращает это:

/* Location: ./path/from/root/system/application/controllers/filename.php */
-or-
/* Location: ./path/from/root/application/controllers/filename.php */

... когда я хочу:

/* Location: ./system/application/controllers/filename.php */
-or-
/* Location: ./application/controllers/filename.php */

Я предполагаю, что это будет какая-то хитрость с регулярными выражениями, но я понятия не имею, как. Любые предложения, пожалуйста?


ОБНОВЛЕНИЕ: Я только что нашел переменную TextMate TM_PROJECT_DIRECTORY, которая содержит информацию, которую я хочу УДАЛИТЬ из TM_FILEPATH, если это облегчает ситуацию.

Итак, тогда как TM_FILEPATH производит это:

/path/from/root/system/application/controllers/filename.php

TM_PROJECT_DIRECTORY производит это:

/path/from/root

Ответы [ 3 ]

0 голосов
/ 12 июля 2010

Я использую два разных фрагмента для контроллеров и моделей (поскольку синтаксис похож, но немного отличается; И.Е .: каждому контроллеру нужна функция индекса, но модели нет) Я просто жестко запрограммировал их следующим образом ...

Контроллер:

/* Location: ./application/controllers/${TM_FILENAME} */

Модель:

/* Location: ./application/models/${TM_FILENAME} */

Поскольку я всегда вытаскиваю папку приложения из системной папки и помещаю системную папку в другой каталог, это прекрасно работает. Я также добавил табуляцию приложения, на случай, если я переименую каталог приложения.

@ TM_PROJECT_DIRECTORY: Я думаю, что это работает, только если вы открываете свои файлы как проект. Я использую электронный текстовый редактор, который основан на Textmate, так что он может немного отличаться.

Надеюсь, это поможет.

0 голосов
/ 12 июля 2010

Вот решение, которое я придумал. Я понятия не имею, если это лучший способ, но это работает:

/* End of file ${TM_FILENAME} */
/* Location: ${TM_FILEPATH/(.*?)(\/system)?(\/application.*)/(?1:).$2$3/} */

Я сломаю это настолько, насколько я понимаю;)

${TM_FILEPATH      - The 'source' string TextMate variable
/                  - Indicates next chars are 'pattern'
(.*?)              - Group 1: Zero or more of any character. ? Makes it non-greedy
(\/system)?        - Group 2: /system but it's optional because of the ?
(\/application.*)  - Group 3: /application and any other characters
/                  - Indicates next chars are 'replacement'
(?1:).$2$3         - If Group 1 is found, replace with blank, then a dot, Group 2, Group 3.
/                  - Indicates regex is finished.
}                  - Closes off TextMate variable.
0 голосов
/ 11 июля 2010

Я не знаю о Textmate, но не могли бы вы использовать константу CI FCPATH? Это полный путь сервера к файлу.

...