haml 4.0.6 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/CHANGELOG.md +49 -4
  4. data/FAQ.md +4 -14
  5. data/MIT-LICENSE +1 -1
  6. data/README.md +85 -42
  7. data/REFERENCE.md +109 -58
  8. data/Rakefile +46 -54
  9. data/lib/haml/attribute_builder.rb +163 -0
  10. data/lib/haml/attribute_compiler.rb +215 -0
  11. data/lib/haml/attribute_parser.rb +144 -0
  12. data/lib/haml/buffer.rb +26 -136
  13. data/lib/haml/compiler.rb +87 -295
  14. data/lib/haml/engine.rb +25 -41
  15. data/lib/haml/error.rb +3 -0
  16. data/lib/haml/escapable.rb +49 -0
  17. data/lib/haml/exec.rb +33 -19
  18. data/lib/haml/filters.rb +18 -24
  19. data/lib/haml/generator.rb +41 -0
  20. data/lib/haml/helpers/action_view_extensions.rb +3 -2
  21. data/lib/haml/helpers/action_view_mods.rb +36 -58
  22. data/lib/haml/helpers/action_view_xss_mods.rb +1 -0
  23. data/lib/haml/helpers/safe_erubi_template.rb +27 -0
  24. data/lib/haml/helpers/safe_erubis_template.rb +4 -1
  25. data/lib/haml/helpers/xss_mods.rb +18 -12
  26. data/lib/haml/helpers.rb +133 -90
  27. data/lib/haml/options.rb +38 -47
  28. data/lib/haml/parser.rb +278 -216
  29. data/lib/haml/{template/plugin.rb → plugin.rb} +8 -15
  30. data/lib/haml/railtie.rb +21 -12
  31. data/lib/haml/sass_rails_filter.rb +17 -4
  32. data/lib/haml/template/options.rb +12 -2
  33. data/lib/haml/template.rb +12 -6
  34. data/lib/haml/temple_engine.rb +120 -0
  35. data/lib/haml/temple_line_counter.rb +29 -0
  36. data/lib/haml/util.rb +80 -199
  37. data/lib/haml/version.rb +2 -1
  38. data/lib/haml.rb +1 -0
  39. data/test/attribute_parser_test.rb +101 -0
  40. data/test/engine_test.rb +287 -176
  41. data/test/filters_test.rb +32 -19
  42. data/test/gemfiles/Gemfile.rails-4.0.x +9 -3
  43. data/test/gemfiles/Gemfile.rails-4.0.x.lock +87 -0
  44. data/test/gemfiles/Gemfile.rails-4.1.x +5 -0
  45. data/test/gemfiles/Gemfile.rails-4.2.x +5 -0
  46. data/test/gemfiles/Gemfile.rails-5.0.x +4 -0
  47. data/test/helper_test.rb +224 -112
  48. data/test/options_test.rb +22 -0
  49. data/test/parser_test.rb +71 -4
  50. data/test/results/bemit.xhtml +4 -0
  51. data/test/results/eval_suppressed.xhtml +4 -4
  52. data/test/results/helpers.xhtml +43 -41
  53. data/test/results/helpful.xhtml +6 -3
  54. data/test/results/just_stuff.xhtml +21 -20
  55. data/test/results/list.xhtml +9 -9
  56. data/test/results/nuke_inner_whitespace.xhtml +22 -22
  57. data/test/results/nuke_outer_whitespace.xhtml +84 -92
  58. data/test/results/original_engine.xhtml +17 -17
  59. data/test/results/partial_layout.xhtml +4 -3
  60. data/test/results/partial_layout_erb.xhtml +4 -3
  61. data/test/results/partials.xhtml +11 -10
  62. data/test/results/silent_script.xhtml +63 -63
  63. data/test/results/standard.xhtml +156 -159
  64. data/test/results/tag_parsing.xhtml +19 -19
  65. data/test/results/very_basic.xhtml +2 -2
  66. data/test/results/whitespace_handling.xhtml +77 -76
  67. data/test/template_test.rb +24 -56
  68. data/test/template_test_helper.rb +38 -0
  69. data/test/templates/bemit.haml +3 -0
  70. data/test/templates/just_stuff.haml +1 -0
  71. data/test/templates/standard_ugly.haml +1 -0
  72. data/test/templates/with_bom.haml +1 -0
  73. data/test/temple_line_counter_test.rb +40 -0
  74. data/test/test_helper.rb +26 -8
  75. data/test/util_test.rb +6 -47
  76. metadata +53 -36
  77. data/test/gemfiles/Gemfile.rails-3.0.x +0 -5
  78. data/test/gemfiles/Gemfile.rails-3.1.x +0 -6
  79. data/test/gemfiles/Gemfile.rails-3.2.x +0 -5
  80. data/test/templates/_av_partial_1_ugly.haml +0 -9
  81. data/test/templates/_av_partial_2_ugly.haml +0 -5
  82. data/test/templates/action_view_ugly.haml +0 -47
  83. data/test/templates/standard_ugly.haml +0 -43
