liquid-autoescape 2.0.0 → 3.0.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: b397fc9232706426ca91710555a33c98e8db5ce0af23af26fee26cb44cfa4262
4
- data.tar.gz: 3edde43e61454a88ff196180681225b5683982864521dbf860c5ded2d7535cca
3
+ metadata.gz: 46da4857eefb1fa19dfbfca0f73cb03e7869e6cfe2ffbf2dce80d3a0b49b78f5
4
+ data.tar.gz: 2700c5d7f303d09f3ac2f6a0b4160e7f11a86920e09b8dec0d08b61684239d4a
5
5
  SHA512:
6
- metadata.gz: 7a8c6bd93a198ec3b558d60d14fe22c3ebad9bc42e85fc79f7bf0185104c8626b0530629d0f99a1934c94ccbec59f19ae80fa37a769f57cd794f1d1295c3268f
7
- data.tar.gz: 4261aeb4996b91225f316799bb68a914022630830515b5373ce29a53a83775e2532b057ef820e3ccd84ffde52294c37bcdabdf1e3697a9569fbcce8b9d6aa0fd
6
+ metadata.gz: ec72a9037fef0ad0fdc43a8ff93d0cc9b5257a8ac223cc24878b4c0304805a7b2ada9fb1dce16101b5d06be2eaa7528e9364539eb013b0ff2065b06abfe056df
7
+ data.tar.gz: 6b4e20285bbdbbaa132af2bf8026df09c19e8d4bc0d0cb12c0072ce4a4c3ceb3ca4d08fce4faa133e69322c5683fa75f0576be4a464cbec1bc72e18f19b020f2
data/README.md CHANGED
@@ -3,12 +3,14 @@
3
3
  [![Build Status](https://travis-ci.org/Within3/liquid-autoescape.svg)](https://travis-ci.org/Within3/liquid-autoescape)
4
4
 
5
5
  This adds an `{% autoescape %}` block tag to Liquid that causes all variables
6
- referenced within it to be escaped for display in an HTML context.
6
+ referenced within it to be escaped for display in an HTML context. It also adds
7
+ the ability to enable global auto-escaping of all variables by default, and
8
+ provides a set of tools for not escaping variables that are known to be safe.
7
9
 
8
10
  ## Requirements
9
11
 
10
12
  * Ruby >= 2.2
11
- * Liquid 2 or 3
13
+ * Liquid >= 2.3
12
14
 
13
15
  ## Basic Usage
14
16
 
@@ -43,7 +45,7 @@ escaped, use the `skip_escape` filter.
43
45
  ## Advanced Usage
44
46
 
45
47
  Autoescaping can be customized to work better with your environment via a
46
- Ruby-level configuration object. To configure autoescaping, use the `config`
48
+ Ruby-level configuration object. To configure auto-escaping, use the `config`
47
49
  object exposed by `Liquid::Autoescape.configure` in any Ruby file loaded before
48
50
  templates are rendered.
49
51
 
@@ -55,7 +57,7 @@ Liquid::Autoescape.configure do |config|
55
57
  end
56
58
  ```
57
59
 
58
- The autoescape options that can be configured are detailed below.
60
+ The auto-escape options that can be configured are detailed below.
59
61
 
60
62
  ### Trusted Filters
61
63
 
@@ -128,7 +130,7 @@ As mentioned above, each exemption function is passed an object that describes a
128
130
  Liquid variable as used in a template. This object exposes the variable's name,
129
131
  as well as a list of any filters that it uses. These values can be used by each
130
132
  exemption function to determine whether a variable should be exempt from
131
- autoescaping, as shown by the code below:
133
+ auto-escaping, as shown by the code below:
132
134
 
133
135
  ```ruby
134
136
  Liquid::Autoescape.configure do |config|
@@ -164,7 +166,7 @@ Escaped: {{ variable }}
164
166
  Not Escaped: {{ variable | skip_escape }}
165
167
  ```
166
168
 
167
- Additionally, autoescaping can be selectively disabled within a block when
169
+ Additionally, auto-escaping can be selectively disabled within a block when
168
170
  running in global mode:
169
171
 
170
172
  ```liquid
@@ -4,7 +4,7 @@ require "liquid/autoescape/exemption_list"
4
4
  module Liquid
5
5
  module Autoescape
6
6
 
7
- # A configuration file for setting autoescape options
7
+ # A configuration file for setting auto-escape options
8
8
  class Configuration
9
9
 
10
10
  # @return [Liquid::Autoescape::ExemptionList] The list of custom exemptions
@@ -1,7 +1,7 @@
1
1
  module Liquid
2
2
  module Autoescape
3
3
 
4
- # The base error from which all other autoescape errors inherit
4
+ # The base error from which all other auto-escape errors inherit
5
5
  class AutoescapeError < StandardError; end
6
6
 
7
7
  # An error raised when an exemption encounters an issue
@@ -7,7 +7,7 @@ module Liquid
7
7
  #
8
8
  # Exemptions are created from functions that accept a template variable and
9
9
  # and return a boolean value indicating whether or not the variable is
10
- # exempt from autoescaping.
10
+ # exempt from auto-escaping.
11
11
  #
12
12
  # @example An exemption based on a variable's name
13
13
  # exemption = Exemption.new do |variable|
@@ -20,7 +20,7 @@ module Liquid
20
20
  # end
21
21
  class Exemption
22
22
 
23
- # Create a new autoescaping exemption
23
+ # Create a new auto-escaping exemption
24
24
  #
25
25
  # This requires a filter function to be provided that will be passed a
26
26
  # +TemplateVariable+ instance that it can use to return a boolean
@@ -3,10 +3,10 @@ require "liquid"
3
3
  module Liquid
4
4
  module Autoescape
5
5
 
6
- # Liquid filters used to support the autoescape tag
6
+ # Liquid filters used to support the {% autoescape %} tag
7
7
  module Filters
8
8
 
9
- # Flag an input as exempt from autoescaping
9
+ # Flag an input as exempt from auto-escaping
10
10
  #
11
11
  # This is a non-transformative filter that works by registering itself
12
12
  # in a variable's filter chain. If a variable detects this in its
@@ -10,11 +10,11 @@ module Liquid
10
10
 
11
11
  # Possibly render the variable with HTML escaping applied
12
12
  #
13
- # If the autoescaping context variable has been set by the +autoescape+ tag
14
- # or Liquid autoescaping is globally enabled, this will run the variable
15
- # through the global exemption list to determine if it is exempt from
16
- # autoescaping. If it is not, its contents will be rendered as a string
17
- # with all unsafe HTML characters escaped. In all other cases, the
13
+ # If the auto-escaping context variable has been set by the {% autoescape %}
14
+ # tag or Liquid auto-escaping is globally enabled, this will run the
15
+ # variable through the global exemption list to determine if it is exempt
16
+ # from auto-escaping. If it is not, its contents will be rendered as a
17
+ # string with all unsafe HTML characters escaped. In all other cases, the
18
18
  # original, unescaped value of the variable will be rendered.
19
19
  #
20
20
  # @param [Liquid::Context] context The variable's rendering context
@@ -1,5 +1,5 @@
1
1
  module Liquid
2
2
  module Autoescape
3
- VERSION = "2.0.0".freeze
3
+ VERSION = "3.0.0".freeze
4
4
  end
5
5
  end
@@ -5,14 +5,14 @@ require "liquid/autoescape/tags/autoescape"
5
5
  module Liquid
6
6
  module Autoescape
7
7
 
8
- # The context variable that stores the autoescape state
8
+ # The context variable that stores the auto-escape state
9
9
  #
10
10
  # @private
11
11
  ENABLED_FLAG = "liquid_autoescape_enabled".freeze
12
12
 
13
- # Configure Liquid autoescaping
13
+ # Configure Liquid auto-escaping
14
14
  #
15
- # @yieldparam [Liquid::Autoescape::Configuration] config The autoescape configuration
15
+ # @yieldparam [Liquid::Autoescape::Configuration] config The auto-escape configuration
16
16
  def self.configure
17
17
  yield(configuration)
18
18
  end
@@ -22,7 +22,7 @@ module Liquid
22
22
  configuration.reset
23
23
  end
24
24
 
25
- # The current autoescape configuration
25
+ # The current auto-escape configuration
26
26
  #
27
27
  # @return [Liquid::Autoescape::Configuration]
28
28
  def self.configuration
@@ -93,7 +93,15 @@ describe "{% autoescape %}" do
93
93
  )
94
94
  end
95
95
 
96
- it "supports reading the autoescaping state from a variable" do
96
+ it "supports nested auto-escaping contexts" do
97
+ verify_template_output(
98
+ "{% autoescape true %}{{ variable }}{% autoescape false %}{{ variable }}{% autoescape true %}{{ variable }}{% endautoescape %}{% endautoescape %}{% endautoescape %}",
99
+ "&amp;&&amp;",
100
+ "variable" => "&"
101
+ )
102
+ end
103
+
104
+ it "supports reading the auto-escaping state from a variable" do
97
105
  verify_template_output(
98
106
  "{% autoescape escape %}{{ variable }}{% endautoescape %}",
99
107
  "&amp;",
@@ -107,6 +115,20 @@ describe "{% autoescape %}" do
107
115
  expect { Liquid::Template.parse(invalid) }.to raise_error(Liquid::SyntaxError)
108
116
  end
109
117
 
118
+ it "does not escape captured variables" do
119
+ verify_template_output(
120
+ "{% autoescape %}{% capture variable %}&{% endcapture %}{% endautoescape %}{{ variable }}",
121
+ "&"
122
+ )
123
+ end
124
+
125
+ it "can prevent escaping of assigned variables" do
126
+ verify_template_output(
127
+ '{% autoescape %}{% autoescape false %}{% assign variable = "&" %}{% endautoescape %}{{ variable }}{% endautoescape %}{{ variable }}',
128
+ "&amp;&"
129
+ )
130
+ end
131
+
110
132
  describe "configuration options" do
111
133
 
112
134
  after(:each) { Liquid::Autoescape.reconfigure }
@@ -143,7 +165,7 @@ describe "{% autoescape %}" do
143
165
  )
144
166
  end
145
167
 
146
- it "supports opting out of autoescaping within a block" do
168
+ it "supports opting out of auto-escaping within a block" do
147
169
  verify_template_output(
148
170
  "{{ variable }}{% autoescape false %}{{ variable }}{{ variable }}{% endautoescape %}",
149
171
  "&amp;&&",
@@ -8,7 +8,7 @@ module Liquid
8
8
 
9
9
  describe ".configure" do
10
10
 
11
- it "allows autoescape settings to be customized" do
11
+ it "allows auto-escape settings to be customized" do
12
12
  Autoescape.configure do |config|
13
13
  expect(config).to be_an_instance_of(Autoescape::Configuration)
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid-autoescape
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Within3
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-21 00:00:00.000000000 Z
11
+ date: 2019-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid