web/konrad/twig.git
13 years agoadded Twig_Loader_Chain
Fabien Potencier [Wed, 24 Aug 2011 10:56:57 +0000]
added Twig_Loader_Chain

13 years agorenamed a test file
Fabien Potencier [Wed, 24 Aug 2011 10:54:04 +0000]
renamed a test file

13 years agoadded Twig_LoaderArray::setTemplate()
Fabien Potencier [Wed, 24 Aug 2011 10:16:12 +0000]
added Twig_LoaderArray::setTemplate()

13 years agoswitcher PHPUnit colors to true
Fabien Potencier [Wed, 24 Aug 2011 10:15:02 +0000]
switcher PHPUnit colors to true

13 years agomerged branch videlalvaro/patch-1 (PR #419)
Fabien Potencier [Thu, 18 Aug 2011 17:16:29 +0000]
merged branch videlalvaro/patch-1 (PR #419)

Commits
-------

0ef1cb0 Edited doc/templates.rst via GitHub

Discussion
----------

Edited doc/templates.rst via GitHub

I fixed a typo: Variables can by for Variables can be

13 years agoEdited doc/templates.rst via GitHub
Alvaro Videla [Tue, 16 Aug 2011 13:27:40 +0000]
Edited doc/templates.rst via GitHub

13 years agochanged unit tests so that they work for PHP 5.2
Fabien Potencier [Mon, 8 Aug 2011 21:00:24 +0000]
changed unit tests so that they work for PHP 5.2

13 years agomoved some logic to the constructor (that's allows visitors to have the real node...
Fabien Potencier [Sun, 7 Aug 2011 19:32:22 +0000]
moved some logic to the constructor (that's allows visitors to have the real node that will be compiled)

13 years agoadded an optimization for the set tag when used to capture a large chunk of static...
Fabien Potencier [Tue, 26 Jul 2011 21:22:49 +0000]
added an optimization for the set tag when used to capture a large chunk of static text

13 years agoremoved unneeded implementation of Template::getTemplateName()
Fabien Potencier [Sun, 7 Aug 2011 15:26:48 +0000]
removed unneeded implementation of Template::getTemplateName()

13 years agochanged name regex to allow more characters (the same as PHP - works for blocks,...
Fabien Potencier [Sun, 7 Aug 2011 08:07:35 +0000]
changed name regex to allow more characters (the same as PHP - works for blocks, tags, functions, filters, and macros - closes #376)

13 years agomerged branch nikic/doNotUseNameNodeForFuncNames (PR #410)
Fabien Potencier [Sun, 7 Aug 2011 07:37:28 +0000]
merged branch nikic/doNotUseNameNodeForFuncNames (PR #410)

Commits
-------

da4d964 Do not use Node_Expression_Name for function names, just use strings for those

Discussion
----------

Do not use Node_Expression_Name for function names

This patch remove the use of Node_Expression_Name for function names and instead uses normal strings for those. This is mainly to prevent problems with static analysis (e.g. using a loop() function would have triggered with_loop), but it also slightly reduces complexity.

13 years agoDo not use Node_Expression_Name for function names, just use strings for those
nikic [Sun, 3 Jul 2011 10:26:50 +0000]
Do not use Node_Expression_Name for function names, just use strings for those

13 years agoremoved obsolete code
Fabien Potencier [Sat, 6 Aug 2011 08:56:03 +0000]
removed obsolete code

13 years agorefactored code
Fabien Potencier [Sat, 6 Aug 2011 08:44:55 +0000]
refactored code

13 years agoadded the possibility to test for exceptions in integration tests
Fabien Potencier [Sat, 6 Aug 2011 07:48:38 +0000]
added the possibility to test for exceptions in integration tests

13 years agoremoved the possibility to use the extends tag from a block (as it is semantically...
Fabien Potencier [Sat, 6 Aug 2011 07:16:03 +0000]
removed the possibility to use the extends tag from a block (as it is semantically incorrect and it probably does not work as you expect it to in this case)

13 years agomoved Template::getParent() logic to the base class
Fabien Potencier [Sat, 6 Aug 2011 07:09:18 +0000]
moved Template::getParent() logic to the base class

13 years agoadded documentation for previous merge
Fabien Potencier [Sat, 6 Aug 2011 06:40:52 +0000]
added documentation for previous merge

13 years agofixed unit tests for previous merge
Fabien Potencier [Sat, 6 Aug 2011 06:35:41 +0000]
fixed unit tests for previous merge

13 years agomerged branch kotas/master (PR #362)
Fabien Potencier [Sat, 6 Aug 2011 06:34:15 +0000]
merged branch kotas/master (PR #362)

Commits
-------

f5b9df9 added `if` modifier support to for loop like {% for k in v if k is odd %}

Discussion
----------

[1.2] added `if` modifier support to for loop

Hi.

I'm one of Twig users who love it so much. :)

I've made a patch for adding `if` modifier support to `for` loop in Twig.

Example:
<pre>
{% for n in range(0, 5) if n is odd %}
  {{ n }}
{% endfor %}
</pre>

Output:
<pre>
1
3
5
</pre>

This idea comes from Python's list comprehensions. (like `[n for n in range(0,6) if n % 2 == 1]`)

Here is another example.

Before:
<pre>
{% set no_items = true %}
{% for item in items %}
  {% if item.available %}
    {% set no_items = false %}
    {{ item.name }}
  {% endif %}
{% endfor %}
{% if no_items %}
  No items available.
{% endif %}
</pre>

After:
<pre>
{% for item in items if item.available %}
  {{ item.name }}
{% else %}
  No items available.
{% endfor %}
</pre>

I hope you like it. But If not, just ignore this request. :)

Thanks.

---------------------------------------------------------------------------

by fabpot at 2011/06/24 01:33:33 -0700

I like it! I will schedule it for inclusion in Twig 1.2. Thanks.

---------------------------------------------------------------------------

by hhamon at 2011/06/26 16:43:26 -0700

+1

---------------------------------------------------------------------------

by nikic at 2011/06/27 00:42:14 -0700

I think the idea per se is interesting. But I just checked all Twig templates in my whole codebase and couldn't find any use for it. What was your practical use for this feature @kotas?

---------------------------------------------------------------------------

by kotas at 2011/06/27 01:52:48 -0700

@nikic My practical use is shown as the second example in the body of this pull request.

Sometimes you need to "filter" an array by seeing its element's property like "item.available" or by some condition like "item.price >= 500".

To do this, in the current version of Twig, you have to write "for" and "if" as nested scopes. And if you want to write {% else %} of the "for" loop, you have to make a temporary variable to see if all elements are skipped.

I think this feature is not essential, but makes templates clean.

---------------------------------------------------------------------------

by nikic at 2011/06/27 06:23:24 -0700

The thing about `else` seems plausible. +1

---------------------------------------------------------------------------

by chucktrukk at 2011/08/02 17:39:16 -0700

Also +1. that makes some very clean template code.

13 years agoadded GtkSourceView support in doc
Fabien Potencier [Sat, 6 Aug 2011 06:16:57 +0000]
added GtkSourceView support in doc

13 years agomerged branch igorw/recipes-highlight (PR #405)
Fabien Potencier [Thu, 4 Aug 2011 08:29:19 +0000]
merged branch igorw/recipes-highlight (PR #405)

Commits
-------

0580f19 fix highlighting of snippet in recipes doc

Discussion
----------

fix highlighting of snippet in recipes doc

13 years agofix highlighting of snippet in recipes doc
Igor Wiedler [Sun, 31 Jul 2011 00:25:43 +0000]
fix highlighting of snippet in recipes doc

13 years agobumped version to 1.2.0-DEV
Fabien Potencier [Sat, 30 Jul 2011 08:10:16 +0000]
bumped version to 1.2.0-DEV

13 years agoprepared 1.1.2 released
Fabien Potencier [Sat, 30 Jul 2011 07:52:15 +0000]
prepared 1.1.2 released

13 years agofixed Parser bug when a child node is null
Fabien Potencier [Thu, 28 Jul 2011 12:32:45 +0000]
fixed Parser bug when a child node is null

13 years agofixed Parser bug
Fabien Potencier [Thu, 28 Jul 2011 12:32:07 +0000]
fixed Parser bug

13 years agofixed unit test, updated CHANGELOG
Fabien Potencier [Wed, 27 Jul 2011 12:25:09 +0000]
fixed unit test, updated CHANGELOG

13 years agomerged branch JEDIBC/master (PR #401)
Fabien Potencier [Wed, 27 Jul 2011 12:23:49 +0000]
merged branch JEDIBC/master (PR #401)

Commits
-------

755ea99 Correction of a BC break with json_encode and PHP 5.2.x

Discussion
----------

BC break with json_encode and php 5.2.x

Hi,

json_encode on php 5.2.x doesn't take the $options parameter wich result in a warning and the function return nothing.

Cheers.

13 years agoCorrection of a BC break with json_encode and PHP 5.2.x
JEDIBC [Wed, 27 Jul 2011 10:24:34 +0000]
Correction of a BC break with json_encode and PHP 5.2.x

13 years agosimplified code for previous merge/commits
Fabien Potencier [Wed, 27 Jul 2011 09:23:08 +0000]
simplified code for previous merge/commits

13 years agochanged previous commit to preserve better BC
Fabien Potencier [Wed, 27 Jul 2011 08:12:28 +0000]
changed previous commit to preserve better BC

13 years agofixed CS on template output
Fabien Potencier [Wed, 27 Jul 2011 07:44:25 +0000]
fixed CS on template output

13 years agoupdated CHANGELOG
Fabien Potencier [Wed, 27 Jul 2011 07:36:26 +0000]
updated CHANGELOG

13 years agofixed previous merge
Fabien Potencier [Wed, 27 Jul 2011 07:34:28 +0000]
fixed previous merge

13 years agomerged branch hason/optimizer (PR #399)
Fabien Potencier [Wed, 27 Jul 2011 07:33:41 +0000]
merged branch hason/optimizer (PR #399)

Commits
-------

3c5c512 fixed optimization for rendering blocks with variable name

Discussion
----------

Fixed bug in optimization

13 years agofixed optimization for rendering blocks with variable name
Martin Hason [Wed, 27 Jul 2011 06:19:59 +0000]
fixed optimization for rendering blocks with variable name

13 years agoupdated CHANGELOG
Fabien Potencier [Tue, 26 Jul 2011 15:36:37 +0000]
updated CHANGELOG

13 years agofixed inherited templates when an empty body
Fabien Potencier [Tue, 26 Jul 2011 15:32:54 +0000]
fixed inherited templates when an empty body

13 years agomerged branch netzhuffle/master (PR #396)
Fabien Potencier [Tue, 26 Jul 2011 15:30:32 +0000]
merged branch netzhuffle/master (PR #396)

Commits
-------

7b154d6 Switched a tab to four spaces
29d3cb2 Added testcase for #395
4fc7a8d Merge remote-tracking branch 'upstream/master'
c890cf2 Fixed existing tests
9822ac4 Changed Module.php to pass existing tests
fab8c72 fixed issue #395

Discussion
----------

Fix for issue #395

Fix for #395
I hope you can use it.

---------------------------------------------------------------------------

by fabpot at 2011/07/25 00:07:50 -0700

Can you add some unit tests?

---------------------------------------------------------------------------

by netzhuffle at 2011/07/25 13:57:55 -0700

Here you are.

13 years agoremoved comment
Fabien Potencier [Tue, 26 Jul 2011 06:07:02 +0000]
removed comment

13 years agofixed compilation of templates when the body of a child template is not empty
Fabien Potencier [Tue, 26 Jul 2011 06:02:51 +0000]
fixed compilation of templates when the body of a child template is not empty

13 years agoSwitched a tab to four spaces
Jannis Grimm [Mon, 25 Jul 2011 21:10:29 +0000]
Switched a tab to four spaces

13 years agoAdded testcase for #395
Jannis Grimm [Mon, 25 Jul 2011 20:55:53 +0000]
Added testcase for #395

13 years agoMerge remote-tracking branch 'upstream/master'
Jannis Grimm [Mon, 25 Jul 2011 20:32:17 +0000]
Merge remote-tracking branch 'upstream/master'

13 years agoFixed existing tests
Jannis Grimm [Mon, 25 Jul 2011 20:29:47 +0000]
Fixed existing tests

13 years agoChanged Module.php to pass existing tests
Jannis Grimm [Mon, 25 Jul 2011 20:12:48 +0000]
Changed Module.php to pass existing tests

13 years agosimplified CHANGELOG
Fabien Potencier [Mon, 25 Jul 2011 16:46:01 +0000]
simplified CHANGELOG

13 years agoupdated CHANGELOG
Fabien Potencier [Mon, 25 Jul 2011 16:14:12 +0000]
updated CHANGELOG

13 years agofixed output when a macro throws an exception
Fabien Potencier [Mon, 25 Jul 2011 16:12:16 +0000]
fixed output when a macro throws an exception

13 years agofixed PHPDocs for the Token parsers
Fabien Potencier [Mon, 25 Jul 2011 16:05:31 +0000]
fixed PHPDocs for the Token parsers

13 years agofixed PHPDocs for the Core extension
Fabien Potencier [Mon, 25 Jul 2011 15:56:29 +0000]
fixed PHPDocs for the Core extension

13 years agomerged branch pulse00/master (PR #389)
Fabien Potencier [Mon, 25 Jul 2011 13:52:46 +0000]
merged branch pulse00/master (PR #389)

Commits
-------

351910b added twig comments
2b7e8d9 added phpDocs for TokenParsers, filters and tests

Discussion
----------

PHPDocs updated

fixed copy/paste errors and added docs to Sandbox and Use tags

13 years agofixed a parsing problem when a large chunk of text is enclosed in a comment tag
Fabien Potencier [Mon, 25 Jul 2011 13:51:24 +0000]
fixed a parsing problem when a large chunk of text is enclosed in a comment tag

13 years agofixed issue #395
Jannis Grimm [Sun, 24 Jul 2011 20:55:34 +0000]
fixed issue #395

13 years agoadded filename when throwing an exception when we know it
Fabien Potencier [Tue, 19 Jul 2011 13:27:34 +0000]
added filename when throwing an exception when we know it

13 years agoadded twig comments
Robert Gruendler [Mon, 18 Jul 2011 12:35:57 +0000]
added twig comments

13 years agoadded phpDocs for TokenParsers, filters and tests
Robert Gruendler [Mon, 18 Jul 2011 11:32:46 +0000]
added phpDocs for TokenParsers, filters and tests

13 years agoprepared 1.1.1 release
Fabien Potencier [Sun, 17 Jul 2011 13:53:10 +0000]
prepared 1.1.1 release

13 years agomade a small optimization on Core functions
Fabien Potencier [Sat, 16 Jul 2011 19:08:20 +0000]
made a small optimization on Core functions

13 years agoadded an optimization to the Optimizer
Fabien Potencier [Sat, 16 Jul 2011 18:37:44 +0000]
added an optimization to the Optimizer

13 years agoupdated CHANGELOG
Fabien Potencier [Tue, 12 Jul 2011 08:04:49 +0000]
updated CHANGELOG

13 years agofixed CS
Fabien Potencier [Tue, 12 Jul 2011 07:50:37 +0000]
fixed CS

13 years agomerged branch nikic/improveIsDefinedPerformanceInNonStrictMode (PR #381)
Fabien Potencier [Tue, 12 Jul 2011 07:49:44 +0000]
merged branch nikic/improveIsDefinedPerformanceInNonStrictMode (PR #381)

Commits
-------

e4b8371 Improve performance of is defined in non strict mode

Discussion
----------

Improve performance of is defined in non strict mode

Addresses issue #380: This gives a good performance improvement on defined tests in non-strict code. About 2x.

Reasoning: It doesn't make sense to propagate the `is_defined_test` flag into deeper levels in non-strict mode, because all getAttr functions and name accesses will just return `null` if it doesn't exist and `null` is just as good as `false`.

---------------------------------------------------------------------------

by nikic at 2011/07/02 03:22:53 -0700

Though, do not merge yet please. Changes behavior concerning methods.

---------------------------------------------------------------------------

by nikic at 2011/07/02 13:34:32 -0700

Hm, I really don't know what I was thinking when I wrote my last comment. There shouldn't be any behavior changes introduced by that change (and tests pass).

13 years agomerged branch nikic/optimizeVariableAccess2 (PR #382)
Fabien Potencier [Tue, 12 Jul 2011 07:49:06 +0000]
merged branch nikic/optimizeVariableAccess2 (PR #382)

Commits
-------

5b91f12 Update tests
a5ef326 Use Template->getContext in non-strict mode too

Discussion
----------

Use Template->getContext() when in non-strict mode, too

As described in #380 using the current `isset($context['test']) ? $context['test'] : null` approach can cause problems in some cases: The ternary operator always returns by value and thus PHP's copy-on-write concept does not apply. So `$context['test']` needs to be copied in any case, even though a write never happens to it. Basically Twig is copying the values of all variables ever used inside Twig if it operates in non-strict mode. This is problematic when `$context['test']` contains big arrays as the whole array is copied.

In this patch I change Twig to use `Template->getContext` when in non-strict mode too and add an `isStrictVariables` check in there.

13 years agomerged branch real-chocopanda/ob_fix (PR #379)
Fabien Potencier [Mon, 11 Jul 2011 16:54:11 +0000]
merged branch real-chocopanda/ob_fix (PR #379)

Commits
-------

75748a5 revert accidental mode change
681d2b8 fix nested buffers issue #374

Discussion
----------

fix nested buffers issue #374

see #374 for details

---------------------------------------------------------------------------

by fabpot at 2011/07/09 01:02:50 -0700

You have inadvertently changed the mode to 0755. Should stay at 0644.

---------------------------------------------------------------------------

by macolu at 2011/07/09 03:07:42 -0700

Mode change reverted.

About this Windows bug... Are you talking about the zlib issue? When zlib compression is activated, it adds a buffer level that ob_end_clean() can't close. So  ob_get_level() never go below 1.

http://cksource.com/forums/viewtopic.php?t=21653
http://www.php.net/manual/fr/function.ob-get-level.php#52945

In that case, the first ob_get_level() call will always return something greater than 0. So $level var will be > 0. This should avoid infinite loops.

13 years agoupdated VERSION
Fabien Potencier [Mon, 11 Jul 2011 16:53:57 +0000]
updated VERSION

13 years agorevert accidental mode change
Matthieu Robin [Sat, 9 Jul 2011 09:34:52 +0000]
revert accidental mode change

13 years agoUpdate tests
nikic [Sat, 2 Jul 2011 21:53:43 +0000]
Update tests

13 years agoUse Template->getContext in non-strict mode too
nikic [Sat, 2 Jul 2011 21:43:11 +0000]
Use Template->getContext in non-strict mode too

13 years agoImprove performance of is defined in non strict mode
nikic [Sat, 2 Jul 2011 09:20:54 +0000]
Improve performance of is defined in non strict mode

13 years agofix nested buffers issue #374
Matthieu Robin [Fri, 1 Jul 2011 08:35:24 +0000]
fix nested buffers issue #374

13 years agoupdated CHANGELOG
Fabien Potencier [Tue, 28 Jun 2011 06:09:35 +0000]
updated CHANGELOG

13 years agomerged branch markstory/fix-308 (PR #373)
Fabien Potencier [Tue, 28 Jun 2011 06:06:52 +0000]
merged branch markstory/fix-308 (PR #373)

Commits
-------

eaa8995 Grammatical fix.

Discussion
----------

Grammatical fix.

A small grammatical fix for #308 + PR #372

13 years agoGrammatical fix.
Mark Story [Mon, 27 Jun 2011 11:28:17 +0000]
Grammatical fix.

13 years agomerged branch markstory/fix-308 (PR #372)
Fabien Potencier [Mon, 27 Jun 2011 07:29:21 +0000]
merged branch markstory/fix-308 (PR #372)

Commits
-------

c178c28 Making docs more explict as to what kind of object can be used with Twig_Function_Method. Fixes #308

Discussion
----------

Fix for #308

Making docs more explict as to what kind of object can be used with Twig_Function_Method.
Fixes #308

13 years agoMaking docs more explict as to what kind of object can be
Mark Story [Sun, 26 Jun 2011 21:31:56 +0000]
Making docs more explict as to what kind of object can be
used with Twig_Function_Method.
Fixes #308

13 years agofixed json_encode filter (thanks to Koc for the fix)
Fabien Potencier [Fri, 24 Jun 2011 09:26:17 +0000]
fixed json_encode filter (thanks to Koc for the fix)

13 years agoprepare 1.1 RC3
Fabien Potencier [Fri, 24 Jun 2011 09:07:17 +0000]
prepare 1.1 RC3

13 years agofixed method case-sensitivity when using the sandbox mode
Fabien Potencier [Fri, 24 Jun 2011 09:04:41 +0000]
fixed method case-sensitivity when using the sandbox mode

13 years agoupdated CHANGELOG
Fabien Potencier [Fri, 24 Jun 2011 08:42:46 +0000]
updated CHANGELOG

13 years agoadded doc and fixed CS for previous merge
Fabien Potencier [Fri, 24 Jun 2011 08:41:55 +0000]
added doc and fixed CS for previous merge

13 years agomerged branch jturmel/patch-1 (PR #367)
Fabien Potencier [Fri, 24 Jun 2011 08:39:24 +0000]
merged branch jturmel/patch-1 (PR #367)

Commits
-------

6593761 Allow setting of timezone on twig_date_format_filter method

Discussion
----------

Allow setting of timezone on twig_date_format_filter method

13 years agoadded Sublime Text support in the doc
Fabien Potencier [Fri, 24 Jun 2011 08:37:02 +0000]
added Sublime Text support in the doc

13 years agoreworded the section on IDEs and added an Eclipse plugin
Fabien Potencier [Fri, 24 Jun 2011 08:24:14 +0000]
reworded the section on IDEs and added an Eclipse plugin

13 years agoAllow setting of timezone on twig_date_format_filter method
Josh Turmel [Wed, 22 Jun 2011 03:14:00 +0000]
Allow setting of timezone on twig_date_format_filter method

13 years agoadded `if` modifier support to for loop like {% for k in v if k is odd %}
kotas [Fri, 17 Jun 2011 19:00:46 +0000]
added `if` modifier support to for loop like {% for k in v if k is odd %}

13 years agofixed possible security problems with NUL bytes
Fabien Potencier [Fri, 17 Jun 2011 07:17:45 +0000]
fixed possible security problems with NUL bytes

13 years agoreleasing 1.1.0 RC2
Fabien Potencier [Fri, 17 Jun 2011 05:03:39 +0000]
releasing 1.1.0 RC2

13 years agoadded Twig_Error::getRawMessage()
Fabien Potencier [Thu, 16 Jun 2011 08:04:13 +0000]
added Twig_Error::getRawMessage()

13 years agoadded an exception when the template passed to "use" is not a string
Fabien Potencier [Thu, 16 Jun 2011 07:57:17 +0000]
added an exception when the template passed to "use" is not a string

13 years agomerged branch henrikbjorn/issue-347 (PR #348)
Fabien Potencier [Thu, 16 Jun 2011 07:45:47 +0000]
merged branch henrikbjorn/issue-347 (PR #348)

Commits
-------

a8d29b1 Add testcase for issue #347

Discussion
----------

Add testcase for issue #347

Dismisses false issue.

13 years agoupdated CHANGELOG
Fabien Potencier [Thu, 16 Jun 2011 07:45:16 +0000]
updated CHANGELOG

13 years agomerged branch nikic/nestedDefinedTestWithStrictVars (PR #359)
Fabien Potencier [Thu, 16 Jun 2011 07:41:50 +0000]
merged branch nikic/nestedDefinedTestWithStrictVars (PR #359)

Commits
-------

f2a1c2b Refactor and add additional default filter tests
e760483 Make `a.b is defined` not throw an exception if a is not defined (in strict mode)

Discussion
----------

Make `a.b is defined` not throw an exception if a is not defined (in strict mode)

This commit does two things: Firstly (that's the main part) it makes `a.b is defined` not throw an error in strict mode if `a` is undefined (applies for `a.b.c` aso too) [fixes #337]. Additionally it allows `a.b|default` just like it is allowed to do `a|default`.

---------------------------------------------------------------------------

by fabpot at 2011/06/09 22:21:11 -0700

This is quite a big change. Can you add some tests?

---------------------------------------------------------------------------

by nikic at 2011/06/10 08:19:49 -0700

I added some more tests for the default filter in the fixtures. But I wasn't sure how I should test the default test's behavior in strict mode. If you could point me in the right direction here I would add those tests, too ;)

13 years agoupdated CHANGELOG
Fabien Potencier [Thu, 16 Jun 2011 07:41:31 +0000]
updated CHANGELOG

13 years agomerged branch arnaud-lb/line-numbers (PR #353)
Fabien Potencier [Thu, 16 Jun 2011 07:31:53 +0000]
merged branch arnaud-lb/line-numbers (PR #353)

Commits
-------

5ec1955 added {% line \d+ %} directive

Discussion
----------

added {% line \d+ %} directive

This directive allows to change the current line number in the tokenizer.

This allows to generate Twig code from some other Twig or partially-Twig script, and still get relevant line numbers in error messages, when the line numbers of the generated Twig script do not match those of the original script.

For example in the following script:

    foo
    {% line 10 %}
    bar
    {{ baz }}

`"foo"` is on line 1, `"bar"` is considered to be on line 10 and `{{ baz }}` is considered to be on line 11.

This is similar to `# line ...` directives in C.

---------------------------------------------------------------------------

by nikic at 2011/06/05 08:51:20 -0700

I don't quite yet understand it's use cases.

---------------------------------------------------------------------------

by arnaud-lb at 2011/06/05 09:17:57 -0700

The `{% line ... %}` directive is not meant to be used by humans, but rather by generators.

The use case is the same as [#line directives in C](http://gcc.gnu.org/onlinedocs/cpp/Line-Control.html): when you generate a C file from a template, you would prefer that the compiler refers to the line number of the template, instead of the line number of the generated file.

In my case, I built a [HAML compiler for php](https://github.com/arnaud-lb/MtHaml) which can target Twig as an output language. I use it as a Twig pre-processor so that it translates HAML scripts to Twig scripts on the fly in a custom Twig_Loader.

So I have scripts like that:

    %p
      test
    %div = foo.bar

which is compiled like that:

    <p>
      test
    </p>
    <div>
       {{ foo.bar }}
    </div>

If an error occurs in the execution of {{ foo.bar }}, Twig will throw an error refering to line 5 in the original script, which is wrong. A simple solution to this is the {% line %} directive:

    <p>
      test
    </p>
    <div>
    {% line 3 %}
       {{ foo.bar }}
    </div>

Now if an error occures in {{ foo.bar }}, the error will refer to line 3.

---------------------------------------------------------------------------

by nikic at 2011/06/05 09:33:26 -0700

Ah, okay, seems reasonable. Though I'm not sure whether it is appropriate to use the comment syntax to accomplish that.

---------------------------------------------------------------------------

by arnaud-lb at 2011/06/05 10:41:03 -0700

You are right, I changed the request to use the block syntax instead.

13 years agoadded null as an alias for the none test
Fabien Potencier [Tue, 14 Jun 2011 06:19:32 +0000]
added null as an alias for the none test

13 years agoRefactor and add additional default filter tests
nikic [Fri, 10 Jun 2011 14:50:20 +0000]
Refactor and add additional default filter tests

13 years agoMake `a.b is defined` not throw an exception if a is not defined (in strict mode)
nikic [Thu, 9 Jun 2011 18:50:48 +0000]
Make `a.b is defined` not throw an exception if a is not defined (in strict mode)