Marco Concetto Rudilosso and GitHub
753015d8fc
remove question mark
2022-09-08 15:59:46 +02:00
Marco Concetto Rudilosso and GitHub
f4e32d2214
Expose alias_name and for_loop? in render tag
2022-09-08 15:38:18 +02:00
Dylan Thacker-Smith and GitHub
3a736da222
Add a variable_name method Increment and Decrement tags objects ( #1609 )
...
In order to expose this state when using the parse tree.
2022-08-31 09:18:33 -04:00
Dylan Thacker-Smith and GitHub
eb89f22d93
Raise Liquid::SyntaxError instead of NoMethodError for invalid range ( #1607 )
2022-08-25 12:03:56 -04:00
Watson
7611463f02
Increase performance in Liquid::Lexer#tokenize
...
To obtain String Literal, the regular expression might be executed at two times.
It would be slightly faster to run them all at once using `Regexp.union`.
− | before | after | result
-- | -- | -- | --
parse | 63.418 | 65.183 | 1.028x
render | 195.389 | 195.648 | -
parse & render | 46.091 | 46.917 | 1.018x
### Environment
- MacBook Pro (14 inch, 2021)
- macOS 13.0 Beta
- Apple M1 Max
- Ruby 3.1.2
### Before
```
Running benchmark for 10 seconds (with 5 seconds warmup).
Warming up --------------------------------------
parse: 6.000 i/100ms
render: 19.000 i/100ms
parse & render: 4.000 i/100ms
Calculating -------------------------------------
parse: 63.418 (± 0.0%) i/s - 636.000 in 10.028939s
render: 195.389 (± 0.5%) i/s - 1.957k in 10.016466s
parse & render: 46.091 (± 0.0%) i/s - 464.000 in 10.067445s
```
### After
```
Running benchmark for 10 seconds (with 5 seconds warmup).
Warming up --------------------------------------
parse: 6.000 i/100ms
render: 19.000 i/100ms
parse & render: 4.000 i/100ms
Calculating -------------------------------------
parse: 65.183 (± 0.0%) i/s - 654.000 in 10.033549s
render: 195.648 (± 1.0%) i/s - 1.957k in 10.003511s
parse & render: 46.917 (± 0.0%) i/s - 472.000 in 10.060782s
```
2022-08-24 04:23:05 +09:00
Charles-P. Clermont
6f8722a6d3
Bump version to 5.4.0 for release
2022-07-28 13:47:53 -04:00
Zoey Lan
c9ec8f4635
Expose global filter names
2022-07-21 12:34:41 -06:00
Charles-P. Clermont
992e15a173
Add variable_name_expr to render's ParseTreeVisitor
...
Solves Shopify/theme-check#582
`icon` should be visited in the render tag for the following snippet:
```liquid
{% assign icon = 'warning' }
{% render 'icon' with icon %}
```
2022-07-18 08:48:18 -04:00
Jake Olney
74245cd396
clarify sort_natural and fix unless syntax
2022-07-12 18:33:15 -07:00
Dylan Thacker-Smith and GitHub
86605016e1
Add Liquid::VariableLookup#lookup_command? to expose this parse node state ( #1583 )
2022-07-04 14:42:05 -04:00
Jake Olney
6d3c5ef3d3
document forloop.parentloop
2022-06-28 17:10:25 -07:00
Jake Olney
a3e9088a0e
fix concat category
2022-06-27 12:22:18 -07:00
Jake Olney and Melanie Wang
b05393884d
update empty
2022-06-27 15:10:24 -04:00
Jake Olney and Melanie Wang
ef9db08642
fix typo
2022-06-27 15:10:24 -04:00
Jake Olney and Melanie Wang
5dd8c84b47
remove liquid tag
2022-06-27 15:10:23 -04:00
Jake Olney and Melanie Wang
1af12c74cc
fix default category
2022-06-27 15:10:23 -04:00
Jake Olney and Melanie Wang
72bbbda022
updates from audit
2022-06-27 15:10:23 -04:00
Jake Olney and Melanie Wang
489e3ca7bf
update tablerow to tablerowloop
2022-06-27 15:10:23 -04:00
Jake Olney and Melanie Wang
65542f9e4f
small change for for syntax keyword
2022-06-27 15:10:23 -04:00
Jake Olney and Melanie Wang
d497bfffe9
update for and tablerow
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
ebafb0a3fe
changes from example feedback
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
4ec9db3f99
iain feedback
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
95eb5d6036
add inline_comment
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
7ba40d48c0
fix lint error
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
9020dbcd41
shaina feedback
2022-06-27 15:10:22 -04:00
Jake Olney and Melanie Wang
73f7467258
fix lint errors
2022-06-27 15:10:21 -04:00
Jake Olney and Melanie Wang
f3aa5fbd7c
add yard tags
2022-06-27 15:10:21 -04:00
Dylan Thacker-Smith and GitHub
eb70bb9b87
Refactor Liquid::Variable to respect disabling liquid-c nodes ( #1584 )
...
parse_context.parse_expression is overriden in liquid-c and will avoid
parsing to a Liquid::C::Expression when parsing with
`disable_liquid_c_nodes: true`
2022-06-21 15:19:56 -04:00
Dylan Thacker-Smith
f77c766262
Rename Liquid::Registers @registers to @changes
...
since it doesn't represent all the registers
2022-05-04 17:25:53 -04:00
Dylan Thacker-Smith
7bc14ae2be
Remove unused class Liquid::Register to avoid confusion
2022-05-04 17:25:52 -04:00
Dylan Thacker-Smith
41c19929ad
Rename and alias Liquid::StaticRegisters to Liquid::Registers
2022-05-04 17:25:52 -04:00
Dylan Thacker-Smith
54414dfd83
Add changelog entry, making the next release a feature release
2022-04-28 09:43:08 -04:00
Charles-P. Clermont and Dylan Thacker-Smith
1f0a0ad55c
Add # inline comment tag.
...
This commit adds a new tag named `#` that behaves like a comment.
Therefore it behaves as you'd expect any tag would work. The difference
with the comment tag is that the comment is in the tag markup and that
there is no block delimiter.
What it looks like in practice:
```liquid
{%- # this is an inline comment -%}
{% # this too is an inline comment %}
{% liquid
# required args:
assign product = product
# optional args:
assign should_show_border = should_show_border | default: true
assign should_show_cursor = should_show_cursor | default: true
%}
{% liquid
# This is a very long comment that spans multiple lines.
# It looks very similar to what it would look like if you wrote
# ruby code instead of liquid. But it doesn't have all the clunk
# of having an open tag and a close tag with so many characters.
%}
```
Co-authored-by: Dylan Thacker-Smith <[email protected] >
2022-04-28 09:38:44 -04:00
Dylan Thacker-Smith and GitHub
36dce29776
Avoid evaluating the template name in the render tag ( #1568 )
2022-04-21 16:10:42 -04:00
Chris AtLee and Dylan Thacker-Smith
6c2c621712
Ensure that partial caches are shared with subcontexts
...
Make Context use StaticRegisters by default. This makes it easier to
ensure that all subcontexts share the same static registers.
Co-authored-by: Dylan Thacker-Smith <[email protected] >
2022-04-08 10:05:58 -04:00
Marc-André Cournoyer and GitHub
f64af57b7b
Merge pull request #1540 from Watson1978/remove-redundant-regexp
...
Remove redundant regexp
2022-03-22 14:52:49 -04:00
Marc-André Cournoyer
ec6fb4d5fa
Update changelog & bump version for 5.3.0 release
2022-03-17 15:39:04 -04:00
Watson
fad58ef436
Use String#match? instead of String#=~ to reduce allocation for backreferecne
...
## Test code
```ruby
require 'benchmark/ips'
WhitespaceOrNothing = /\A\s*\z/
token = " " * 20
token =~ WhitespaceOrNothing
Benchmark.ips do |x|
x.report("=~") {
token =~ WhitespaceOrNothing
}
x.report("match?") {
token.match?(WhitespaceOrNothing)
}
x.compare!
end
```
## Result
```
Warming up --------------------------------------
=~ 271.356k i/100ms
match? 579.655k i/100ms
Calculating -------------------------------------
=~ 2.717M (± 0.4%) i/s - 13.839M in 5.092947s
match? 5.695M (± 1.6%) i/s - 28.983M in 5.090640s
Comparison:
match?: 5694747.3 i/s
=~: 2717370.9 i/s - 2.10x (± 0.00) slower
```
2022-03-16 12:44:27 +09:00
Watson
22568080b1
Revert "Use strip & empty? to detect Whitespaces"
...
This reverts commit dd7ed00ec4 .
2022-03-16 12:33:45 +09:00
Watson
dd7ed00ec4
Use strip & empty? to detect Whitespaces
...
## Test code
```ruby
require 'benchmark/ips'
WhitespaceOrNothing = /\A\s*\z/
token = " " * 20
Benchmark.ips do |x|
x.report("WhitespaceOrNothing") {
token =~ WhitespaceOrNothing
}
x.report("strip & empty?") {
token.strip.empty?
}
x.compare!
end
```
## Result
```
Warming up --------------------------------------
WhitespaceOrNothing 266.391k i/100ms
strip & empty? 1.044M i/100ms
Calculating -------------------------------------
WhitespaceOrNothing 2.705M (± 0.4%) i/s - 13.586M in 5.023453s
strip & empty? 10.400M (± 1.1%) i/s - 52.182M in 5.017990s
Comparison:
strip & empty?: 10400286.2 i/s
WhitespaceOrNothing: 2704552.3 i/s - 3.85x (± 0.00) slower
```
2022-03-12 19:24:56 +09:00
Watson
1667c1180e
Use start_with? and end_with? to detect SQUARE_BRAKET
...
## Test code
```ruby
require 'benchmark/ips'
SQUARE_BRACKETED = /\A\[(.*)\]\z/m
markup = "[product.catchall]"
Benchmark.ips do |x|
x.report("SQUARE_BRACKETED") {
if markup =~ SQUARE_BRACKETED
Regexp.last_match(1)
end
}
x.report("start/end_with?") {
if markup&.start_with?('[') && markup&.end_with?(']')
markup[1..-2]
end
}
x.compare!
end
```
## Result
```
Warming up --------------------------------------
SQUARE_BRACKETED 261.300k i/100ms
start/end_with? 548.813k i/100ms
Calculating -------------------------------------
SQUARE_BRACKETED 2.632M (± 0.6%) i/s - 13.326M in 5.064085s
start/end_with? 5.471M (± 0.5%) i/s - 27.441M in 5.015770s
Comparison:
start/end_with?: 5470994.1 i/s
SQUARE_BRACKETED: 2631642.3 i/s - 2.08x (± 0.00) slower
```
2022-03-12 18:14:16 +09:00
Thierry Joyal
4af38bc549
[StandardFilter] Fix missing @context on iterations
2022-03-07 09:17:07 -05:00
Peter Zhu and GitHub
3f7edf00b9
Merge pull request #1531 from Shopify/pz-array-fetch-warning
...
Fix warning about block and default value
2022-03-02 16:25:23 -05:00
Thierry Joyal
1d2bee1f60
Condition#evaluate to receive mandatory context argument
2022-03-02 14:35:31 -05:00
Peter Zhu
01e6eec97a
Fix warning about block and default value
...
Ruby's Array#fetch accepts either a default value or a block, but not
both. If both are passed in, then it uses the block and outputs this
warning:
```
lib/liquid/static_registers.rb:34: warning: block supersedes default value argument
```
2022-03-02 14:33:12 -05:00
Jean Boussier
a7eb33fa39
Release 5.2.0
2022-03-01 16:18:49 +01: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
0d83e64cfe
Add replace_last and remove_last filters ( #1422 )
...
Co-authored-by: ADTC <[email protected] >
Co-authored-by: Dylan Thacker-Smith <[email protected] >
2022-02-24 14:02:15 -05:00
Dylan Thacker-Smith and GitHub
0d5e01ae98
Fix some internal errors in filters from invalid input. ( #1476 )
...
These fixes came from improving the corresponding test, so these might not
actually be causing problems in practice.
2022-02-24 09:17:37 -05:00
Charles-Philippe Clermont and GitHub
15eaa49e48
Merge pull request #1518 from Shopify/fix/kwarg-key-name-liquid-c-inconsistency
...
Fix kwarg parsing inconsistency with Liquid::C
2022-02-14 13:22:12 -05:00