metadata CHANGED
@@ -1,17 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.6
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Nathan Weizenbaum
7
+ - Natalie Weizenbaum
8
8
  - Hampton Catlin
9
9
  - Norman Clarke
10
+ - Akira Matsuda
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2014-12-01 00:00:00.000000000 Z
14
+ date: 2017-04-27 00:00:00.000000000 Z
14
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: temple
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.8.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.8.0
15
30
  - !ruby/object:Gem::Dependency
16
31
  name: tilt
17
32
  requirement: !ruby/object:Gem::Requirement
@@ -32,14 +47,14 @@ dependencies:
32
47
  requirements:
33
48
  - - ">="
34
49
  - !ruby/object:Gem::Version
35
- version: 3.0.0
50
+ version: 4.0.0
36
51
  type: :development
37
52
  prerelease: false
38
53
  version_requirements: !ruby/object:Gem::Requirement
39
54
  requirements:
40
55
  - - ">="
41
56
  - !ruby/object:Gem::Version
42
- version: 3.0.0
57
+ version: 4.0.0
43
58
  - !ruby/object:Gem::Dependency
44
59
  name: rbench
45
60
  requirement: !ruby/object:Gem::Requirement
@@ -60,28 +75,28 @@ dependencies:
60
75
  requirements:
61
76
  - - ">="
62
77
  - !ruby/object:Gem::Version
63
- version: '0'
78
+ version: '4.0'
64
79
  type: :development
65
80
  prerelease: false
66
81
  version_requirements: !ruby/object:Gem::Requirement
67
82
  requirements:
68
83
  - - ">="
69
84
  - !ruby/object:Gem::Version
70
- version: '0'
85
+ version: '4.0'
71
86
  - !ruby/object:Gem::Dependency
72
87
  name: nokogiri
73
88
  requirement: !ruby/object:Gem::Requirement
74
89
  requirements:
75
- - - "~>"
90
+ - - ">="
76
91
  - !ruby/object:Gem::Version
77
- version: 1.5.10
92
+ version: '0'
78
93
  type: :development
79
94
  prerelease: false
80
95
  version_requirements: !ruby/object:Gem::Requirement
81
96
  requirements:
82
- - - "~>"
97
+ - - ">="
83
98
  - !ruby/object:Gem::Version
84
- version: 1.5.10
99
+ version: '0'
85
100
  description: |
86
101
  Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's
87
102
  designed to express the structure of documents in a non-repetitive, elegant, and
@@ -105,41 +120,53 @@ files:
105
120
  - Rakefile
106
121
  - bin/haml
107
122
  - lib/haml.rb
123
+ - lib/haml/attribute_builder.rb
124
+ - lib/haml/attribute_compiler.rb
125
+ - lib/haml/attribute_parser.rb
108
126
  - lib/haml/buffer.rb
109
127
  - lib/haml/compiler.rb
110
128
  - lib/haml/engine.rb
111
129
  - lib/haml/error.rb
130
+ - lib/haml/escapable.rb
112
131
  - lib/haml/exec.rb
113
132
  - lib/haml/filters.rb
133
+ - lib/haml/generator.rb
114
134
  - lib/haml/helpers.rb
115
135
  - lib/haml/helpers/action_view_extensions.rb
116
136
  - lib/haml/helpers/action_view_mods.rb
117
137
  - lib/haml/helpers/action_view_xss_mods.rb
138
+ - lib/haml/helpers/safe_erubi_template.rb
118
139
  - lib/haml/helpers/safe_erubis_template.rb
119
140
  - lib/haml/helpers/xss_mods.rb
120
141
  - lib/haml/options.rb
121
142
  - lib/haml/parser.rb
143
+ - lib/haml/plugin.rb
122
144
  - lib/haml/railtie.rb
123
145
  - lib/haml/sass_rails_filter.rb
124
146
  - lib/haml/template.rb
125
147
  - lib/haml/template/options.rb
126
- - lib/haml/template/plugin.rb
148
+ - lib/haml/temple_engine.rb
149
+ - lib/haml/temple_line_counter.rb
127
150
  - lib/haml/util.rb
