haml 4.0.7 → 5.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 +4 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +42 -4
- data/FAQ.md +4 -14
- data/MIT-LICENSE +1 -1
- data/README.md +85 -42
- data/REFERENCE.md +108 -57
- data/Rakefile +46 -54
- data/lib/haml/attribute_builder.rb +163 -0
- data/lib/haml/attribute_compiler.rb +215 -0
- data/lib/haml/attribute_parser.rb +144 -0
- data/lib/haml/buffer.rb +22 -132
- data/lib/haml/compiler.rb +87 -295
- data/lib/haml/engine.rb +25 -41
- data/lib/haml/error.rb +3 -0
- data/lib/haml/escapable.rb +49 -0
- data/lib/haml/exec.rb +33 -19
- data/lib/haml/filters.rb +18 -24
- data/lib/haml/generator.rb +41 -0
- data/lib/haml/helpers/action_view_extensions.rb +3 -2
- data/lib/haml/helpers/action_view_mods.rb +36 -58
- data/lib/haml/helpers/action_view_xss_mods.rb +1 -0
- data/lib/haml/helpers/safe_erubi_template.rb +27 -0
- data/lib/haml/helpers/safe_erubis_template.rb +4 -1
- data/lib/haml/helpers/xss_mods.rb +18 -12
- data/lib/haml/helpers.rb +133 -90
- data/lib/haml/options.rb +38 -47
- data/lib/haml/parser.rb +278 -216
- data/lib/haml/{template/plugin.rb → plugin.rb} +8 -15
- data/lib/haml/railtie.rb +21 -12
- data/lib/haml/sass_rails_filter.rb +17 -4
- data/lib/haml/template/options.rb +12 -2
- data/lib/haml/template.rb +12 -6
- data/lib/haml/temple_engine.rb +120 -0
- data/lib/haml/temple_line_counter.rb +29 -0
- data/lib/haml/util.rb +80 -199
- data/lib/haml/version.rb +2 -1
- data/lib/haml.rb +1 -0
- data/test/attribute_parser_test.rb +101 -0
- data/test/engine_test.rb +287 -176
- data/test/filters_test.rb +32 -19
- data/test/gemfiles/Gemfile.rails-4.0.x +9 -3
- data/test/gemfiles/Gemfile.rails-4.0.x.lock +87 -0
- data/test/gemfiles/Gemfile.rails-4.1.x +5 -0
- data/test/gemfiles/Gemfile.rails-4.2.x +5 -0
- data/test/gemfiles/Gemfile.rails-5.0.x +4 -0
- data/test/helper_test.rb +224 -112
- data/test/options_test.rb +22 -0
- data/test/parser_test.rb +71 -4
- data/test/results/bemit.xhtml +4 -0
- data/test/results/eval_suppressed.xhtml +4 -4
- data/test/results/helpers.xhtml +43 -41
- data/test/results/helpful.xhtml +6 -3
- data/test/results/just_stuff.xhtml +21 -20
- data/test/results/list.xhtml +9 -9
- data/test/results/nuke_inner_whitespace.xhtml +22 -22
- data/test/results/nuke_outer_whitespace.xhtml +84 -92
- data/test/results/original_engine.xhtml +17 -17
- data/test/results/partial_layout.xhtml +4 -3
- data/test/results/partial_layout_erb.xhtml +4 -3
- data/test/results/partials.xhtml +11 -10
- data/test/results/silent_script.xhtml +63 -63
- data/test/results/standard.xhtml +156 -159
- data/test/results/tag_parsing.xhtml +19 -19
- data/test/results/very_basic.xhtml +2 -2
- data/test/results/whitespace_handling.xhtml +77 -76
- data/test/template_test.rb +24 -56
- data/test/template_test_helper.rb +38 -0
- data/test/templates/bemit.haml +3 -0
- data/test/templates/just_stuff.haml +1 -0
- data/test/templates/standard_ugly.haml +1 -0
- data/test/templates/with_bom.haml +1 -0
- data/test/temple_line_counter_test.rb +40 -0
- data/test/test_helper.rb +26 -8
- data/test/util_test.rb +6 -47
- metadata +53 -43
- data/test/gemfiles/Gemfile.rails-3.0.x +0 -5
- data/test/gemfiles/Gemfile.rails-3.1.x +0 -6
- data/test/gemfiles/Gemfile.rails-3.2.x +0 -5
- data/test/haml-spec/LICENSE +0 -14
- data/test/haml-spec/README.md +0 -106
- data/test/haml-spec/lua_haml_spec.lua +0 -38
- data/test/haml-spec/perl_haml_test.pl +0 -81
- data/test/haml-spec/ruby_haml_test.rb +0 -23
- data/test/haml-spec/tests.json +0 -660
- data/test/templates/_av_partial_1_ugly.haml +0 -9
- data/test/templates/_av_partial_2_ugly.haml +0 -5
- data/test/templates/action_view_ugly.haml +0 -47
- 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
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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,47 +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/
|
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
|
139
|
-
- test/
|
140
|
-
- test/
|
141
|
-
- test/
|
142
|
-
- test/
|
143
|
-
- test/haml-spec/ruby_haml_test.rb
|
144
|
-
- test/haml-spec/tests.json
|
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
|
145
164
|
- test/helper_test.rb
|
146
165
|
- test/markaby/standard.mab
|
147
166
|
- test/mocks/article.rb
|
167
|
+
- test/options_test.rb
|
148
168
|
- test/parser_test.rb
|
169
|
+
- test/results/bemit.xhtml
|
149
170
|
- test/results/content_for_layout.xhtml
|
150
171
|
- test/results/eval_suppressed.xhtml
|
151
172
|
- test/results/helpers.xhtml
|
@@ -165,17 +186,16 @@ files:
|
|
165
186
|
- test/results/very_basic.xhtml
|
166
187
|
- test/results/whitespace_handling.xhtml
|
167
188
|
- test/template_test.rb
|
189
|
+
- test/template_test_helper.rb
|
168
190
|
- test/templates/_av_partial_1.haml
|
169
|
-
- test/templates/_av_partial_1_ugly.haml
|
170
191
|
- test/templates/_av_partial_2.haml
|
171
|
-
- test/templates/_av_partial_2_ugly.haml
|
172
192
|
- test/templates/_layout.erb
|
173
193
|
- test/templates/_layout_for_partial.haml
|
174
194
|
- test/templates/_partial.haml
|
175
195
|
- test/templates/_text_area.haml
|
176
196
|
- test/templates/_text_area_helper.html.haml
|
177
197
|
- test/templates/action_view.haml
|
178
|
-
- test/templates/
|
198
|
+
- test/templates/bemit.haml
|
179
199
|
- test/templates/breakage.haml
|
180
200
|
- test/templates/content_for_layout.haml
|
181
201
|
- test/templates/eval_suppressed.haml
|
@@ -197,28 +217,15 @@ files:
|
|
197
217
|
- test/templates/tag_parsing.haml
|
198
218
|
- test/templates/very_basic.haml
|
199
219
|
- test/templates/whitespace_handling.haml
|
220
|
+
- test/templates/with_bom.haml
|
221
|
+
- test/temple_line_counter_test.rb
|
200
222
|
- test/test_helper.rb
|
201
223
|
- test/util_test.rb
|
202
224
|
homepage: http://haml.info/
|
203
225
|
licenses:
|
204
226
|
- MIT
|
205
227
|
metadata: {}
|
206
|
-
post_install_message:
|
207
|
-
|
208
|
-
HEADS UP! Haml 4.0 has many improvements, but also has changes that may break
|
209
|
-
your application:
|
210
|
-
|
211
|
-
* Support for Ruby 1.8.6 dropped
|
212
|
-
* Support for Rails 2 dropped
|
213
|
-
* Sass filter now always outputs <style> tags
|
214
|
-
* Data attributes are now hyphenated, not underscored
|
215
|
-
* html2haml utility moved to the html2haml gem
|
216
|
-
* Textile and Maruku filters moved to the haml-contrib gem
|
217
|
-
|
218
|
-
For more info see:
|
219
|
-
|
220
|
-
http://rubydoc.info/github/haml/haml/file/CHANGELOG.md
|
221
|
-
|
228
|
+
post_install_message:
|
222
229
|
rdoc_options: []
|
223
230
|
require_paths:
|
224
231
|
- lib
|
@@ -226,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
226
233
|
requirements:
|
227
234
|
- - ">="
|
228
235
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
236
|
+
version: 2.0.0
|
230
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
238
|
requirements:
|
232
239
|
- - ">="
|
@@ -234,15 +241,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
241
|
version: '0'
|
235
242
|
requirements: []
|
236
243
|
rubyforge_project:
|
237
|
-
rubygems_version: 2.
|
244
|
+
rubygems_version: 2.6.11
|
238
245
|
signing_key:
|
239
246
|
specification_version: 4
|
240
247
|
summary: An elegant, structured (X)HTML/XML templating engine.
|
241
248
|
test_files:
|
249
|
+
- test/attribute_parser_test.rb
|
242
250
|
- test/engine_test.rb
|
243
251
|
- test/filters_test.rb
|
244
|
-
- test/haml-spec/ruby_haml_test.rb
|
245
252
|
- test/helper_test.rb
|
253
|
+
- test/options_test.rb
|
246
254
|
- test/parser_test.rb
|
247
255
|
- test/template_test.rb
|
256
|
+
- test/temple_line_counter_test.rb
|
248
257
|
- test/util_test.rb
|
258
|
+
has_rdoc: false
|
data/test/haml-spec/LICENSE
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
-
Version 2, December 2004
|
3
|
-
|
4
|
-
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
5
|
-
|
6
|
-
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
-
copies of this license document, and changing it is allowed as long
|
8
|
-
as the name is changed.
|
9
|
-
|
10
|
-
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
-
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12
|
-
|
13
|
-
0. You just DO WHAT THE FUCK YOU WANT TO.
|
14
|
-
|
data/test/haml-spec/README.md
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
# Haml Spec #
|
2
|
-
|
3
|
-
Haml Spec provides a basic suite of tests for Haml interpreters.
|
4
|
-
|
5
|
-
It is intented for developers who are creating or maintaining an implementation
|
6
|
-
of the [Haml](http://haml-lang.com) markup language.
|
7
|
-
|
8
|
-
At the moment, there are test runners for the [original
|
9
|
-
Haml](http://github.com/nex3/haml) in Ruby, [Lua
|
10
|
-
Haml](http://github.com/norman/lua-haml) and the
|
11
|
-
[Text::Haml](http://github.com/vti/text-haml) Perl port. Support for other
|
12
|
-
versions of Haml will be added if their developers/maintainers are interested in
|
13
|
-
using it.
|
14
|
-
|
15
|
-
## The Tests ##
|
16
|
-
|
17
|
-
The tests are kept in JSON format for portability across languages. Each test
|
18
|
-
is a JSON object with expected input, output, local variables and configuration
|
19
|
-
parameters (see below). The test suite only provides tests for features which
|
20
|
-
are portable, therefore no tests for script are provided, nor for external
|
21
|
-
filters such as :markdown or :textile.
|
22
|
-
|
23
|
-
The one major exception to this are the tests for interpolation, which you may
|
24
|
-
need to modify with a regular expression to run under PHP or Perl, which
|
25
|
-
require a sigil before variable names. These tests are included despite being
|
26
|
-
less than 100% portable because interpolation is an important part of Haml and
|
27
|
-
can be tricky to implement. These tests are flagged as "optional" so that you
|
28
|
-
can avoid running them if your implementation of Haml will not support this
|
29
|
-
feature.
|
30
|
-
|
31
|
-
## Running the Tests ##
|
32
|
-
|
33
|
-
### Ruby ###
|
34
|
-
|
35
|
-
The Ruby test runner uses minitest, the same as the Ruby Haml implementation.
|
36
|
-
To run the tests you probably only need to install `haml`, `minitest` and
|
37
|
-
possibly `ruby` if your platform doesn't come with it by default. If you're
|
38
|
-
using Ruby 1.8.x, you'll also need to install `json`:
|
39
|
-
|
40
|
-
sudo gem install haml
|
41
|
-
sudo gem install minitest
|
42
|
-
# for Ruby 1.8.x; check using "ruby --version" if unsure
|
43
|
-
sudo gem install json
|
44
|
-
|
45
|
-
Then, running the Ruby test suite is easy:
|
46
|
-
|
47
|
-
ruby ruby_haml_test.rb
|
48
|
-
|
49
|
-
At the moment, running the tests with Ruby 1.8.7 fails because of issues with
|
50
|
-
the JSON library. Please use 1.9.2 until this is resolved.
|
51
|
-
|
52
|
-
### Lua ###
|
53
|
-
|
54
|
-
The Lua test depends on
|
55
|
-
[Penlight](http://stevedonovan.github.com/Penlight/),
|
56
|
-
[Telescope](http://github.com/norman/telescope),
|
57
|
-
[jason4lua](http://json.luaforge.net/), and
|
58
|
-
[Lua Haml](http://github.com/norman/lua-haml). Install and run `tsc
|
59
|
-
lua_haml_spec.lua`.
|
60
|
-
|
61
|
-
### Getting it ###
|
62
|
-
|
63
|
-
You can access the [Git repository](http://github.com/norman/haml-spec) at:
|
64
|
-
|
65
|
-
git://github.com/norman/haml-spec.git
|
66
|
-
|
67
|
-
Patches are *very* welcome, as are test runners for your Haml implementation.
|
68
|
-
|
69
|
-
As long as any test you add run against Ruby Haml and are not redundant, I'll
|
70
|
-
be very happy to add them.
|
71
|
-
|
72
|
-
### Test JSON format ###
|
73
|
-
|
74
|
-
"test name" : {
|
75
|
-
"haml" : "haml input",
|
76
|
-
"html" : "expected html output",
|
77
|
-
"result" : "expected test result",
|
78
|
-
"locals" : "local vars",
|
79
|
-
"config" : "config params",
|
80
|
-
"optional" : true|false
|
81
|
-
}
|
82
|
-
|
83
|
-
* test name: This should be a *very* brief description of what's being tested. It can
|
84
|
-
be used by the test runners to name test methods, or to exclude certain tests from being
|
85
|
-
run.
|
86
|
-
* haml: The Haml code to be evaluated. Always required.
|
87
|
-
* html: The HTML output that should be generated. Required unless "result" is "error".
|
88
|
-
* result: Can be "pass" or "error". If it's absent, then "pass" is assumed. If it's "error",
|
89
|
-
then the goal of the test is to make sure that malformed Haml code generates an error.
|
90
|
-
* locals: An object containing local variables needed for the test.
|
91
|
-
* config: An object containing configuration parameters used to run the test.
|
92
|
-
The configuration parameters should be usable directly by Ruby's Haml with no
|
93
|
-
modification. If your implementation uses config parameters with different
|
94
|
-
names, you may need to process them to make them match your implementation.
|
95
|
-
If your implementation has options that do not exist in Ruby's Haml, then you
|
96
|
-
should add tests for this in your implementation's test rather than here.
|
97
|
-
* optional: whether or not the test is optional
|
98
|
-
|
99
|
-
## License ##
|
100
|
-
|
101
|
-
This project is released under the [WTFPL](http://sam.zoy.org/wtfpl/) in order
|
102
|
-
to be as usable as possible in any project, commercial or free.
|
103
|
-
|
104
|
-
## Author ##
|
105
|
-
|
106
|
-
[Norman Clarke](mailto:norman@njclarke.com)
|
@@ -1,38 +0,0 @@
|
|
1
|
-
local dir = require 'pl.dir'
|
2
|
-
local haml = require 'haml'
|
3
|
-
local json = require 'json'
|
4
|
-
local path = require 'pl.path'
|
5
|
-
local telescope = require 'telescope'
|
6
|
-
local assert = assert
|
7
|
-
local describe = telescope.describe
|
8
|
-
local getinfo = debug.getinfo
|
9
|
-
local it = telescope.it
|
10
|
-
local open = io.open
|
11
|
-
local pairs = pairs
|
12
|
-
|
13
|
-
module('hamlspec')
|
14
|
-
|
15
|
-
local function get_tests(filename)
|
16
|
-
local me = path.abspath(getinfo(1).source:match("@(.*)$"))
|
17
|
-
return path.join(path.dirname(me), filename)
|
18
|
-
end
|
19
|
-
|
20
|
-
local json_file = get_tests("tests.json")
|
21
|
-
local file = assert(open(json_file))
|
22
|
-
local input = file:read '*a'
|
23
|
-
file:close()
|
24
|
-
|
25
|
-
local contexts = json.decode(input)
|
26
|
-
|
27
|
-
describe("LuaHaml", function()
|
28
|
-
for context, expectations in pairs(contexts) do
|
29
|
-
describe("When handling " .. context, function()
|
30
|
-
for name, exp in pairs(expectations) do
|
31
|
-
it(("should correctly render %s"):format(name), function()
|
32
|
-
local engine = haml.new(exp.config)
|
33
|
-
assert_equal(engine:render(exp.haml, exp.locals), exp.html)
|
34
|
-
end)
|
35
|
-
end
|
36
|
-
end)
|
37
|
-
end
|
38
|
-
end)
|
@@ -1,81 +0,0 @@
|
|
1
|
-
#!/usr/bin/env perl
|
2
|
-
|
3
|
-
use strict;
|
4
|
-
use warnings;
|
5
|
-
|
6
|
-
use Test::More 'no_plan';
|
7
|
-
use Text::Haml;
|
8
|
-
use FindBin;
|
9
|
-
use JSON 'from_json';
|
10
|
-
|
11
|
-
our $VERSION = 0.990101;
|
12
|
-
|
13
|
-
my $tests;
|
14
|
-
|
15
|
-
open FILE, "< $FindBin::Bin/tests.json" or die $!;
|
16
|
-
$tests = from_json(join("\n", <FILE>));
|
17
|
-
close FILE;
|
18
|
-
|
19
|
-
while (my ($section_name, $section) = each %$tests) {
|
20
|
-
diag $section_name;
|
21
|
-
|
22
|
-
while (my ($test_name, $test) = each %$section) {
|
23
|
-
is( Text::Haml->new(%{$test->{config}}, vars_as_subs => 1)
|
24
|
-
->render($test->{haml}, %{$test->{locals}}),
|
25
|
-
$test->{html}, $test_name
|
26
|
-
);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
__END__
|
30
|
-
|
31
|
-
=head1 NAME
|
32
|
-
|
33
|
-
perl_haml_test.pl - Text::Haml spec tests runner
|
34
|
-
|
35
|
-
=head1 SYNOPSIS
|
36
|
-
|
37
|
-
$ perl perl_haml_test.pl
|
38
|
-
|
39
|
-
# conditional comments
|
40
|
-
ok 1 - a conditional comment
|
41
|
-
# tags with nested content
|
42
|
-
ok 2 - a tag with CSS
|
43
|
-
|
44
|
-
...
|
45
|
-
|
46
|
-
ok 81 - an inline comment
|
47
|
-
ok 82 - a nested comment
|
48
|
-
1..82
|
49
|
-
|
50
|
-
=head1 DESCRIPTION
|
51
|
-
|
52
|
-
This file is a part of Haml spec tests envorinment. It tests Perl
|
53
|
-
implementation using <Text::Haml>.
|
54
|
-
|
55
|
-
=head1 DEPENDENCIES
|
56
|
-
|
57
|
-
=over
|
58
|
-
|
59
|
-
* Text::Haml (available via CPAN or http://github.com/vti/text-haml)
|
60
|
-
* JSON (available on CPAN)
|
61
|
-
* Test::More (included in Perl core)
|
62
|
-
* FindBin (included in Perl core)
|
63
|
-
|
64
|
-
=back
|
65
|
-
|
66
|
-
=head1 SEE ALSO
|
67
|
-
|
68
|
-
L<Text::Haml>
|
69
|
-
|
70
|
-
=head1 AUTHOR
|
71
|
-
|
72
|
-
Viacheslav Tykhanovskyi, C<vti@cpan.org>.
|
73
|
-
|
74
|
-
=head1 COPYRIGHT AND LICENSE
|
75
|
-
|
76
|
-
Copyright (C) 2009, Viacheslav Tykhanovskyi
|
77
|
-
|
78
|
-
This program is free software, you can redistribute it and/or modify it under
|
79
|
-
the terms of the Artistic License version 2.0.
|
80
|
-
|
81
|
-
=cut
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "minitest/autorun"
|
3
|
-
require "json"
|
4
|
-
require "haml"
|
5
|
-
|
6
|
-
class HamlTest < MiniTest::Unit::TestCase
|
7
|
-
contexts = JSON.parse(File.read(File.dirname(__FILE__) + "/tests.json"))
|
8
|
-
contexts.each do |context|
|
9
|
-
context[1].each do |name, test|
|
10
|
-
define_method("test_spec: #{name} (#{context[0]})") do
|
11
|
-
html = test["html"]
|
12
|
-
haml = test["haml"]
|
13
|
-
locals = Hash[(test["locals"] || {}).map {|x, y| [x.to_sym, y]}]
|
14
|
-
options = Hash[(test["config"] || {}).map {|x, y| [x.to_sym, y]}]
|
15
|
-
options[:format] = options[:format].to_sym if options.key?(:format)
|
16
|
-
engine = Haml::Engine.new(haml, options)
|
17
|
-
result = engine.render(Object.new, locals)
|
18
|
-
|
19
|
-
assert_equal html, result.strip
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|