Charles-P. Clermont and Claude Opus 4.5
6f03452245
style: fix rubocop offenses
...
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-26 16:52:21 -05:00
Charles-P. Clermont and Claude Opus 4.5
1b420ab6d8
fix(case): use Condition.parse_expression for empty/blank handling
...
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-26 16:52:21 -05:00
Charles-P. Clermont
18f1e8a61e
Replace Context[]'s Expression.parse with Parser#expression
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
dff829ec72
Extract Parser#range_lookup out of Expression.parse
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
8b04c52ab2
Extract Parser#variable_lookup out of Expression.parse
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
8efcf7dd3a
Move VariableLookup parsing logic to .parse instead of initializer
...
Goal is to get rid of it entirely, but baby steps.
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
af774ebc55
Replace RangeLookup.parse with RangeLookup.create
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
288c4eaac3
Simplify parse_number
...
We don't need all the multi-dot logic in a world where number comes
out of the Lexer.
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
e1e0129983
Extract Parser#number parse out of Expression.parse
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
2a86852eb3
Extract Parser#string out of Expression.parse
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
85d73e462d
Remove Expression#safe_parse
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
c9ae128354
Rename Parser#expression_node -> Parser#expression
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
6cfcd6cac0
Rename Parser#argument -> argument_string
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
6b78291449
Rename Parser#expression -> Parser#expression_string
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
7d0bdd166d
Move parse_expression to Parser.unsafe_parse_expression
...
- Add Parser#string
- Add Parser#unsafe_parse_expression
- Add private Parser#parse_expression
- Remove ParseContext.parse_expression
- Remove Tag.parse_expression
- Condition.parse_expression now takes a parser as argument
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
cf3d845315
Move safe_parse_expression into Parser.expression_node
...
- Make `Parser` accept the expression cache
- Remove `safe_parse_expression` from `ParseContext`
- Replace all usage of `safe_parse_expression` with `parser.expression_node`
2026-01-26 16:52:17 -05:00
Charles-P. Clermont
851584327a
Remove warnings system
2026-01-26 16:52:17 -05:00
Charles-P. Clermont and Claude Opus 4.5
9a3057f8e6
Point liquid-spec to cp-gate-lax-specs-ai branch
...
This branch gates lax-mode-only specs behind lax_parsing feature:
- shopify_production_recordings: 22 specs
- liquid_ruby: 16 specs
- basics: error regex updated
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-26 16:52:06 -05:00
Charles-P. Clermont
f4a5454cd6
Remove warnings system
2026-01-14 09:55:21 -05:00
Charles-P. Clermont
40b1f83f25
Update changelog with planned changes for 6.0.0
2026-01-14 09:55:21 -05:00
Charles-P. Clermont
62400f71d0
Remove :error_mode
2026-01-14 09:55:20 -05:00
Charles-P. Clermont
b7fa6a89b3
Rename strict2_parse to parse_markup
2026-01-14 09:54:19 -05:00
Charles-P. Clermont
d936ce4ac9
Remove :lax, :strict and :warn error modes
2026-01-14 09:54:19 -05:00
CP Clermont and GitHub
d897899f66
Merge pull request #2036 from Shopify/cp-fix-rubocop
...
Update the specs to new signature and fix CI
2026-01-14 09:14:01 -05:00
Charles-P. Clermont and Claude Opus 4.5
aa817c4cfd
Update liquid-spec adapters for new ctx-based API
...
liquid-spec main changed the adapter API:
- compile block now receives (ctx, source, options) and should store
the template in ctx[:template]
- render block now receives (ctx, assigns, options) and retrieves
the template from ctx[:template]
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-13 13:06:55 -05:00
Charles-P. Clermont
7d90b524ea
Remove on pull_request trigger. It's redundant.
2026-01-12 13:27:53 -05:00
Charles-P. Clermont
bbcf8d6ad8
Better matrix CI check names
2026-01-12 13:27:52 -05:00
Charles-P. Clermont
51ff08db7b
Fix CI
2026-01-12 13:06:13 -05:00
Tobi Lutke and Claude Opus 4.5
eaa9f215bf
Add lax and YJIT liquid-spec adapters
...
- ruby_liquid_lax.rb: Tests lax parsing mode with :lax_parsing feature
- ruby_liquid_yjit.rb: Tests YJIT + strict mode + ActiveSupport
Matrix results: 4483 matched, 18 different (lax edge cases), 61 skipped
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-05 15:11:29 -10:00
Tobi Lutke and Claude Opus 4.5
ccd05e869c
Make blank/empty comparisons invariant to ActiveSupport
...
- Implement liquid_blank? and liquid_empty? methods in Condition
to emulate ActiveSupport's behavior when it's not loaded
- This ensures templates like `{% if x == blank %}` work identically
whether ActiveSupport is loaded or not
- Update liquid-spec adapters for new API (ctx parameter)
- Add rake spec task for running liquid-spec matrix
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-05 14:54:43 -10:00
Tobias Lütke and GitHub
a4a29f3e08
Merge pull request #2034 from Shopify/fix-liquid-spec-without-activesupport
...
Require liquid-spec to be run on commit automatically and related fixes
2026-01-01 22:32:38 -05:00
Tobi Lutke
0058e4322b
Add fail-fast: false to prevent job cancellation
2026-01-01 22:30:14 -05:00
Tobi Lutke
50e1789537
Use liquid-spec feature branch until PR is merged
2026-01-01 22:29:32 -05:00
Tobi Lutke
79a2e042ff
Use liquid-spec main branch
2026-01-01 22:24:00 -05:00
Tobi Lutke
ddee08fb95
Add activesupport feature to with_active_support adapter
...
Both adapters now pass with 0 failures:
- ruby_liquid.rb: 4194 passed (skips activesupport and shopify_error_handling specs)
- ruby_liquid_with_active_support.rb: 4203 passed (skips shopify_error_handling specs)
2026-01-01 22:21:47 -05:00
Tobi Lutke
2988f1a500
Update liquid-spec to branch with per-spec required_features support
2026-01-01 22:15:38 -05:00
Tobi Lutke
ef13b2dfd5
Fix empty? semantics and string first/last for empty strings
...
- nil is NOT empty (but IS blank) - matches Shopify production
- String first/last returns '' for empty strings, not nil - matches ActiveSupport
- Add test for nil not being empty
2026-01-01 22:06:22 -05:00
Tobi Lutke
b0fb0ad83f
Run liquid-spec for all adapters in spec/*.rb
2026-01-01 22:02:42 -05:00
Tobi Lutke
ae26cb29ac
Disable auto-require for activesupport gem
2026-01-01 22:00:49 -05:00
Tobi Lutke
608a877053
Add spec adapter with ActiveSupport for comparison testing
2026-01-01 22:00:38 -05:00
Tobi Lutke
d321adae77
Fix spec adapter for liquid-spec API (template, assigns, options)
2026-01-01 21:59:16 -05:00
Tobi Lutke
53641e19ce
Pin liquid-spec to minimum required commit 3d1b492
2026-01-01 21:57:34 -05:00
Tobi Lutke
ccd10a986a
Pin liquid-spec to main branch
2026-01-01 21:56:39 -05:00
Tobi Lutke
f4890de9d5
hm
2026-01-01 21:54:08 -05:00
Tobi Lutke
7e3ccbc188
test
2026-01-01 21:49:33 -05:00
Tobi Lutke
e0b46049af
Add Ruby 3.4 yjit, 4.0 zjit, and head zjit to CI matrix
2026-01-01 21:44:28 -05:00
Tobi Lutke
19528a9b3f
Update CI matrix: remove Ruby 3.0-3.2, add Ruby 4.0
2026-01-01 21:42:47 -05:00
Tobi Lutke
34c274d314
Fix rubocop: rename ruby-liquid.rb to ruby_liquid.rb and add trailing comma
2026-01-01 21:42:11 -05:00
Tobi Lutke
533d470723
Fix spec job to include :spec bundle group
2026-01-01 21:35:13 -05:00
Tobi Lutke
05f9c2a030
Add liquid-spec for conformance testing
...
- Add liquid-spec gem from GitHub to :spec group
- Create spec/ruby-liquid.rb adapter for the reference implementation
- Add spec job to CI workflow to run liquid-spec tests
2026-01-01 21:34:10 -05:00