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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 914cff799e3bd2ac8b59184ae521d8b8eccce15ee3d0dac103e471bcab5f1255
4
- data.tar.gz: 38b104ec712e953540ab7316ce2e4cfac13a5964f5bc32ca39bc1252b908ac43
3
+ metadata.gz: d27b4c9417e479c5eec775f4ec1e5dd6165a2fb5fe76a8b769b31bc5acaff334
4
+ data.tar.gz: 77aef473425cf804dd4dfe1a17f00a424e70e30143952c9670c20d947fa038aa
5
5
  SHA512:
6
- metadata.gz: f7c7f4e17b845a60ef8d7e2bf21b5378f5c116806ca62bb5f310b595275b3080294e378ea57bf2d70f35809ff4570142ccc77a62f0ac1c0afdd629ae6b1a5980
7
- data.tar.gz: 48b4101e4e4c293ae10ef34ef701c8fcc3bbf764a55eca7b5a1022b95fa8f7e64d13f1e7ecc9cae5f456c12f30de9172baed90016de088384ec6847950a711b4
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.7.3 (unreleased)
3
+ ## 5.8.1 (unreleased)
4
4
 
5
- * Raise Liquid::SyntaxError when parsing invalidly encoded strings
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
 
@@ -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
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Liquid
5
- VERSION = "5.7.3"
5
+ VERSION = "5.8.0"
6
6
  end
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.7.3
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-24 00:00:00.000000000 Z
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