128
151
  - lib/haml/version.rb
152
+ - test/attribute_parser_test.rb
129
153
  - test/engine_test.rb
130
154
  - test/erb/_av_partial_1.erb
131
155
  - test/erb/_av_partial_2.erb
132
156
  - test/erb/action_view.erb
133
157
  - test/erb/standard.erb
134
158
  - test/filters_test.rb
135
- - test/gemfiles/Gemfile.rails-3.0.x
136
- - test/gemfiles/Gemfile.rails-3.1.x
137
- - test/gemfiles/Gemfile.rails-3.2.x
138
159
  - test/gemfiles/Gemfile.rails-4.0.x
160
+ - test/gemfiles/Gemfile.rails-4.0.x.lock
161
+ - test/gemfiles/Gemfile.rails-4.1.x
162
+ - test/gemfiles/Gemfile.rails-4.2.x
163
+ - test/gemfiles/Gemfile.rails-5.0.x
139
164
  - test/helper_test.rb
140
165
  - test/markaby/standard.mab
141
166
  - test/mocks/article.rb
167
+ - test/options_test.rb
142
168
  - test/parser_test.rb
169
+ - test/results/bemit.xhtml
143
170
  - test/results/content_for_layout.xhtml
144
171
  - test/results/eval_suppressed.xhtml
145
172
  - test/results/helpers.xhtml
@@ -159,17 +186,16 @@ files:
159
186
  - test/results/very_basic.xhtml
160
187
  - test/results/whitespace_handling.xhtml
161
188
  - test/template_test.rb
189
+ - test/template_test_helper.rb
162
190
  - test/templates/_av_partial_1.haml
163
- - test/templates/_av_partial_1_ugly.haml
164
191
  - test/templates/_av_partial_2.haml
165
- - test/templates/_av_partial_2_ugly.haml
166
192
  - test/templates/_layout.erb
167
193
  - test/templates/_layout_for_partial.haml
168
194
  - test/templates/_partial.haml
169
195
  - test/templates/_text_area.haml
170
196
  - test/templates/_text_area_helper.html.haml
171
197
  - test/templates/action_view.haml
172
- - test/templates/action_view_ugly.haml
198
+ - test/templates/bemit.haml
173
199
  - test/templates/breakage.haml
174
200
  - test/templates/content_for_layout.haml
175
201
  - test/templates/eval_suppressed.haml
@@ -191,28 +217,15 @@ files:
191
217
  - test/templates/tag_parsing.haml
192
218
  - test/templates/very_basic.haml
193
219
  - test/templates/whitespace_handling.haml
220
+ - test/templates/with_bom.haml
221
+ - test/temple_line_counter_test.rb
194
222
  - test/test_helper.rb
195
223
  - test/util_test.rb
196
224
  homepage: http://haml.info/
197
225
  licenses:
198
226
  - MIT
199
227
  metadata: {}
200
- post_install_message: |2+
201
-
202
- HEADS UP! Haml 4.0 has many improvements, but also has changes that may break
203
- your application:
204
-
205
- * Support for Ruby 1.8.6 dropped
206
- * Support for Rails 2 dropped
207
- * Sass filter now always outputs <style> tags
208
- * Data attributes are now hyphenated, not underscored
209
- * html2haml utility moved to the html2haml gem
210
- * Textile and Maruku filters moved to the haml-contrib gem
211
-
212
- For more info see:
213
-
214
- http://rubydoc.info/github/haml/haml/file/CHANGELOG.md
215
-
228
+ post_install_message:
216
229
  rdoc_options: []
217
230
  require_paths:
218
231
  - lib
@@ -220,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
233
  requirements:
221
234
  - - ">="
222
235
  - !ruby/object:Gem::Version
223
- version: '0'
236
+ version: 2.0.0
224
237
  required_rubygems_version: !ruby/object:Gem::Requirement
225
238
  requirements:
226
239
  - - ">="
@@ -228,14 +241,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
241
  version: '0'
229
242
  requirements: []
230
243
  rubyforge_project:
231
- rubygems_version: 2.4.4
244
+ rubygems_version: 2.6.11
232
245
  signing_key:
233
246
  specification_version: 4
234
247
  summary: An elegant, structured (X)HTML/XML templating engine.
235
248
  test_files:
249
+ - test/attribute_parser_test.rb
236
250
  - test/engine_test.rb
237
251
  - test/filters_test.rb
238
252
  - test/helper_test.rb
253
+ - test/options_test.rb
239
254
  - test/parser_test.rb
