haml 6.0.12 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -0
- data/CHANGELOG.md +5 -0
- data/lib/haml/compiler/script_compiler.rb +1 -3
- data/lib/haml/engine.rb +6 -4
- data/lib/haml/{escapable.rb → escape.rb} +1 -1
- data/lib/haml/escape_any.rb +21 -0
- data/lib/haml/{force_escapable.rb → force_escape.rb} +5 -5
- data/lib/haml/rails_template.rb +3 -1
- data/lib/haml/util.rb +1 -0
- data/lib/haml/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85f9ebef95ef0ad6c4eece471031137c6ed9fe0eea2d487c66c2aa7416ed6a1f
|
4
|
+
data.tar.gz: bfda96ada6de5a9cecb466ddc1cc9246406df4395e6f06e362980e89dfb4b929
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b2809a903761ad6e2049b77fbe0d7fa56100c3e0b0e0b0a4aa8d56d5970d52cb3b1b1e31c04ba9f75bd55b7140bc6945042e85ac7f328bc197be510b8703233
|
7
|
+
data.tar.gz: 13e703e2c67ea7ab3e8846b85b1fa656230b7d2015e8c9f3c08ea83a4e5771c20ced4e8d9ae317c0e3e381a60992ef38cfdc63d3fc1e14caa0d0d0206cc92562
|
data/.github/workflows/test.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Haml Changelog
|
2
2
|
|
3
|
+
## 6.1.0
|
4
|
+
|
5
|
+
* Optimize away a `to_s` call on `=` scripts
|
6
|
+
* Fix escaping for objects that return an `html_safe` string on `to_s` [#1117](https://github.com/haml/haml/issues/1117)
|
7
|
+
|
3
8
|
## 6.0.12
|
4
9
|
|
5
10
|
* Fix a whitespace removal with `>` and an `if`-`else` statement [#1114](https://github.com/haml/haml/issues/1114)
|
@@ -98,10 +98,8 @@ module Haml
|
|
98
98
|
def compile_script_result(result, node)
|
99
99
|
if !node.value[:escape_html] && node.value[:preserve]
|
100
100
|
result = find_and_preserve(result)
|
101
|
-
else
|
102
|
-
result = "(#{result}).to_s"
|
103
101
|
end
|
104
|
-
[:
|
102
|
+
[:escapeany, node.value[:escape_html], [:dynamic, result]]
|
105
103
|
end
|
106
104
|
|
107
105
|
def find_and_preserve(code)
|
data/lib/haml/engine.rb
CHANGED
@@ -4,8 +4,9 @@ require 'haml/parser'
|
|
4
4
|
require 'haml/compiler'
|
5
5
|
require 'haml/html'
|
6
6
|
require 'haml/string_splitter'
|
7
|
-
require 'haml/
|
8
|
-
require 'haml/
|
7
|
+
require 'haml/escape'
|
8
|
+
require 'haml/escape_any'
|
9
|
+
require 'haml/force_escape'
|
9
10
|
require 'haml/dynamic_merger'
|
10
11
|
require 'haml/ambles'
|
11
12
|
require 'haml/whitespace'
|
@@ -32,8 +33,9 @@ module Haml
|
|
32
33
|
use HTML
|
33
34
|
use StringSplitter
|
34
35
|
filter :StaticAnalyzer
|
35
|
-
use
|
36
|
-
use
|
36
|
+
use Escape
|
37
|
+
use EscapeAny
|
38
|
+
use ForceEscape
|
37
39
|
filter :ControlFlow
|
38
40
|
use Ambles
|
39
41
|
filter :MultiFlattener
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'haml/escape'
|
3
|
+
|
4
|
+
module Haml
|
5
|
+
# This module allows Temple::Filter to dispatch :fescape on `#compile`.
|
6
|
+
module EscapeanyDispathcer
|
7
|
+
def on_escapeany(flag, exp)
|
8
|
+
[:escapeany, flag, compile(exp)]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
::Temple::Filter.include EscapeanyDispathcer
|
12
|
+
|
13
|
+
# Unlike Haml::Escape, this calls to_s when not escaped.
|
14
|
+
class EscapeAny < Escape
|
15
|
+
alias_method :on_escapeany, :on_escape
|
16
|
+
|
17
|
+
def on_dynamic(value)
|
18
|
+
[:dynamic, @escape ? @escape_code % value : "(#{value}).to_s"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'haml/
|
2
|
+
require 'haml/escape'
|
3
3
|
|
4
4
|
module Haml
|
5
5
|
# This module allows Temple::Filter to dispatch :fescape on `#compile`.
|
@@ -10,8 +10,8 @@ module Haml
|
|
10
10
|
end
|
11
11
|
::Temple::Filter.include FescapeDispathcer
|
12
12
|
|
13
|
-
# Unlike Haml::
|
14
|
-
class
|
13
|
+
# Unlike Haml::Escape, this escapes value even if it's html_safe.
|
14
|
+
class ForceEscape < Escape
|
15
15
|
def initialize(opts = {})
|
16
16
|
super
|
17
17
|
@escape_code = options[:escape_code] || "::Haml::Util.escape_html((%s))"
|
@@ -20,8 +20,8 @@ module Haml
|
|
20
20
|
|
21
21
|
alias_method :on_fescape, :on_escape
|
22
22
|
|
23
|
-
#
|
24
|
-
# This method is not used if it's inserted after Haml::
|
23
|
+
# ForceEscape doesn't touch :escape expression.
|
24
|
+
# This method is not used if it's inserted after Haml::Escape.
|
25
25
|
def on_escape(flag, exp)
|
26
26
|
[:escape, flag, compile(exp)]
|
27
27
|
end
|
data/lib/haml/rails_template.rb
CHANGED
data/lib/haml/util.rb
CHANGED
data/lib/haml/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Natalie Weizenbaum
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: exe
|
14
14
|
cert_chain: []
|
15
|
-
date: 2022-
|
15
|
+
date: 2022-12-10 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: temple
|
@@ -301,7 +301,8 @@ files:
|
|
301
301
|
- lib/haml/dynamic_merger.rb
|
302
302
|
- lib/haml/engine.rb
|
303
303
|
- lib/haml/error.rb
|
304
|
-
- lib/haml/
|
304
|
+
- lib/haml/escape.rb
|
305
|
+
- lib/haml/escape_any.rb
|
305
306
|
- lib/haml/filters.rb
|
306
307
|
- lib/haml/filters/base.rb
|
307
308
|
- lib/haml/filters/cdata.rb
|
@@ -319,7 +320,7 @@ files:
|
|
319
320
|
- lib/haml/filters/scss.rb
|
320
321
|
- lib/haml/filters/text_base.rb
|
321
322
|
- lib/haml/filters/tilt_base.rb
|
322
|
-
- lib/haml/
|
323
|
+
- lib/haml/force_escape.rb
|
323
324
|
- lib/haml/helpers.rb
|
324
325
|
- lib/haml/html.rb
|
325
326
|
- lib/haml/identity.rb
|