liquid 5.7.3 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +13 -7
- data/lib/liquid/locales/en.yml +2 -0
- data/lib/liquid/tags/doc.rb +70 -0
- data/lib/liquid/tags.rb +2 -0
- data/lib/liquid/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d27b4c9417e479c5eec775f4ec1e5dd6165a2fb5fe76a8b769b31bc5acaff334
|
4
|
+
data.tar.gz: 77aef473425cf804dd4dfe1a17f00a424e70e30143952c9670c20d947fa038aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40f39337b8767db07e12beb2aa2a155a3bfb975752e02a09626b7fe3d53ef73c0c79252f29f2cb4a6edc63b8f0afff06d0df663d9a74d27a1f9507efd5db4a2c
|
7
|
+
data.tar.gz: 350ee158bdd4dabfb8781c937ca6426ee06cbaaedaffa469aa324fe717d7b7fbbf1f7a82aebd61a0bd9f96bc0ae4a94e887115385d1ca1f9c76aa2613ef88881
|
data/History.md
CHANGED
@@ -1,24 +1,30 @@
|
|
1
1
|
# Liquid Change Log
|
2
2
|
|
3
|
-
## 5.
|
3
|
+
## 5.8.1 (unreleased)
|
4
4
|
|
5
|
-
|
5
|
+
## 5.8.0
|
6
|
+
|
7
|
+
* Introduce the new `{% doc %}` tag [Guilherme Carreiro]
|
8
|
+
|
9
|
+
## 5.7.3
|
10
|
+
|
11
|
+
* Raise Liquid::SyntaxError when parsing invalidly encoded strings [Chris AtLee]
|
6
12
|
|
7
13
|
## 5.7.2 2025-01-31
|
8
14
|
|
9
|
-
* Fix array filters to not support nested properties
|
15
|
+
* Fix array filters to not support nested properties [Guilherme Carreiro]
|
10
16
|
|
11
17
|
## 5.7.1 2025-01-24
|
12
18
|
|
13
|
-
* Fix the `find` and `find_index`filters to return `nil` when filtering empty arrays
|
14
|
-
* Fix the `has` filter to return `false` when filtering empty arrays
|
19
|
+
* Fix the `find` and `find_index`filters to return `nil` when filtering empty arrays [Guilherme Carreiro]
|
20
|
+
* Fix the `has` filter to return `false` when filtering empty arrays [Guilherme Carreiro]
|
15
21
|
|
16
22
|
## 5.7.0 2025-01-16
|
17
23
|
|
18
24
|
### Features
|
19
25
|
|
20
|
-
* Add `find`, `find_index`, `has`, and `reject` filters to arrays
|
21
|
-
* Compatibility with Ruby 3.4
|
26
|
+
* Add `find`, `find_index`, `has`, and `reject` filters to arrays [Guilherme Carreiro]
|
27
|
+
* Compatibility with Ruby 3.4 [Ian Ker-Seymer]
|
22
28
|
|
23
29
|
## 5.6.4 2025-01-14
|
24
30
|
|
data/lib/liquid/locales/en.yml
CHANGED
@@ -2,12 +2,14 @@
|
|
2
2
|
errors:
|
3
3
|
syntax:
|
4
4
|
tag_unexpected_args: "Syntax Error in '%{tag}' - Valid syntax: %{tag}"
|
5
|
+
block_tag_unexpected_args: "Syntax Error in '%{tag}' - Valid syntax: {% %{tag} %}{% end%{tag} %}"
|
5
6
|
assign: "Syntax Error in 'assign' - Valid syntax: assign [var] = [source]"
|
6
7
|
capture: "Syntax Error in 'capture' - Valid syntax: capture [var]"
|
7
8
|
case: "Syntax Error in 'case' - Valid syntax: case [condition]"
|
8
9
|
case_invalid_when: "Syntax Error in tag 'case' - Valid when condition: {% when [condition] [or condition2...] %}"
|
9
10
|
case_invalid_else: "Syntax Error in tag 'case' - Valid else condition: {% else %} (no parameters) "
|
10
11
|
cycle: "Syntax Error in 'cycle' - Valid syntax: cycle [name :] var [, var2, var3 ...]"
|
12
|
+
doc_invalid_nested: "Syntax Error in 'doc' - Nested doc tags are not allowed"
|
11
13
|
for: "Syntax Error in 'for loop' - Valid syntax: for [item] in [collection]"
|
12
14
|
for_invalid_in: "For loops require an 'in' clause"
|
13
15
|
for_invalid_attribute: "Invalid attribute in for loop. Valid attributes are limit and offset"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Liquid
|
4
|
+
# @liquid_public_docs
|
5
|
+
# @liquid_type tag
|
6
|
+
# @liquid_category syntax
|
7
|
+
# @liquid_name doc
|
8
|
+
# @liquid_summary
|
9
|
+
# Documents template elements with annotations.
|
10
|
+
# @liquid_description
|
11
|
+
# The `doc` tag allows developers to include documentation within Liquid
|
12
|
+
# templates. Any content inside `doc` tags is not rendered or outputted.
|
13
|
+
# Liquid code inside will be parsed but not executed. This facilitates
|
14
|
+
# tooling support for features like code completion, linting, and inline
|
15
|
+
# documentation.
|
16
|
+
# @liquid_syntax
|
17
|
+
# {% doc %}
|
18
|
+
# Renders a message.
|
19
|
+
#
|
20
|
+
# @param {string} foo - A foo value.
|
21
|
+
# @param {string} [bar] - An optional bar value.
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# {% render 'message', foo: 'Hello', bar: 'World' %}
|
25
|
+
# {% enddoc %}
|
26
|
+
# {{ foo }}, {{ bar }}!
|
27
|
+
class Doc < Block
|
28
|
+
NO_UNEXPECTED_ARGS = /\A\s*\z/
|
29
|
+
|
30
|
+
def initialize(tag_name, markup, parse_context)
|
31
|
+
super
|
32
|
+
ensure_valid_markup(tag_name, markup, parse_context)
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse(tokens)
|
36
|
+
while (token = tokens.shift)
|
37
|
+
tag_name = token =~ BlockBody::FullTokenPossiblyInvalid && Regexp.last_match(2)
|
38
|
+
|
39
|
+
raise_nested_doc_error if tag_name == @tag_name
|
40
|
+
|
41
|
+
if tag_name == block_delimiter
|
42
|
+
parse_context.trim_whitespace = (token[-3] == WhitespaceControl)
|
43
|
+
return
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
raise_tag_never_closed(block_name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def render_to_output_buffer(_context, output)
|
51
|
+
output
|
52
|
+
end
|
53
|
+
|
54
|
+
def blank?
|
55
|
+
true
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def ensure_valid_markup(tag_name, markup, parse_context)
|
61
|
+
unless NO_UNEXPECTED_ARGS.match?(markup)
|
62
|
+
raise SyntaxError, parse_context.locale.t("errors.syntax.block_tag_unexpected_args", tag: tag_name)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def raise_nested_doc_error
|
67
|
+
raise SyntaxError, parse_context.locale.t("errors.syntax.doc_invalid_nested")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/liquid/tags.rb
CHANGED
@@ -19,6 +19,7 @@ require_relative "tags/comment"
|
|
19
19
|
require_relative "tags/raw"
|
20
20
|
require_relative "tags/render"
|
21
21
|
require_relative "tags/cycle"
|
22
|
+
require_relative "tags/doc"
|
22
23
|
|
23
24
|
module Liquid
|
24
25
|
module Tags
|
@@ -42,6 +43,7 @@ module Liquid
|
|
42
43
|
'if' => If,
|
43
44
|
'echo' => Echo,
|
44
45
|
'tablerow' => TableRow,
|
46
|
+
'doc' => Doc,
|
45
47
|
}.freeze
|
46
48
|
end
|
47
49
|
end
|
data/lib/liquid/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liquid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Lütke
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-02-
|
10
|
+
date: 2025-02-25 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: strscan
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- lib/liquid/tags/continue.rb
|
121
121
|
- lib/liquid/tags/cycle.rb
|
122
122
|
- lib/liquid/tags/decrement.rb
|
123
|
+
- lib/liquid/tags/doc.rb
|
123
124
|
- lib/liquid/tags/echo.rb
|
124
125
|
- lib/liquid/tags/for.rb
|
125
126
|
- lib/liquid/tags/if.rb
|