Commit Graph

1623 Commits

Author SHA1 Message Date
Fabien Potencier a4e10c14ed optimized macros when imported via the "import" tag
This commit unifies the way macros are called independently of how they
were included (via the from or import tag -- see e81c932).
2012-10-12 16:09:40 +02:00
Fabien Potencier 347bc81d6e merged branch pierrejoye/master (PR #855)
This PR was merged into the master branch.

Commits
-------

d398e55 - drop tsrm fetch, not necessary as it is passed as argument already

Discussion
----------

drop unnecessary tsrmls_fetch
2012-10-08 15:20:00 +02:00
Pierre Joye d398e557e3 - drop tsrm fetch, not necessary as it is passed as argument already 2012-10-08 15:15:38 +02:00
Fabien Potencier 5d7baaf767 refactored some unit tests 2012-10-06 09:21:32 +02:00
Fabien Potencier 7dd2f17646 updated CHANGELOG 2012-10-05 17:09:05 +02:00
Fabien Potencier 8b63fbe72f fixed unit tests when XDebug is enabled 2012-10-05 17:04:55 +02:00
Fabien Potencier 515f34abc3 merged branch weltling/master (PR #854)
This PR was merged into the master branch.

Commits
-------

b013ede fix windows build

Discussion
----------

Trivial fix for windows build
2012-10-04 19:41:45 +02:00
Anatoliy Belsky b013ede1fa fix windows build 2012-10-04 18:50:52 +02:00
Fabien Potencier 120cde3fa5 merged branch greg0ire/patch-1 (PR #851)
This PR was merged into the master branch.

Commits
-------

d52e15b remove tautology

Discussion
----------

remove tautology

We already know the example is "for example".
2012-09-29 18:33:35 +02:00
Fabien Potencier da34d73b4a fixed blanks in the doc 2012-09-29 18:04:58 +02:00
Grégoire Paris d52e15bd36 remove tautology 2012-09-29 19:02:16 +03:00
Fabien Potencier 2f7b43be74 fixed a doc anchor 2012-09-29 18:01:41 +02:00
Fabien Potencier 73ab8ff50c updated CHANGELOG 2012-09-28 23:55:47 +02:00
Fabien Potencier 677d34c55b fixed CS 2012-09-28 23:50:15 +02:00
Fabien Potencier 4ba7ae939c merged branch char101/master (PR #844)
This PR was merged into the master branch.

Commits
-------

c23ef25 Add assertEquals to NativeExtensionTest.php
9126dc6 Twig extension: fix case when accessing property of an array casted into object
34cf8e1 Fix double free
4980903 Enhancements for twig extension
db3cb80 Fix NativeExtensionTest
3485ee7 Native extension: handle dynamic properties defined in the get_properties handler in a per instance fashion.

Discussion
----------

Native extension: call get_properties in per instance manner instead of caching it.

Since dynamic properties of an object can be defined by its get_properties handler, we need to call it for each instance.

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

by char101 at 2012-09-21T10:30:37Z

PHPUnit test result

```
PHPUnit 3.7.1 by Sebastian Bergmann.

.S...........................................................   61 / 1253 (  4%)
.............................................................  122 / 1253 (  9%)
.............................................................  183 / 1253 ( 14%)
.............................................................  244 / 1253 ( 19%)
.............................................................  305 / 1253 ( 24%)
.............................................................  366 / 1253 ( 29%)
.............................................................  427 / 1253 ( 34%)
.............................................................  488 / 1253 ( 38%)
.............................................................  549 / 1253 ( 43%)
.............................................................  610 / 1253 ( 48%)
.............................................................  671 / 1253 ( 53%)
.............................................................  732 / 1253 ( 58%)
.............................................................  793 / 1253 ( 63%)
.............................................................  854 / 1253 ( 68%)
.............................................................  915 / 1253 ( 73%)
.............................................................  976 / 1253 ( 77%)
............................................................. 1037 / 1253 ( 82%)
............................................................. 1098 / 1253 ( 87%)
............................................................. 1159 / 1253 ( 92%)
............................................................. 1220 / 1253 ( 97%)
.................................

Time: 4 seconds, Memory: 13.25Mb

OK, but incomplete or skipped tests!
Tests: 1253, Assertions: 2969, Skipped: 1.
```

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

by stof at 2012-09-21T11:58:51Z

@char101 My previous comment about the way the test should be implemented is still valid. Please rewrite it to use the same way to all other integration tests in Twig

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

by char101 at 2012-09-23T04:51:36Z

@stof I don't see the reason of using a fixture. The test case works, it accomplishes its goal. It's simple. It doesn't test for a feature, it tests for a specific case where PHP crashes.

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

by stof at 2012-09-23T13:53:41Z

@char101 I see one: you are building a Twig instance and rendering a template here, which is exactely what the integration tests are doing.
Btw, your test would fail when running phpunit in strict mode as it does not assert anything

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

by char101 at 2012-09-24T02:05:58Z

@stof I don't have the desire to change what isn't broken, but you are free to change it as you see fit. As for the assert, I have added it to the test.
2012-09-28 23:45:13 +02:00
Fabien Potencier 8d14fa8290 bumped version to 1.10.1-DEV 2012-09-28 22:16:35 +02:00
Fabien Potencier 60e91ba691 prepared the 1.10.0 release v1.10.0 2012-09-28 22:11:39 +02:00
Fabien Potencier b8c917972f merged branch hason/php52 (PR #849)
Commits
-------

adb5d4f Fixed PHP 5.2 incompatibilty

Discussion
----------

Fixed PHP 5.2 incompatibilty
2012-09-26 15:56:31 +02:00
Martin Hasoň adb5d4f152 Fixed PHP 5.2 incompatibilty 2012-09-26 15:12:41 +02:00
Charles c23ef25c8c Add assertEquals to NativeExtensionTest.php 2012-09-24 09:04:21 +07:00
Charles 9126dc649c Twig extension: fix case when accessing property of an array casted into object 2012-09-21 17:29:41 +07:00
Charles 34cf8e1c6e Fix double free 2012-09-21 16:42:13 +07:00
Charles 498090364b Enhancements for twig extension
- Fix extension memory leak
- Fix gcc compile warning (cast to const char *)
- Add TWIG_HAS_DYNAMIC_PROPERTY
- Remove the previous translation of 'array_key_exists($item, $object)'
  into TWIG_ARRAY_KEY_EXISTS when checking object property because what
  it really means is property_exists which has already been handled by
  TWIG_HAS_PROPERTY and TWIG_HAS_DYNAMIC_PROPERTY
- Fix native extension spacing
2012-09-21 14:47:45 +07:00
Charles db3cb803d2 Fix NativeExtensionTest 2012-09-20 18:35:44 +07:00
Charles 3485ee77ea Native extension: handle dynamic properties defined in the get_properties handler in a per instance fashion. 2012-09-20 18:29:21 +07:00
Fabien Potencier b4d1d62b82 updated CHANGELOG 2012-09-18 11:38:15 +02:00
Fabien Potencier 66a8c0b89e tweaked docs 2012-09-18 11:37:33 +02:00
Fabien Potencier bd7f04e38e merged branch drak/reusable_fixtures (PR #805)
Commits
-------

36372c6 Made node tests reusable

Discussion
----------

Reusable tests and fixtures

This PR makes Twig integration testing reusable for 3rd party extensions.

I have implemented resuable functional tests.

The [test runner](https://github.com/zikula/core/blob/master/src/Zikula/Bundle/CoreBundle/Tests/Twig/IntegrationTest.php) and the [fixtures](https://github.com/zikula/core/tree/master/src/Zikula/Bundle/CoreBundle/Tests/Twig/Fixtures) are the only part that an extension needs to implement itself.

I've included documentation in the PR.

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

by jusuff at 2012-08-11T20:41:55Z

This PR would make things little easier. Right now tests are organized in confusing way and are hard to implement for Twig extensions

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

by drak at 2012-08-14T09:09:45Z

@fabpot - This is ready for merging now. When it's merged I'll update the documentation as this PR significantly eases our ability to test extensions.

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

by fabpot at 2012-09-16T14:28:16Z

@drak Do you plan to update this PR with the code you have in Zikula?

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

by drak at 2012-09-16T14:37:30Z

@fabpot - Yes, I just need a couple of days (or less).

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

by drak at 2012-09-17T12:00:34Z

@fabpot - I have ported over the code.

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

by drak at 2012-09-18T08:23:18Z

@fabpot - I updated Zikula to us this particular branch so there is a practical test. I've updated the links in the top description part of this PR with the relevant links. The PR also refactors Twig's core tests to use the re-usable test base classes.

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

by fabpot at 2012-09-18T09:01:10Z

@drak Can you squash your commits before I merge? Thanks.

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

by drak at 2012-09-18T09:14:08Z

@fabpot - I've squashed them now. Thanks!
2012-09-18 11:34:35 +02:00
Drak 36372c61d3 Made node tests reusable 2012-09-18 10:13:12 +01:00
Fabien Potencier e3e8b422c1 merged branch hason/loader (PR #838)
Commits
-------

c503287 Fixed typo in Filesystem loader

Discussion
----------

Fixed typo in Filesystem loader
2012-09-18 07:04:46 +02:00
Martin Hasoň c503287744 Fixed typo in Filesystem loader 2012-09-17 14:11:40 +02:00
Fabien Potencier c38e06ff41 added missing information in the doc 2012-09-16 16:38:44 +02:00
Fabien Potencier c420462b5b merged branch fabpot/named-paths (PR #772)
Commits
-------

7e5acd1 fixed some possible warnings
f0d0d6d fixed typo
b7076fe added Twig_Loader_Filesystem::getNamespaces()
8f7ccd1 moved an exception
9426072 tweaked documentation
b9afa84 renamed the default filesystem namespace to __main__
c34541d changed notation of namespaced templates to @namespace/template_path
0eb4d01 added namespaced templates support in Twig_Loader_Filesystem
c24ea1b added Twig_Loader_Filesystem::prependPath()

Discussion
----------

added namespaced templates support in Twig_Loader_Filesystem

Everything is explained in the updated documentation.

Basically, it gives more flexibility when it comes to manage many templates that are not necessarily related (think frontent vs backend for instance, or templates from different Symfony bundles, ...). It is useful if, for each namespace, you need to look for templates in different directories. This implementation would probably be enough to replace the current Symfony bundle template paths, with more flexibility and less restrictions.

Feedback is more than welcome. One thing I'm not sure about is the `#` separator between the namespace and the template path. Is it the best choice? We need a character that is not used in filesystem paths, so good candidates are: `@`, `!`, `%`, `$`, `*`, `;`, `?`.

Some immediate benefits: give the same template flexibility that we have in Symfony to other frameworks using Twig like Silex. Another benefit would be the ability to share template between Symfony and other frameworks like Twig (more on a proof of concept later).

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

by alessandro1997 at 2012-07-14T16:25:42Z

This is very nice, and I think # is a great choice for the separator character. We could also use @.

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

by jjbohn at 2012-07-14T16:25:59Z

👍 for #

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

by Symfomany at 2012-07-14T16:27:45Z

Pipe character isn't candidate?

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

by inspiran at 2012-07-14T16:32:52Z

I remember from the wetter.com talk at sf live that they actually implemented a similar functionality: allow twig templates to be defined different from the default path.   So they had something like:

{% extends "cms://Home/weather/..."  ... %}
If we could make the "cms" part a configurable setting then one could use it to point to a custom folder or even to a content provider (symfony cmf?)

Maybe that would be another approach?

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

by fabpot at 2012-07-14T16:33:21Z

The other syntax possibility is something more like we have in Symfony: `@namespace/template_path`.

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

by fabpot at 2012-07-14T16:34:37Z

@inspiran: that's another possibility: use the PHP stream notation.

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

by mvrhov at 2012-07-14T16:36:18Z

I'd also prefer uri/php streams syntax...

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

by Tobion at 2012-07-14T16:41:16Z

On Windows I can create a file with `#` in it. How does it distinguish that? I don't think we will find a single seperation character that works on all file systems, do we? And `@` (e.g. namespace@file) would be semantically strange (unless you read it from right-to-left).
So I'd also prefer uri/php stream syntax.

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

by Symfomany at 2012-07-14T16:43:17Z

@fabpot  Pointer Syntax? or greater than character?

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

by markstory at 2012-07-14T16:43:48Z

I'm in favour of the `foo://` style syntax.  It is similar to other parts of PHP, and avoids overlap with filesystem characters, and doesn't introduce new unique syntax.

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

by stof at 2012-07-14T16:44:25Z

@fabpot ``@namespace/template_path`` would make it confusing in Symfony. Because locating a resource with the kernel would use ``@AcmeDemoBundle/Resources/views/layout.html.twig`` whereas Twig would find the same file as ```@AcmeDemoBundle/layout.html.twig``.

And none of ``#``, ``@``, ``!``, ``%``, ``$`` or ``;`` is forbidden in filenames on Windows.

So I think the URI/stream notation is fine

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

by maryo at 2012-07-14T16:46:44Z

On Windows @!%$; are valid. Invalid characters are \/:*?"<>|

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

by maryo at 2012-07-14T16:47:55Z

Is > allowed on Linux?

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

by jschreuder at 2012-07-14T16:49:17Z

Some thoughts from a non-Symfony user:

* Not sure about the `#`, on the one hand it is used as the comment character on the other hand I'm also familiar with it as a membership operator (which supports its usage)
* The streams/PHP syntax: I don't really like this, the syntax signifies some type of protocol to be used. Even stretched to the limits of its definition you wouldn't be able to define different namespaces as different protocols (same protocol, different location).
* `@namespace/file/path` - kind of like this one, the `@` signifies that it is followed by a special symbol (being the namespace name) and other than that a normal path.
* Another option we've used in Fuel is the double colon `::` as in `namespace::file/path` (like the `#` it signifies membership, but doesn't have another significance in Twig)

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

by gunnarlium at 2012-07-14T17:10:15Z

Does it matter what symbols are valid in filenames? Won't the separator just be used for exploding the string into namespace and path, and thus never be used to directly access a file?

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

by alessandro1997 at 2012-07-14T17:15:27Z

As @gunnarlium said, what's the problem with filenames?

```php
$path = 'namespace#new#page.html';
$parts = explode('#', $path, 2);
list($namespace, $filename) = $parts;

// "namespace and "new#page.html"
var_dump($namespace, $filename);
```

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

by stof at 2012-07-14T17:16:19Z

@gunnarlium the issue is that if you use this symbols in the filename of your template without namespace, Twig will consider it as a namespaced template for another file name

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

by stof at 2012-07-14T17:16:45Z

@alessandro1997 the issue is that namespaces are optional

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

by alessandro1997 at 2012-07-14T17:17:07Z

@stof Oh, right. I didn't get that :-)

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

by gunnarlium at 2012-07-14T17:20:32Z

@stof Ok, I see. So what we want is a symbol which is not allowed as a filename? Or (suboptimally) just add a requirement that template filenames can't contain certain reserved symbols?

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

by fabpot at 2012-07-14T17:23:37Z

But then, who is using `#` in a filename?

Anyway, I'm going to implement a version based on PHP streams to stick to the PHP way. Using a PHP stream might also allow us to get rid of the array loader.

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

by alessandro1997 at 2012-07-14T17:24:01Z

@gunnarlium But how would we check if the user is using reserved symbols in template names? Twig isn't aware of the available templates' names until the user requests them. And when he/she does it's too late because Twig doesn't know if the separator is used as namespace or if it's part of the filename.

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

by stof at 2012-07-14T17:33:38Z

@fabpot even if no sane guy would probably use ``#`` in a filename, it would mean that Twig assumes that all its userbase is sane :)

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

by lolautruche at 2012-07-14T18:51:53Z

-1 for #
+1 for php stream, though I agree with @jschreuder's arguments against it
+2 for @ syntax like in Symfony. I find it more consistent.

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

by fabpot at 2012-07-14T19:50:31Z

One problem with PHP streams is that it makes using template names quite ugly and verbose:

    {% include 'twig://namespace/index.html' %}

And for non-namespaced templates:

    {% include 'twig:///index.html' %}

for which we can provide a shortcut:

    {% include 'index.html' %}

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

by fabpot at 2012-07-14T19:54:35Z

If we are using `@` like in Symfony, it will be:

    {% include '@namespace/index.html' %}

And for non-namespaced templates:

    {% include 'index.html' %}

And for Symfony users, the notation would be the same as for resources. If we register each bundle path as a namespace, the path would even be exactly the same:

    {% include '@AcmeDemoBundle/Resources/views/layout.html.twig' %}

EDIT: that's not so simple because of the templates stored under `app/`.

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

by mahono at 2012-07-14T19:56:54Z

might not be the best idea, but what about using Backslash as namespace char?

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

by fabpot at 2012-07-14T19:57:50Z

@mahono: I have not dared to propose this alternative ;)

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

by fabpot at 2012-07-14T20:06:17Z

I've just made an additional commit that implements the `@namespace/template_path` notation.

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

by Baachi at 2012-07-14T20:32:41Z

The `@` syntax is the most consistent solution.
But the integration in symfony2 is really hard and a BC break.

The stream syntax is not a good solution.
`twig` might already be already registered as a stream.

I would suggest the `::` syntax.
2012-09-16 16:34:28 +02:00
Fabien Potencier 7e5acd1fb3 fixed some possible warnings 2012-09-16 16:32:36 +02:00
Fabien Potencier f311c9579d fixed typo 2012-09-16 15:21:03 +02:00
Fabien Potencier 2a48e22424 merged branch loalf/patch-1 (PR #835)
Commits
-------

5c805a1 Update doc/intro.rst

Discussion
----------

Update doc/intro.rst

How to load Twig using Composer
2012-09-16 15:20:46 +02:00
Javier Lopez 5c805a1bb4 Update doc/intro.rst
How to load Twig using Composer
2012-09-16 14:08:03 +02:00
Fabien Potencier 956a66e6da merged branch pborreli/patch-1 (PR #834)
Commits
-------

2c1be8f Fixed typo

Discussion
----------

Fixed typo

http://english.stackexchange.com/questions/3640/is-substract-versus-subtract-a-proper-word
2012-09-13 15:15:32 +02:00
Pascal Borreli 2c1be8f0fd Fixed typo
http://english.stackexchange.com/questions/3640/is-substract-versus-subtract-a-proper-word
2012-09-12 08:29:08 +00:00
Fabien Potencier 68b8c4619c added a small clarification in the doc 2012-09-07 15:42:22 +02:00
Fabien Potencier 459720ff3b added more information about single-quoted vs double-quoted strings 2012-08-31 09:12:18 +02:00
Fabien Potencier f76ed618c8 merged branch franmomu/patch-1 (PR #821)
Commits
-------

93b41c3 [Test] Fix double semicolon

Discussion
----------

[Test] Fix double semicolon
2012-08-30 13:00:12 +02:00
Fran Moreno 93b41c3485 [Test] Fix double semicolon 2012-08-30 13:51:43 +03:00
Fabien Potencier 300b26cf8e merged branch tkoomzaaskz/master (PR #819)
Commits
-------

682b0aa improved twig docs: twig for templates designers, NetBeans PHP IDE supports twig natively from 7.2

Discussion
----------

twig for template designers: NetBeans 7.2 supports twig natively

from NetBeans 7.2 twig support is native and does not have to be installed manually.

http://plugins.netbeans.org/plugin/40565/php-symfony2-framework
quote:
Yes; this extension will be part of NetBeans 7.2, more information here [1].
Tomas
[1] http://blogs.oracle.com/netbeansphp/entry/initial_support_for_symfony2

https://blogs.oracle.com/netbeansphp/entry/initial_support_for_symfony2

I checked it myself - installed NB7.2 and it wonderfully highlights twig.
2012-08-29 07:44:07 +02:00
Tomasz Ducin 682b0aa81c improved twig docs: twig for templates designers, NetBeans PHP IDE supports twig natively from 7.2 2012-08-28 22:41:01 +02:00
Fabien Potencier 92d8b25fee made a better test 2012-08-28 17:05:50 +02:00
Fabien Potencier 721bebc361 fixed an error when a token parser pass a closure as a test to the subparse() method (closes #818) 2012-08-28 14:04:14 +02:00
Fabien Potencier 32c4867f68 bumped version to 1.9.3-DEV 2012-08-25 19:36:54 +02:00
Fabien Potencier f04ef7d6c1 prepared the 1.9.2 release v1.9.2 2012-08-25 19:32:57 +02:00
Fabien Potencier ddc154fe4c updated CHANGELOG 2012-08-24 15:50:46 +02:00