Ian Ker-Seymer and GitHub
dbe709c3bf
Use to_liquid_value in uniq filter ( #1948 )
...
* Use to_liquid_value in uniq filter
* Bump version to 5.8.4
2025-04-09 15:00:01 -04:00
Ian Ker-Seymer and GitHub
fdd8c714b2
Stop testing against liquid-c ( #1868 )
...
* Stop testing against `liquid-c`
* Bump to `v5.6.0.rc2`
2024-12-11 12:23:50 -05:00
Michael Go
c77ff68573
clean up all warnings by using new Environment
2024-11-04 16:15:05 -04:00
Ian Ker-Seymer and GitHub
fb6634f454
Add concept of Liquid::Environment ( #1815 )
...
* Add concept of `Liquid::World`
* Rename `World` to `Environment`
2024-08-07 15:00:44 -04:00
Michael Go
24dceef552
set context's template_name with template's name
2023-02-28 10:55:38 -04:00
Michael Go
428c66ffac
add name attribute to Template for more flexibility to set context's template name
2023-02-27 17:11:52 -04:00
Michael Go
0fe4a5d144
render error message with actual template path
2023-02-27 11:01:21 -04:00
Michael Go
1aaf6ed019
recursively parse brackets on variable lookup
2023-01-30 20:19:35 -04:00
Dylan Thacker-Smith
cdb5cb06b2
Remove == method from drops from testing to_liquid_value
...
Since they could cause tests to pass without to_liquid_value being called
on the left side of the equality comparison.
2023-01-13 15:37:27 -05:00
Dylan Thacker-Smith and GitHub
1cd5ec54f0
Merge pull request #1641 from Shopify/assert-template-result-static-env
...
Use static environment assert_template_result input values
2022-11-02 10:05:52 -04:00
Dylan Thacker-Smith
f484b868d0
assert_template_result: Avoid using the BlankFileSystem
...
Since it doesn't reflect the real liquid usage that we are trying
to test against.
2022-10-28 13:55:33 -04:00
Dylan Thacker-Smith
a39422feac
Use static environment assert_template_result input values
...
To match how we use liquid in practice
2022-10-21 11:45:29 -04:00
Dylan Thacker-Smith
bca01e8944
Add assert_syntax_error convenience method
2022-09-13 10:11:01 -04:00
Dylan Thacker-Smith
2c51a1922a
Add error_mode option to assert_match_syntax_error
2022-09-06 16:44:40 -04:00
Dylan Thacker-Smith
308dfc3cb6
Add partials, error_mode and render_errors options to assert_template_result
2022-09-06 16:44:39 -04:00
Dylan Thacker-Smith
0787660603
Reserve keyword arguments for new options in assert_template_result
2022-09-01 17:38:09 -04:00
Jean Boussier
c588337aac
Eagerly cache global filters
...
Including a module can cause Ruby's global constant cache to be busted
if the included module contain constants. So that's something you don't
want to happen at "runtime", otherwise it will severely degrade performance
and if you are using YJIT or MJIT most of the compiled code will be invalidated.
To limit the impact of this, we can pre-include the global filters,
as they're generally registered during boot, that limits the problem
to non-global filters.
2022-03-01 13:40:40 +01:00
Michael Go
e361a4d53c
introduce to_liquid_value on variable look and conditional statements
2021-05-26 17:27:18 -03:00
Dylan Thacker-Smith and GitHub
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-Smith and GitHub
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ückheimer and Mike 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 Angell and GitHub
5302f40342
Rubocop fixes ( #1182 )
2019-10-07 17:06:47 +11:00
Mike Angell and GitHub
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 Angell and GitHub
cf4e77ab0c
Merge branch 'master' into bump-ruby-2-4
2019-08-29 00:24:45 +10:00
Tobias Lütke and GitHub
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 Maroli and Justin 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-Smith and GitHub
48a6d86ac2
Use stackprof to test to lack of object allocations ( #896 )
2017-05-12 09:20:51 -04:00
Florian Weingarten and Florian 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