mirror of
https://github.com/okdana/twigc.git
synced 2024-05-30 04:22:13 +02:00
Auto-detect escaping method (default to no escaping), learn some new boolean values
This commit is contained in:
parent
999530151e
commit
0403b21af7
13
README.md
13
README.md
|
@ -56,20 +56,21 @@ JSON data can also be provided by file path or on standard input:
|
||||||
```
|
```
|
||||||
|
|
||||||
Normally, input data is [auto-escaped](http://twig.sensiolabs.org/doc/api.html)
|
Normally, input data is [auto-escaped](http://twig.sensiolabs.org/doc/api.html)
|
||||||
for HTML before rendering, but this is configurable:
|
based on the template file extension (or disabled by default if using standard
|
||||||
|
input), but this is configurable:
|
||||||
|
|
||||||
```
|
```
|
||||||
% twigc -p 'html=<p>Hello!</p>' <<< '{{ html }}'
|
% twigc -p 'html=<p>Hello!</p>' <<< '{{ html }}'
|
||||||
<p>Hello!</p>
|
<p>Hello!</p>
|
||||||
|
|
||||||
% twigc -p 'html=<p>Hello!</p>' -e 'url' <<< '{{ html }}'
|
% twigc -p 'html=<p>Hello!</p>' -e 'html' <<< '{{ html }}'
|
||||||
%3Cp%3EHello%21%3C%2Fp%3E
|
<p>Hello!</p>
|
||||||
|
|
||||||
% twigc -p 'html=<p>Hello!</p>' -e 'js' <<< '{{ html }}'
|
% twigc -p 'html=<p>Hello!</p>' -e 'js' <<< '{{ html }}'
|
||||||
\x3Cp\x3EHello\x21\x3C\x2Fp\x3E
|
\x3Cp\x3EHello\x21\x3C\x2Fp\x3E
|
||||||
|
|
||||||
% twigc -p 'html=<p>Hello!</p>' -e 'false' <<< '{{ html }}'
|
% twigc -p 'html=<p>Hello!</p>' -e 'url' <<< '{{ html }}'
|
||||||
<p>Hello!</p>
|
%3Cp%3EHello%21%3C%2Fp%3E
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, references in the template to undefined variables are silently
|
By default, references in the template to undefined variables are silently
|
||||||
|
|
|
@ -226,16 +226,55 @@ class DefaultCommand extends Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalise auto-escape setting
|
// If no escape option was supplied, try to auto-detect
|
||||||
|
// (we could do this with Twig's 'filename' method, but i have some
|
||||||
|
// control over this)
|
||||||
if ( $escape === null ) {
|
if ( $escape === null ) {
|
||||||
$escape = true;
|
if ( substr($template, -5) === '.twig' ) {
|
||||||
|
$ext = pathinfo(substr($template, -5), \PATHINFO_EXTENSION);
|
||||||
|
} else {
|
||||||
|
$ext = pathinfo($template, \PATHINFO_EXTENSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( strtolower($ext) ) {
|
||||||
|
case 'template':
|
||||||
|
case 'tmpl':
|
||||||
|
case 'tpl':
|
||||||
|
case 'htm':
|
||||||
|
case 'html':
|
||||||
|
case 'phtml':
|
||||||
|
case 'thtml':
|
||||||
|
case 'xhtml':
|
||||||
|
$escape = 'html';
|
||||||
|
break;
|
||||||
|
case 'css':
|
||||||
|
case 'scss':
|
||||||
|
$escape = 'css';
|
||||||
|
break;
|
||||||
|
case 'js':
|
||||||
|
$escape = 'js';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$escape = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, try to parse the supplied method
|
||||||
} else {
|
} else {
|
||||||
|
// Normalise some boolean values
|
||||||
|
$escape = strtolower($escape);
|
||||||
|
$escape = $escape === 'f' ? 'false' : $escape;
|
||||||
|
$escape = $escape === 'n' ? 'false' : $escape;
|
||||||
|
$escape = $escape === 'none' ? 'false' : $escape;
|
||||||
|
$escape = $escape === 'never' ? 'false' : $escape;
|
||||||
|
$escape = $escape === 't' ? 'true' : $escape;
|
||||||
|
$escape = $escape === 'y' ? 'true' : $escape;
|
||||||
|
$escape = $escape === 'always' ? 'true' : $escape;
|
||||||
|
|
||||||
$bool = filter_var($escape, \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE);
|
$bool = filter_var($escape, \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE);
|
||||||
|
|
||||||
if ( $bool !== null ) {
|
if ( $bool !== null ) {
|
||||||
$escape = $bool;
|
$escape = $bool ? 'html' : false;
|
||||||
} else {
|
|
||||||
$escape = strtolower($escape);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue