ФорумПрограммированиеPHP для идиотов → Хочу расширить компилятор твига

Хочу расширить компилятор твига

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2012 г. 11:15

    Хотелось бы что-то такое:
    <head>
    {% resource css.twitter_bootstrap %}
    {% resource css.admin %}
    </head>


    Я это реализовал как плагин к Twig, но хочется еще сделать так, чтобы все эти resource собрались воедино и обработались, например минимизировались автоматически. Может как-нибудь можно расширить компилятор твига, каким-нибудь своим хуком? В мануале не нашел. Например я пишу:
    $compiler->addDebugInfo($this)->write("echo '$resource\n';\n");


    Сделать что-то такое:
    $compiler->addDebugInfo($this)->write("//rs\necho '$resource\n';\n//endrs");


    И потом в компиляторе пропарсить все //rs…//endrs идущие подряд, и обработать.

    Или не стоит писать велосипеды и тупо использовать плагин Assetic для Twig?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2012 г. 11:39, спустя 23 минуты 40 секунд

    Разобрался - там есть метод setCompiler у Environment
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 12 февраля 2012 г. 13:31, спустя 1 час 51 минуту 55 секунд

    а что если сделать так, что б этот тег ничего не выводил, а просто запихивал в реестр данные о том, какие шаблоны подключаем. А потом на основании этой коллекции ресурсов и проводить минимизацию
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 12 февраля 2012 г. 17:25, спустя 3 часа 53 минуты 48 секунд

    а что если сделать так, что б этот тег ничего не выводил, а просто запихивал в реестр данные о том, какие шаблоны подключаем. А потом на основании этой коллекции ресурсов и проводить минимизацию


    Да, правильная мысль. Но пока я сделал по другому. Интересно Assetic умеет отличать внешние файлы (http://|https://|//) от внутренних, или он их тоже в коллекцию заносит? Кстати почти весь набор фильтров, который там есть, его либо надо отдельно выкачивать, либо вообще на Windows не рассчитано. Благо у меня есть свои средства на Perl, которые переделать в исполняемые подпрограммки как два пальца. И вообще, была трабла - регулярка на Perl работала, на Java работала, на JavaScript работала, а на php не хотела. Мучался 4 часа с ней, в итоге разбил её на несколько регулярок. Наверное снова уйду с головой в Perl. Perl я люблю за простоту рутинной работы. Даже иногда на php пишешь и появляются вредные мысли, вроде написать какую-то часть программы на perl и выполнить её через system() внутри php =)
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2012 г. 2:15, спустя 8 часов 50 минут 33 секунды

    Вы бы знали, ЧТО он там пишет.
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2012 г. 8:05, спустя 5 часов 50 минут 2 секунды


    Вы бы знали, ЧТО он там пишет.


    ты про что
  • lolcat

    Сообщения: 383 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2012 г. 9:27, спустя 1 час 21 минуту 43 секунды

    Ivan, \/\/\sline\d+..

Пожалуйста, авторизуйтесь, чтобы написать комментарий!