haml 5.2.0 → 5.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +40 -1
- data/CHANGELOG.md +8 -1
- data/REFERENCE.md +9 -5
- data/haml.gemspec +1 -1
- data/lib/haml/parser.rb +31 -3
- data/lib/haml/util.rb +1 -1
- data/lib/haml/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3182fca5b2f85849a1abd849d3352858834737b83b7d57d4d29c19e84518f1c
|
4
|
+
data.tar.gz: ea005149aeccb8247ff121a4a33b3118d289f18ed5f12b101fd739892fb4edae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8fcd8c9cb45217a405820c13d69330ef53c82aa22b25026d0886937505a5dc101803c55087f74cc5467a1930f43bd5ab6fd7d44d69e1234aeab06db634b8fdd
|
7
|
+
data.tar.gz: b8c0f35f75c6beac4e27c7066eefbf8385346abecbdab2cb3303b2ea2a3f19dfc2d209f171c0801d383d9bc3bd526721e674939e808ec2763712bbd94c7110d8
|
data/.travis.yml
CHANGED
@@ -9,6 +9,9 @@ rvm:
|
|
9
9
|
- 2.6
|
10
10
|
- 2.5
|
11
11
|
- jruby-9.2
|
12
|
+
env:
|
13
|
+
- RUBYOPT="--enable-frozen-string-literal"
|
14
|
+
- RUBYOPT=""
|
12
15
|
gemfile:
|
13
16
|
- test/gemfiles/Gemfile.rails-6.0.x
|
14
17
|
- test/gemfiles/Gemfile.rails-5.2.x
|
@@ -26,24 +29,60 @@ matrix:
|
|
26
29
|
gemfile: test/gemfiles/Gemfile.rails-4.1.x
|
27
30
|
- rvm: 2.5
|
28
31
|
gemfile: test/gemfiles/Gemfile.rails-4.2.x
|
32
|
+
- rvm: 2.5
|
33
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x
|
34
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
35
|
+
- rvm: 2.5
|
36
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x.erubi
|
37
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
38
|
+
- rvm: 2.5
|
39
|
+
gemfile: test/gemfiles/Gemfile.rails-5.1.x
|
40
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
29
41
|
- rvm: 2.6
|
30
42
|
gemfile: test/gemfiles/Gemfile.rails-4.0.x
|
31
43
|
- rvm: 2.6
|
32
44
|
gemfile: test/gemfiles/Gemfile.rails-4.1.x
|
33
45
|
- rvm: 2.6
|
34
46
|
gemfile: test/gemfiles/Gemfile.rails-4.2.x
|
47
|
+
- rvm: 2.6
|
48
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x
|
49
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
50
|
+
- rvm: 2.6
|
51
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x.erubi
|
52
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
53
|
+
- rvm: 2.6
|
54
|
+
gemfile: test/gemfiles/Gemfile.rails-5.1.x
|
55
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
35
56
|
- rvm: 2.7
|
36
57
|
gemfile: test/gemfiles/Gemfile.rails-4.0.x
|
37
58
|
- rvm: 2.7
|
38
59
|
gemfile: test/gemfiles/Gemfile.rails-4.1.x
|
39
60
|
- rvm: 2.7
|
40
61
|
gemfile: test/gemfiles/Gemfile.rails-4.2.x
|
62
|
+
- rvm: 2.7
|
63
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x
|
64
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
65
|
+
- rvm: 2.7
|
66
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x.erubi
|
67
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
68
|
+
- rvm: 2.7
|
69
|
+
gemfile: test/gemfiles/Gemfile.rails-5.1.x
|
70
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
41
71
|
- rvm: ruby-head
|
42
72
|
gemfile: test/gemfiles/Gemfile.rails-4.0.x
|
43
73
|
- rvm: ruby-head
|
44
74
|
gemfile: test/gemfiles/Gemfile.rails-4.1.x
|
45
75
|
- rvm: ruby-head
|
46
76
|
gemfile: test/gemfiles/Gemfile.rails-4.2.x
|
77
|
+
- rvm: jruby-9.2
|
78
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x
|
79
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
80
|
+
- rvm: jruby-9.2
|
81
|
+
gemfile: test/gemfiles/Gemfile.rails-5.0.x.erubi
|
82
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
83
|
+
- rvm: jruby-9.2
|
84
|
+
gemfile: test/gemfiles/Gemfile.rails-5.1.x
|
85
|
+
env: RUBYOPT="--enable-frozen-string-literal"
|
47
86
|
include:
|
48
87
|
- rvm: 2.7
|
49
88
|
gemfile: test/gemfiles/Gemfile.rails-edge
|
@@ -69,4 +108,4 @@ before_install:
|
|
69
108
|
- ./cc-test-reporter before-build
|
70
109
|
script: "bundle exec rake submodules test"
|
71
110
|
after_script:
|
72
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
111
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
# Haml Changelog
|
2
2
|
|
3
|
+
## 5.2.1
|
4
|
+
|
5
|
+
Released on November 30, 2020
|
6
|
+
([diff](https://github.com/haml/haml/compare/v5.2.0...v5.2.1)).
|
7
|
+
|
8
|
+
* Add in improved "multiline" support for attributes [#1043](https://github.com/haml/haml/issues/1043)
|
9
|
+
|
3
10
|
## 5.2
|
4
11
|
|
5
12
|
Released on September 28, 2020
|
6
|
-
([diff](https://github.com/haml/haml/compare/v5.1.2...v5.2)).
|
13
|
+
([diff](https://github.com/haml/haml/compare/v5.1.2...v5.2.0)).
|
7
14
|
|
8
15
|
* Fix crash in the attribute optimizer when `#inspect` is overridden in TrueClass / FalseClass [#972](https://github.com/haml/haml/issues/972)
|
9
16
|
* Do not HTML-escape templates that are declared to be plaintext [#1014](https://github.com/haml/haml/issues/1014) (Thanks [@cesarizu](https://github.com/cesarizu))
|
data/REFERENCE.md
CHANGED
@@ -228,15 +228,19 @@ is compiled to:
|
|
228
228
|
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'></html>
|
229
229
|
|
230
230
|
Attribute hashes can also be stretched out over multiple lines to accommodate
|
231
|
-
many attributes.
|
232
|
-
For example:
|
231
|
+
many attributes.
|
233
232
|
|
234
|
-
%script{
|
235
|
-
|
233
|
+
%script{
|
234
|
+
"type": text/javascript",
|
235
|
+
"src": javascripts/script_#{2 + 7}",
|
236
|
+
"data": {
|
237
|
+
"controller": "reporter",
|
238
|
+
},
|
239
|
+
}
|
236
240
|
|
237
241
|
is compiled to:
|
238
242
|
|
239
|
-
<script src='javascripts/script_9' type='text/javascript'></script>
|
243
|
+
<script src='javascripts/script_9' type='text/javascript' data-controller='reporter'></script>
|
240
244
|
|
241
245
|
#### `:class` and `:id` Attributes {#class-and-id-attributes}
|
242
246
|
|
data/haml.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'rbench'
|
33
33
|
spec.add_development_dependency 'minitest', '>= 4.0'
|
34
34
|
spec.add_development_dependency 'nokogiri'
|
35
|
-
spec.add_development_dependency 'simplecov'
|
35
|
+
spec.add_development_dependency 'simplecov'
|
36
36
|
|
37
37
|
spec.description = <<-END
|
38
38
|
Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's
|
data/lib/haml/parser.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'ripper'
|
3
4
|
require 'strscan'
|
4
5
|
|
5
6
|
module Haml
|
@@ -90,6 +91,9 @@ module Haml
|
|
90
91
|
ID_KEY = 'id'.freeze
|
91
92
|
CLASS_KEY = 'class'.freeze
|
92
93
|
|
94
|
+
# Used for scanning old attributes, substituting the first '{'
|
95
|
+
METHOD_CALL_PREFIX = 'a('
|
96
|
+
|
93
97
|
def initialize(options)
|
94
98
|
@options = Options.wrap(options)
|
95
99
|
# Record the indent levels of "if" statements to validate the subsequent
|
@@ -651,13 +655,18 @@ module Haml
|
|
651
655
|
# @return [String] rest
|
652
656
|
# @return [Integer] last_line
|
653
657
|
def parse_old_attributes(text)
|
654
|
-
text = text.dup
|
655
658
|
last_line = @line.index + 1
|
656
659
|
|
657
660
|
begin
|
658
|
-
|
661
|
+
# Old attributes often look like a valid Hash literal, but it sometimes allow code like
|
662
|
+
# `{ hash, foo: bar }`, which is compiled to `_hamlout.attributes({}, nil, hash, foo: bar)`.
|
663
|
+
#
|
664
|
+
# To scan such code correctly, this scans `a( hash, foo: bar }` instead, stops when there is
|
665
|
+
# 1 more :on_embexpr_end (the last '}') than :on_embexpr_beg, and resurrects '{' afterwards.
|
666
|
+
balanced, rest = balance_tokens(text.sub(?{, METHOD_CALL_PREFIX), :on_embexpr_beg, :on_embexpr_end, count: 1)
|
667
|
+
attributes_hash = balanced.sub(METHOD_CALL_PREFIX, ?{)
|
659
668
|
rescue SyntaxError => e
|
660
|
-
if
|
669
|
+
if e.message == Error.message(:unbalanced_brackets) && !@template.empty?
|
661
670
|
text << "\n#{@next_line.text}"
|
662
671
|
last_line += 1
|
663
672
|
next_line
|
@@ -811,6 +820,25 @@ module Haml
|
|
811
820
|
Haml::Util.balance(*args) or raise(SyntaxError.new(Error.message(:unbalanced_brackets)))
|
812
821
|
end
|
813
822
|
|
823
|
+
# Unlike #balance, this balances Ripper tokens to balance something like `{ a: "}" }` correctly.
|
824
|
+
def balance_tokens(buf, start, finish, count: 0)
|
825
|
+
text = ''.dup
|
826
|
+
Ripper.lex(buf).each do |_, token, str|
|
827
|
+
text << str
|
828
|
+
case token
|
829
|
+
when start
|
830
|
+
count += 1
|
831
|
+
when finish
|
832
|
+
count -= 1
|
833
|
+
end
|
834
|
+
|
835
|
+
if count == 0
|
836
|
+
return text, buf.sub(text, '')
|
837
|
+
end
|
838
|
+
end
|
839
|
+
raise SyntaxError.new(Error.message(:unbalanced_brackets))
|
840
|
+
end
|
841
|
+
|
814
842
|
def block_opened?
|
815
843
|
@next_line.tabs > @line.tabs
|
816
844
|
end
|
data/lib/haml/util.rb
CHANGED
@@ -213,7 +213,7 @@ MSG
|
|
213
213
|
scan.scan(/\w+/)
|
214
214
|
end
|
215
215
|
content = eval("\"#{interpolated}\"")
|
216
|
-
content
|
216
|
+
content = "#{char}#{content}" if char == '@' || char == '$'
|
217
217
|
content = "Haml::Helpers.html_escape((#{content}))" if escape_html
|
218
218
|
|
219
219
|
res << "\#{#{content}}"
|
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: 5.2.
|
4
|
+
version: 5.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Natalie Weizenbaum
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2020-
|
14
|
+
date: 2020-11-30 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: temple
|
@@ -101,16 +101,16 @@ dependencies:
|
|
101
101
|
name: simplecov
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
103
103
|
requirements:
|
104
|
-
- -
|
104
|
+
- - ">="
|
105
105
|
- !ruby/object:Gem::Version
|
106
|
-
version: 0
|
106
|
+
version: '0'
|
107
107
|
type: :development
|
108
108
|
prerelease: false
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- -
|
111
|
+
- - ">="
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version: 0
|
113
|
+
version: '0'
|
114
114
|
description: |
|
115
115
|
Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's
|
116
116
|
designed to express the structure of documents in a non-repetitive, elegant, and
|