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
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
Marc-André Cournoyer and GitHub
10e2aa8d5b
Merge pull request #1471 from Shopify/bump-5.1.0
...
Prep for 5.1.0 release
2021-09-15 15:15:13 -04:00
Marc-André Cournoyer
b01de9d325
Prep for 5.1.0 release
2021-09-09 14:28:45 -04:00
Zac Clay and GitHub
a5369c26a8
Add missing quote in comment ( #1468 )
2021-09-09 14:23:11 -04:00
Charles-P. Clermont
e86fe27259
Fix lint
2021-09-09 11:22:39 -04:00
Charles-P. Clermont
c8906d05b9
Add ParseTreeVisitor to RangeLookup
2021-09-09 11:22:39 -04:00
Michael Go and GitHub
50d1a2ffc9
Merge pull request #1458 from Shopify/use-to-liquid-value-with-conditions
...
use Utils.to_liquid_value on conditionals
2021-06-15 12:18:14 -03:00
Michael Go
f686c5dec7
use Utils.to_liquid_value on conditionals
2021-06-14 18:19:37 -03:00
Michael Go and GitHub
aa8ce87b96
Merge pull request #1454 from Shopify/default-filter-with-to-liquid-value
...
utilize input's to_liquid_value on default filter
2021-06-14 15:43:56 -03:00
Michael Go
edd4d70aee
fix unless to use to_liquid_value helper with multiple conditions
2021-06-10 13:28:17 -03:00
Michael Go
ac66dbbafe
utilize input's to_liquid_value on default filter
2021-06-08 15:20:53 -03:00
Daniel Insley and GitHub
017c1b5e83
Base64 Decode & Encode Filters ( #1450 )
2021-06-03 13:23:11 -04: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
cfe1637bdd
Translate RangeError to Liquid::Error for truncatewords with large int ( #1431 )
2021-04-20 11:48:22 -04:00
Dylan Thacker-Smith
eab13a07d9
Add changelog entry for a recent fix
2021-03-29 13:43:01 -07:00
Dylan Thacker-Smith and GitHub
ca96ca0fef
Fix support for using a String subclass for the liquid source ( #1421 )
2021-03-29 16:22:05 -04:00
Marc-André Cournoyer
026157e128
Bump to 5.0.1 and add changelog for release
2021-03-24 16:19:19 -04:00
Charles-P. Clermont
c270a6f378
Add ParseTreeVisitor to Echo tag
...
This fixes theme-check#218, wherein variables used in echo tags are not
considered used by the linter. It is because our visitor doesn't see the
:variable_lookup's in the echo tag since the children array is empty.
But this array is empty because it is swallowed by the @variable.
2021-03-24 09:35:43 -04:00
Dylan Thacker-Smith and GitHub
dcb5a67089
performance: Use split limit in truncatewords ( #1361 )
2021-02-19 13:11:35 -05:00
Unending
3cae09b968
handle carriage return in newlines_to_br
2021-01-16 18:49:01 +01:00
Dylan Thacker-Smith and GitHub
260c863e23
Build the tokenizer through the parse context for liquid-c ( #1386 )
2021-01-07 14:51:41 -05:00
Marc-André Cournoyer
22683cbd2a
Bump version to 5.0.0
...
Bump major because of the numerous breaking changes.
2021-01-05 15:02:14 -05:00
Peter Zhu
51e8d6234a
Freeze blocks in reverse order
2020-12-16 15:18:34 -05:00
Peter Zhu
7ca2846d9c
Move configure options to a method
2020-12-16 15:08:55 -05:00
Dylan Thacker-Smith and GitHub
7ba0fc7952
Merge pull request #1376 from Shopify/support-app-liquid-context
...
Use the same context class for isolated subcontexts for the require tag
2020-12-14 12:12:46 -05:00
Dylan Thacker-Smith
40a9b72b3c
Allow a block to finish context init before squashing instance assigns
...
Liquid::Context#squash_instance_assigns_with_environments can result in
Proc objects in the environment to be eagerly evaluated. So it should be
possible to finish initializing the context object before this is done.
Allowing a block to be used for this purpose avoids the need to add
additional parameters for this purpose.
2020-12-11 14:52:09 -05:00
Dylan Thacker-Smith
4ff26cd707
Use the same context class for isolated subcontexts for the require tag
2020-12-11 14:52:09 -05:00
Dylan Thacker-Smith
da581d988a
Create top-level profile timing nodes for multiple template renders
2020-12-09 10:06:02 -05:00
Dylan Thacker-Smith
896288eff1
Move start of profiling to a Document#render_to_output_buffer patch
2020-12-09 10:04:34 -05:00
Dylan Thacker-Smith
b3f132efd1
Fix total_render_time if a Profiler gets used for multiple renders
2020-12-09 10:04:34 -05:00
Dylan Thacker-Smith and GitHub
60214b957c
Store the profiler in the context instead of a thread-local variable ( #1364 )
2020-12-09 10:04:20 -05:00
Dylan Thacker-Smith
cb2ad71a31
Remove the Profiler#initialize argument which is effectively now unused
...
The @root_timing Timing object that it was used with never exposed that
name.
2020-12-09 10:01:16 -05:00
Dylan Thacker-Smith
900e3a6491
Fix template name in profile result for render tag timing objects
2020-12-09 10:01:16 -05:00
Dylan Thacker-Smith and GitHub
f18084203d
Use monotonic time to measure durations in Liquid::Profiler ( #1362 )
2020-12-09 10:00:44 -05:00
Peter Zhu
bbfcaa2cc0
Revert "Merge pull request #1350 from Shopify/pz-instrument-invalid-end-tag"
...
This reverts commit e6eef4b2c4 , reversing
changes made to c7c21e88f0 .
2020-12-01 14:38:04 -05:00
Peter Zhu
ba657871bc
Revert "Merge pull request #1359 from Shopify/pz-instrument-range-floats"
...
This reverts commit 300adfd7ae , reversing
changes made to ed0aebcbc9 .
2020-12-01 14:37:23 -05:00
Peter Zhu
0a645e72c1
Freeze the body for case
2020-11-27 11:29:17 -05:00
Dylan Thacker-Smith and GitHub
1850511334
Use an atomic subgroup in range regex to avoid pathological backtracking ( #1360 )
2020-11-16 10:29:36 -05:00
Peter Zhu
f357662f37
Instrument floats in ranges
2020-11-13 16:05:29 -05:00
Peter Zhu
ea4f1885f8
Instrument forloop.name
2020-11-12 14:19:12 -05:00
Peter Zhu
d844a3dd8b
Instrument usage of offset:continue in for loops
2020-11-12 13:39:02 -05:00
Max Melentiev and GitHub
9fcba1a26c
Remove unused translation ( #1033 )
2020-11-11 10:21:04 -05:00
Peter Zhu
2ce577e36b
Instrument for bug #1346
2020-11-09 14:27:17 -05:00
Dylan Thacker-Smith and GitHub
8f7f8761d1
Use Array#each instead of Array#inject to avoid an object allocation ( #1341 )
2020-10-29 11:24:19 -04:00
Justin Li and GitHub
a3ff300419
Merge pull request #1330 from ashmaroli/exception-renderer-lambda
...
Stash exception_renderer lambda in a constant
2020-10-28 13:38:20 -04:00
Dylan Thacker-Smith and GitHub
ea6e326b9c
Fix FrozenError for blank case tag with multiple expression when tag ( #1340 )
2020-10-28 13:37:17 -04:00
Ashwin Maroli
740f8759cc
Rename constant to RAISE_EXCEPTION_LAMBDA
2020-10-28 23:06:13 +05:30
Ashwin Maroli
bb9cd4eb6a
Merge upstream branch 'master' into this branch
2020-10-28 22:14:09 +05:30