240
255
  - test/template_test.rb
256
+ - test/temple_line_counter_test.rb
241
257
  - test/util_test.rb
258
+ has_rdoc: false
@@ -1,5 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gem 'rails', '>= 3.0.0', '< 3.1.0'
4
- gemspec :path => "../.."
5
-
@@ -1,6 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gem 'rails', '>= 3.1.0', '< 3.2.0'
4
- gemspec :path => "../.."
5
-
6
-
@@ -1,5 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gem 'rails', '>= 3.2.0', '< 3.3.0'
4
- gemspec :path => "../.."
5
-
@@ -1,9 +0,0 @@
1
- %h2 This is a pretty complicated partial
2
- .partial
3
- %p It has several nested partials,
4
- %ul
5
- - 5.times do
6
- %li
7
- %strong Partial:
8
- - @nesting = 5
9
- = render :partial => 'templates/av_partial_2_ugly'
@@ -1,5 +0,0 @@
1
- - @nesting -= 1
2
- .partial{:level => @nesting}
3
- %h3 This is a crazy deep-nested partial.
4
- %p== Nesting level #{@nesting}
5
- = render :partial => 'templates/av_partial_2_ugly' if @nesting > 0
@@ -1,47 +0,0 @@
1
- !!!
2
- %html{html_attrs}
3
- %head
4
- %title Hampton Catlin Is Totally Awesome
5
- %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
6
- %body
7
- %h1
8
- This is very much like the standard template,
9
- except that it has some ActionView-specific stuff.
10
- It's only used for benchmarking.
11
- .crazy_partials= render :partial => 'templates/av_partial_1_ugly'
12
- / You're In my house now!
13
- .header
14
- Yes, ladies and gentileman. He is just that egotistical.
15
- Fantastic! This should be multi-line output
16
- The question is if this would translate! Ahah!
17
- = 1 + 9 + 8 + 2 #numbers should work and this should be ignored
18
- #body= " Quotes should be loved! Just like people!"
19
- - 120.times do |number|
20
- - number
21
- Wow.|
22
- %p
23
- = "Holy cow " + |
24
- "multiline " + |
25
- "tags! " + |
26
- "A pipe (|) even!" |
27
- = [1, 2, 3].collect { |n| "PipesIgnored|" }
28
- = [1, 2, 3].collect { |n| |
29
- n.to_s |
30
- }.join("|") |
31
- %div.silent
32
- - foo = String.new
33
- - foo << "this"
34
- - foo << " shouldn't"
35
- - foo << " evaluate"
36
- = foo + " but now it should!"
37
- -# Woah crap a comment!
38
-
39
- -# That was a line that shouldn't close everything.
40
- %ul.really.cool
41
- - ('a'..'f').each do |a|
42
- %li= a
43
- #combo.of_divs_with_underscore= @should_eval = "with this text"
44
- = [ 104, 101, 108, 108, 111 ].map do |byte|
45
- - byte.chr
46
- .footer
47
- %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works"
@@ -1,43 +0,0 @@
1
- !!!
2
- %html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"}
3
- %head
4
- %title Hampton Catlin Is Totally Awesome
5
- %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
6
- %body
7
- / You're In my house now!
8
- .header
9
- Yes, ladies and gentileman. He is just that egotistical.
10
- Fantastic! This should be multi-line output
11
- The question is if this would translate! Ahah!
12
- = 1 + 9 + 8 + 2 #numbers should work and this should be ignored
13
- #body= " Quotes should be loved! Just like people!"
14
- - 120.times do |number|
15
- = number
16
- Wow.|
17
- %p{:code => 1 + 2}
18
- = "Holy cow " + |
19
- "multiline " + |
20
- "tags! " + |
21
- "A pipe (|) even!" |
22
- = [1, 2, 3].collect { |n| "PipesIgnored|" }.join
23
- = [1, 2, 3].collect { |n| |
24
- n.to_s |
25
- }.join("|") |
26
- - bar = 17
27
- %div.silent{:foo => bar}
28
- - foo = String.new
29
- - foo << "this"
30
- - foo << " shouldn't"
31
- - foo << " evaluate"
32
- = foo + " but now it should!"
33
- -# Woah crap a comment!
34
-
35
- -# That was a line that shouldn't close everything.
36
- %ul.really.cool
37
- - ('a'..'f').each do |a|
38
- %li= a
39
- #combo.of_divs_with_underscore= @should_eval = "with this text"
40
- = "foo".each_line do |line|
41
- - nil
42
- .footer
43
- %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works"