pug / twig
Compile Pug templates into Twig templates
Fund package maintenance!
kylekatarnls
Open Collective
Tidelift
Requires
- php: >=5.5
- phug/compiler: ^0.5.2 || ^1.0.0
- phug/formatter: ^0.5.13 || ^1.0.0
- phug/lexer: ^0.5.4 || ^1.0.0
- phug/parser: ^0.5.2 || ^1.0.0
- phug/util: ^0.4.17 || ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^4.8.36 || ^5.7.27 || ^8.5.15
This package is auto-updated.
Last update: 2024-12-08 03:28:51 UTC
README
This package can convert basic pug codes into Twig code. Caution, this package should not be used to handle Pug templates in Symfony, the right way to do it is to use pug-symfony and to either polyfill Twig expressions only or delegate expression handle to the Twig code parser.
This package can help you moving from Pug to Twig by generating equivalent code or can be used to create a Pug input interface to insert Twig templates in an existing application. These are the only kind of business you should handle with this package.
For a full-featured Pug template engine in Symfony pug-symfony is what you need. If you miss a feature, ask in the issues, there probably already exists a way to do the same, else we'll try to add it.
Instalation
First install composer if you have not: https://getcomposer.org/
Then run the following command:
composer require pug/twig
Or if you installed composer locally:
php composer.phar require pug/twig
Extension for Phug/Pug-php to output Twig (PHP pug to twig converter)
my-pug-input.pug:
ul#users - for user in users li.user // comment = user.name | Email: #{user.email} a(href=user.url) Home page
index.php:
include 'vendor/autoload.php'; echo PugToTwig::convert(file_get_contents('my-pug-input.pug'));
Will output:
<ul id="users"> {% for user in users %} <li class="user"> {# comment #} {{ user.name | e }} Email: {{ user.email | e }} <a href="{{ user.url | e }}">Home page</a> </li> {% endfor %} </ul>
(indentation not guaranteed).
Some features such as mixins could output PHP that you would need to evaluate:
$html = eval('?>' . PugToTwig::convert($pugCode));
Warning: you should be sure you don't let user input appears
between <?php
and ?>
. It should not happen easily because
expressions and codes are turned into Twig code that the
PHP eval
will just ignore, but be careful.
Not supported features:
- Mixins with dynamic names
- Mixins arguments: de facto, argument display will become Twig interpolation and Twig can't handle pug mixins, so mixins are evaluated before Twig will evaluate code/expressions.