Commit Graph
56 Commits
Author SHA1 Message Date
Dylan Thacker-SmithandGitHub 2b11efc3ae Fix performance regression from introduction of Template#disable_tags (#1274) 2020-08-18 11:25:51 -04:00
Dylan Thacker-Smith 065ccbc4aa Remove support for taint checking 2020-07-23 16:22:46 -04:00
Dylan Thacker-Smith f7ad602bfc Fix liquid tag nested in outer block 2020-01-09 19:13:13 -05:00
Dylan Thacker-SmithandGitHub 8074565c3e Merge pull request #1216 from Shopify/unsupported-taint-mode
Remove support for taint_mode on ruby versions that don't support it
2020-01-07 10:12:36 -05:00
Thierry Joyal c0ffeeef26 [Strainer] Separate factory from template 2020-01-06 17:45:25 +00:00
Dylan Thacker-Smith 40c68c9c83 Remove support for taint_mode on ruby versions that don't support it 2019-12-19 11:12:51 -05:00
Martin Morissette d8f31046a9 Introduce template factory 2019-12-17 21:45:08 -05:00
Alessandro Diogo BrückheimerandMike Angell e83b1e4159 Add ForceEqualSignAlignment to .rubocop.yml (#1190)
* Add ForceEqualSignAlignment to .rubocop.yml

* Revert ForceEqualSignAlignment cop

* Update method alignment

* Undo addition of whitespace to improve readability

* Fix missing alignment
2019-10-21 21:18:48 +10:00
Mike AngellandGitHub 5302f40342 Rubocop fixes (#1182) 2019-10-07 17:06:47 +11:00
Mike AngellandGitHub b667bcb48b Shopify stye guide fixes (#1160) 2019-09-20 02:08:11 +10:00
0d26f05bb8 Enabled frozen string literals (#1154)
* Enabled frozen string literals

* Update rubocop config

* Prefer string interpolation in simple cases

Co-Authored-By: Dylan Thacker-Smith <[email protected]>
2019-09-18 13:19:45 +10:00
Mike Angell 799da202df Apply simple rubocop fixes 2019-08-31 21:58:33 +10:00
Samuel 9672ed5285 Add a new {% render %} tag
Example:

```
// the_count.liquid
{{ number }}! Ah ah ah.

// my_template.liquid
{% for number in range (1..3) %}
  {% render "the_count", number: number %}
{% endfor %}

Output:
1! Ah ah ah.
2! Ah ah ah.
3! Ah ah ah.
```

The `render` tag is a more strict version of the `include` tag. It is
designed to isolate itself from the parent rendering context both by
creating a new scope (which does not inherit the parent scope) and by
only inheriting "static" registers.

Static registers are those that do not hold mutable state which could
affect rendering. This again helps `render`ed templates remain entirely
separate from their calling context.

Unlike `include`, `render` does not permit specifying the target
template using a variable, only a string literal. For example, this
means that `{% render my_dynamic_template %}` is invalid syntax. This
will make it possible to statically analyze the dependencies between
templates without making Turing angry.

Note that the `static_environment` of a rendered template is inherited, unlike
the scope and regular environment. This environment is immutable from within the
template.

An alternate syntax, which mimics the `{% include ... for %}` tag is
currently in design discussion.
2019-08-29 16:32:05 -04:00
Mike AngellandGitHub cf4e77ab0c Merge branch 'master' into bump-ruby-2-4 2019-08-29 00:24:45 +10:00
Tobias LütkeandGitHub 6eab595fae Merge pull request #1086 from Shopify/liquid-tag
Add {% liquid %} and {% echo %} tags
2019-08-27 15:10:20 -04:00
Mike Angell b16b109a80 Bump Minimum version to 2.4 and bump Rubocop 2019-08-28 00:31:44 +10:00
Florian Weingarten 9640e77805 render_to_output_buffer 2019-04-23 17:06:29 -04:00
Justin Li 8d1cd41453 Add {% liquid %}, {% echo %}, and {% local %} tags 2019-04-01 20:08:38 -04:00
Ashwin MaroliandJustin Li f59f6dea83 Fix simple RuboCop offenses and update TODO file (#1062)
* Fix Layout/EmptyLineAfterMagicComment offense

* Fix Layout/ExtraSpacing offense

* Fix Layout/ClosingParenthesisIndentation offenses

* Fix Style/MutableConstant offense

* Fix Style/UnneededInterpolation offenses

* Fix Style/RedundantParentheses offenses

* Update TODO config for RuboCop

* Add executable bit to test/test_helper.rb

ref: https://travis-ci.org/Shopify/liquid/jobs/488169512#L578
2019-02-22 12:32:56 -05:00
Dylan Thacker-SmithandGitHub 48a6d86ac2 Use stackprof to test to lack of object allocations (#896) 2017-05-12 09:20:51 -04:00
Florian WeingartenandFlorian Weingarten e2323332cd Run tests with latest liquid/c gem 2015-06-08 18:38:35 +00:00
Florian Weingarten e761a6864e clean up some rubocop stuff 2015-06-04 12:56:29 -04:00
Justin Li b1ee9129e7 Raise SyntaxError if raw tag is unclosed 2015-06-02 10:56:51 -04:00
Justin Li 6c058823ad Merge pull request #570 from Shopify/fix-strict-conditions
Fix condition parse order in strict mode
2015-05-28 16:33:54 -04:00
Dylan Thacker-Smith 8d5e71f856 Allow the exception handler to convert exceptions to hide error messages. 2015-05-27 18:59:51 -04:00
Justin Li dad98cfc89 Merge pull request #562 from Shopify/use-find_variable-for-parentloop
Use custom stack for forloop references
2015-05-15 21:48:57 -04:00
Justin Li 648a4888af Pop the for_stack register in an ensure 2015-05-14 15:02:20 -04:00
Justin Li f1bc9f27df Include message in assert_template_result 2015-05-14 14:10:45 -04:00
Jean Boussier b31df0fb3d Mordernize code base with __dir__ and require_relative 2015-05-13 15:33:00 -04:00
Justin Li a1b209d212 Disable minitest expectation interface due to reckless modification of Object 2015-04-20 10:15:19 -04:00
Dylan Thacker-Smith 950f062041 Allow filters to redefine Object methods to make them invokable. 2015-02-03 13:51:33 -05:00
Justin Li dd455a6361 Force user to require the profiler themselves 2014-12-04 17:48:26 -05:00
Justin Li 8c70682d6b Don't automatically load hooks 2014-12-04 17:39:41 -05:00
Evan Huus eeb061ef44 Address code review comments
- clean up comment wording
- fix potentially leaky tests
2014-09-16 17:23:26 +00:00
Florian Weingarten 1678c07548 Call to_liquid in Context invoke 2014-08-12 19:54:12 +00:00
Florian Weingarten a2f0f2547d with_global_filter test helper 2014-07-28 19:28:22 +00:00
Ken DreyerandFlorian Weingarten ee4295c889 tests: switch to minitest
Ruby 1.9+ uses Minitest as the backend for Test::Unit. As of Minitest 5,
the shim has broken some compatibility with Test::Unit::TestCase in some
scenarios.

Adjusts the test suite to support Minitest 5's syntax.

Minitest versions 4 and below do not support the newer Minitest::Test
class that arrived in version 5. For that case, use the
MiniTest::Unit::TestCase class as a fallback

Conflicts:
	test/integration/tags/for_tag_test.rb
	test/test_helper.rb
2014-07-28 16:36:38 +00:00
Jason Hiltz-Laforge fd8c30070a Adding tests, spy dependency 2014-07-16 15:05:45 +00:00
Dylan Thacker-Smith a5990042ff Use render! in tests to make debugging test failures easier. 2014-03-20 12:04:17 -04:00
Arthur Neves 208c6c8800 remove ruby-debug 2014-01-07 11:31:46 -05:00
Simon Eskildsen 072c12dc47 Localize errors in Liquid 2013-08-30 12:31:57 -04:00
Simon Eskildsen 0a2f21386d Add fixture helper 2013-08-30 12:31:57 -04:00
Simon Eskildsen f37a984fd7 Add sketch of I18n error translation 2013-08-30 12:31:57 -04:00
Tristan Hume eb68a751ac Hopefully fix CI by improving multi-suite runner. 2013-08-16 15:15:15 -04:00
Tristan Hume ace12e29da Hopefully fix CI on Rubinius 2013-08-02 13:37:56 -04:00
Tristan Hume 824231284c Run test suite with both parsers 2013-08-01 12:49:36 -04:00
Tristan Hume 4dc9cc0ea1 Add back tests for lax parsing 2013-07-26 11:55:50 -04:00
Jonathan Rudenberg 05a20c627d Clean up test suite 2011-10-15 20:04:27 -04:00
Steven Soroka 2f11364417 make ruby-debug optional 2011-04-28 15:18:59 -05:00
Steven Soroka 59a63e0fe5 fix failing test "recursively_included_template_does_not_produce_endless_loop", push needs to come before exception raise since pop is in ensure block and always happens. 2011-04-24 01:09:56 -05:00