Dylan Thacker-Smith
23a8438fa6
Use liquid-c master branch again, it now has inline comment support
2022-04-28 09:39:16 -04:00
Dylan Thacker-Smith
21f3337dec
Test a blank line in a comment tag
2022-04-28 09:38:44 -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
Dylan Thacker-Smith and GitHub
8b68630a11
Merge pull request #1474 from Shopify/clarify-warn-error-mode-doc
...
Clarify that the error_mode: :warn parse option is only for strict errors
2022-04-21 12:25:36 -04:00
Chris AtLee and GitHub
8882338aa1
Merge pull request #1553 from Shopify/catlee/shared_partial_cache
...
Ensure that partial caches are shared with subcontexts
2022-04-08 10:09:49 -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
Dylan Thacker-Smith and GitHub
1cae1e497f
Merge pull request #1560 from ghousemohamed/fix-typo
...
Fix typo: syntetic -> synthetic
2022-04-05 20:15:09 -04:00
Dylan Thacker-Smith and GitHub
ed7dae50aa
Merge pull request #1562 from ghousemohamed/bump-actions-checkout-to-v3
...
Bump actions/checkout to v3
2022-04-05 19:46:41 -04:00
Ghouse Mohamed
7e99432bd1
Bumped actions/checkout to v3
2022-04-04 03:57:24 +05:30
Ghouse Mohamed
6c187b8470
Fix typo: syntetic -> synthetic
2022-03-27 23:18:01 +05:30
Dylan Thacker-Smith and GitHub
6e07f73f68
History.md: Remove non-fix from fixes section of recent release. ( #1556 )
2022-03-23 11:59:50 -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 and GitHub
c60c3c7802
Merge pull request #1554 from Shopify/bump-5.3.0
...
Update changelog & bump version for 5.3.0 release
v5.3.0
2022-03-22 13:30:28 -04:00
Marc-André Cournoyer
11625b1bc9
Update release date
2022-03-22 13:24:02 -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 and GitHub
7357dcf185
Merge pull request #1536 from Shopify/flaky-profiler-test-v2
...
Add artificial execution time in profiler tests
2022-03-07 10:06:13 -05:00
Thierry Joyal and GitHub
68c3827ef2
Merge pull request #1525 from Shopify/standardfilter/fix-missing-context-on-iterations
...
[StandardFilter] Fix missing @context on iterations
2022-03-07 09:19:18 -05:00
Thierry Joyal
4af38bc549
[StandardFilter] Fix missing @context on iterations
2022-03-07 09:17:07 -05:00
Thierry Joyal
df241abf70
Add artificial execution time in profiler tests
2022-03-07 08:50:03 -05:00
10f8337209
Test Ruby 3.1 in CI ( #1533 )
...
Co-authored-by: Dylan Thacker-Smith <[email protected] >
2022-03-04 13:23:04 -05:00
Thierry Joyal and GitHub
5ed0410a8b
Merge pull request #1534 from Shopify/context-test-cleanup
...
Context test cleanup
2022-03-04 11:31:00 -05:00
Thierry Joyal
0f5220c391
ContextTest: Classes to use appropriate ancestor
2022-03-04 09:14:57 -05:00
Thierry Joyal
7a23f46fab
ContextTest: Cleanup global variable assignments
2022-03-04 09:10:38 -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 and GitHub
b4a2a79e26
Merge pull request #1527 from Shopify/condition/receive-mandatory-context-argument
...
Condition#evaluate to receive mandatory context argument
2022-03-02 15:04:24 -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
fbdab19358
We're in 2022...
2022-03-02 18:27:25 +01:00
Thierry Joyal and GitHub
ce85ac5d3d
Merge pull request #1529 from Shopify/tests/standard-filters-with-context
...
StandardFiltersTest: Initialize following production code paths with context
2022-03-02 08:44:16 -05:00
Thierry Joyal
c0ffee16a3
StandardFiltersTest: Initialize following production code paths with context
2022-03-01 16:01:00 +00:00
Jean Boussier
a7eb33fa39
Release 5.2.0
v5.2.0
2022-03-01 16:18:49 +01:00
Jean byroot Boussier and GitHub
1a85e98793
Merge pull request #1524 from Shopify/global-constant-cache
...
Eagerly cache global filters
2022-03-01 16:14:31 +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
Dylan Thacker-Smith and GitHub
97f7922457
Add missing changelog entry for PR #1518 ( #1521 )
2022-02-24 14:46:26 -05: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
Tobias Lütke and GitHub
91c54c579d
Merge pull request #1477 from Watson1978/performance
...
Increase parsing performance
2022-02-14 12:25:19 -05:00
Charles-P. Clermont
1310c4978d
Fix kwarg parsing inconsistency with Liquid::C
...
Liquid::C parses liquid filter arguments with dashes in them, Liquid does not.
For tags that accept kwargs and dumps them on the HTML tag, this is an important feature.
e.g. {{ ... | image_tag: loading: 'lazy', data-something: 'value!' }}
Without this change, Liquid would incorrectly parse the
`data-something` kwarg as a single argument and would skip over the
invalid characters.
See https://github.com/Shopify/theme-check/issues/539 for more context
2022-02-11 15:10:07 -05:00
shainaraskas and GitHub
3de1db3c3a
Merge pull request #1509 from Shopify/1508-shopify-docs-link
...
Fix Shopify documentation link
2022-01-20 12:06:16 -05:00
Shaina Raskas
03522caaf8
fix Shopify documentation link
2022-01-20 09:40:48 -05:00
Shaina Raskas
7acea2a9c9
Revert "fix Shopify documentation link"
...
This reverts commit d8ef698539 .
2022-01-20 09:37:26 -05:00
Shaina Raskas
d8ef698539
fix Shopify documentation link
2022-01-20 09:27:00 -05:00
Watson
ebdfdb80e5
Detect quoted string using String#{start_with?, end_with?} to reduce Regexp#=== calling
2021-09-26 04:30:49 +09:00
Watson
95e9fa5010
Use String#=~ and Regexp.last_match instead to retrieve the markup content
...
If the first value is only used obtained with String#scan,
it will increase the performance if replace with `String#=~` and `Regexp.last_match`.
### Environment
- MacBook Air (M1, 2020)
- macOS 12.0 beta 7
- Apple M1
- Ruby 3.0.2
### Test code
```ruby
require 'benchmark/ips'
WhitespaceControl = '-'
VariableStart = /\{\{/
VariableEnd = /\}\}/
ContentOfVariable = /\A#{VariableStart}#{WhitespaceControl}?(.*?)#{WhitespaceControl}?#{VariableEnd}\z/om
token = "{{item.product.featured_image | product_img_url: 'thumb' }}"
Benchmark.ips do |x|
x.report("String#scan") { token.scan(ContentOfVariable) {|content| break } }
x.report("String#match") { m = token.match(ContentOfVariable); m[1] }
x.report("String#=~") { token =~ ContentOfVariable; Regexp.last_match(1) }
x.compare!
end
```
### Result
```
Warming up --------------------------------------
String#scan 135.724k i/100ms
String#match 117.397k i/100ms
String#=~ 151.637k i/100ms
Calculating -------------------------------------
String#scan 1.351M (± 0.8%) i/s - 6.786M in 5.021955s
String#match 1.169M (± 1.3%) i/s - 5.870M in 5.020429s
String#=~ 1.520M (± 0.9%) i/s - 7.733M in 5.087427s
Comparison:
String#=~: 1520250.9 i/s
String#scan: 1351399.0 i/s - 1.12x (± 0.00) slower
String#match: 1169384.1 i/s - 1.30x (± 0.00) slower
```
2021-09-26 04:12:53 +09:00