tentwofour / twig
Twig 扩展
1.1.1
2022-12-06 21:17 UTC
Requires
- php: ^7.0|^8.0
- tentwofour/formatter: ^1.1
- tentwofour/inflector: ^1.1
- twig/intl-extra: ^2.0
- twig/twig: ^1.0|^2.0|^3.0
Requires (Dev)
- phpunit/phpunit: ^6.0
README
一些 Twig 扩展
EmailEncodingExtension
提供一个名为 'email_encode' 的过滤器,将文本编码成随机混合的 ascii、hex 和纯字符。从 SF1 库中提取。
email_encode(<string> text)
$ex = new EmailEncodingExtension() $ex->filter('f@example.com'); // => f@example.com
{{ 'f@example.com'|email_encode }} {# f@example.com #}
DiffExtension
提供两个函数,'diff' 和 'diff_html'。
diff(<iterable> a, <iterable> b)
区分两个数组,并返回包含差异的多维数组。
$ex = new DiffExtension(); // Will also work with multi-dimensional arrays $a = [ 'key' => 'value', ]; $b = [ 'key' => 'value_2', ]; $ex->diff($a, $b); // => [ // 0 => [ // 'd' => [ // 'key' => 'value', // ], // 'i' => [ // 'key' => 'value_2', // ], // ], // ]
{% set a = {'key': 'value'} %} {% set b = {'key': 'value_2'} %} {% set c = diff(a, b) %} {# { { 'd': { 'key': 'value' }, 'i': { 'key': 'value_2' } } } #}
diff_html(<string> a, <string> b, <string> output)
区分两个字符串,并返回包含差异的数组,差异被 HTML 和 标签包围。
如果 output 设置为 'string',可选地返回包含差异的单个字符串。
$ex = new DiffExtension(); $old = 'That's what it said on "Ask Jeeves."'; $new = 'That's what it said on "Dogpile."'; // Output to array $ex->diffHtml($old, $new, 'array'); // => [ // 'old' => 'That's what it said on <del>"Ask Jeeves."</del>', // 'new' => 'That's what it said on <ins>"Dogpile."</ins>', // ] // Output to single string $ex->diffHtml($old, $new, 'string'); // => 'That's what it said on <del>"Ask Jeeves."</del><ins>"Dogpile."</ins>';
{{ diff_html('The lazy fox was eaten by the rabbid rabbit.', 'The stupid lazy fox was annihalited by the rabbit rabbit') }} {# 'The <ins>stupid</ins>lazy fox was <del>eaten</del><ins>annihilated</ins>by the <del>rabbid rabbit.</del><ins>rabbit rabbit</ins>' #}
InflectorExtension
提供字符串变形函数:'camelcase_to_capitalized_words'、'camelcase_to_sentence_case_words' 和 'camelcase_to_lower_case_words'。
$ex = new InflectorExtension(); $string = 'camelCaseWordWith1Number'; $ex->camelCaseToCapitalizedWords($string) // => 'Camel Case Word With 1 Number' $ex->camelCaseToSentenceCasedWords($string) // => 'Camel case word with 1 number' $ex->camelCaseToLowerCasedWords($string) // => 'camel case word with 1 number'
{{ 'camelCaseWordWith1Number'|camelcase_to_capitalized_words }} {# 'Camel Case Word With 1 Number' #} {{ 'camelCaseWordWith1Number'|camelcase_to_sentence_case_words}} {# 'Camel case word with 1 number' #} {{ 'camelCaseWordWith1Number'|camelcase_to_lower_case_words }} {# 'camel case word with 1 number' #}
MoneyExtension
提供一个名为 'cents_to_dollars' 的过滤器;它确实做了它所说的。
$ex = new MoneyExtension(); $ex->centsToDollars(1200); // => '12.00'
{{ 1200|cents_to_dollars }} {# '12.00' #}
NumberExtension
提供一个名为 'number_to_human_readable' 的过滤器,将数字四舍五入到最接近的千或百万,并添加后缀(K、M)。
number_to_human_readable(<int|float> number, $precision, method)
$ex = new NumberExtension(); $ex->formatNumberToHumanReadable(1200000); // => '1.2M' $ex->formatNumberToHumanReadable(999.99); // => '1K' $ex->formatNumberToHumanReadable(3154.14159, 2, 'ceil'); // => 3.16K' $ex->formatNumberToHumanReadable(3154.14159, 2, 'floor'); // => 3.15K
{{ 1200000|number_to_human_readable }} {# '1.2M' #}