hamlit 1.7.2 → 2.0.1

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.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -3
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +25 -37
  5. data/CHANGELOG.md +18 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE.txt +23 -2
  8. data/README.md +106 -48
  9. data/REFERENCE.md +222 -0
  10. data/Rakefile +77 -19
  11. data/benchmark/boolean_attribute.haml +6 -0
  12. data/benchmark/class_attribute.haml +5 -0
  13. data/benchmark/common_attribute.haml +3 -0
  14. data/benchmark/data_attribute.haml +4 -0
  15. data/benchmark/dynamic_attributes/boolean_attribute.haml +4 -0
  16. data/benchmark/dynamic_attributes/class_attribute.haml +4 -0
  17. data/benchmark/dynamic_attributes/common_attribute.haml +2 -0
  18. data/benchmark/dynamic_attributes/data_attribute.haml +2 -0
  19. data/benchmark/dynamic_attributes/id_attribute.haml +2 -0
  20. data/benchmark/etc/attribute_builder.haml +5 -0
  21. data/benchmark/etc/real_sample.haml +888 -0
  22. data/benchmark/etc/real_sample.rb +11 -0
  23. data/benchmark/etc/static_analyzer.haml +1 -0
  24. data/benchmark/etc/tags.haml +3 -0
  25. data/benchmark/ext/build_data.rb +15 -0
  26. data/benchmark/ext/build_id.rb +13 -0
  27. data/benchmark/id_attribute.haml +3 -0
  28. data/benchmark/plain.haml +4 -0
  29. data/benchmark/script.haml +4 -0
  30. data/benchmark/slim/LICENSE +21 -0
  31. data/{benchmarks → benchmark/slim}/context.rb +2 -4
  32. data/benchmark/slim/run-benchmarks.rb +94 -0
  33. data/{benchmarks → benchmark/slim}/view.erb +3 -3
  34. data/{benchmarks → benchmark/slim}/view.haml +0 -0
  35. data/{benchmarks/view.escaped.slim → benchmark/slim/view.slim} +1 -1
  36. data/benchmark/string_interpolation.haml +2 -0
  37. data/benchmark/utils/benchmark_ips_extension.rb +43 -0
  38. data/bin/bench +85 -0
  39. data/bin/clone +14 -0
  40. data/bin/console +11 -0
  41. data/bin/lineprof +48 -0
  42. data/bin/ruby +3 -0
  43. data/bin/setup +7 -0
  44. data/bin/stackprof +27 -0
  45. data/{test → bin/test} +6 -10
  46. data/{bin → exe}/hamlit +0 -0
  47. data/ext/hamlit/extconf.rb +14 -0
  48. data/ext/hamlit/hamlit.c +512 -0
  49. data/ext/hamlit/houdini/.gitignore +3 -0
  50. data/ext/hamlit/houdini/COPYING +7 -0
  51. data/ext/hamlit/houdini/Makefile +79 -0
  52. data/ext/hamlit/houdini/README.md +59 -0
  53. data/ext/hamlit/houdini/buffer.c +249 -0
  54. data/ext/hamlit/houdini/buffer.h +113 -0
  55. data/ext/hamlit/houdini/houdini.h +46 -0
  56. data/ext/hamlit/houdini/houdini_href_e.c +115 -0
  57. data/ext/hamlit/houdini/houdini_html_e.c +90 -0
  58. data/ext/hamlit/houdini/houdini_html_u.c +122 -0
  59. data/ext/hamlit/houdini/houdini_js_e.c +90 -0
  60. data/ext/hamlit/houdini/houdini_js_u.c +60 -0
  61. data/ext/hamlit/houdini/houdini_uri_e.c +107 -0
  62. data/ext/hamlit/houdini/houdini_uri_u.c +68 -0
  63. data/ext/hamlit/houdini/houdini_xml_e.c +136 -0
  64. data/ext/hamlit/houdini/html_unescape.gperf +258 -0
  65. data/ext/hamlit/houdini/html_unescape.h +754 -0
  66. data/ext/hamlit/houdini/tools/build_table.py +13 -0
  67. data/ext/hamlit/houdini/tools/build_tables.c +51 -0
  68. data/ext/hamlit/houdini/tools/wikipedia_table.txt +2025 -0
  69. data/hamlit.gemspec +30 -31
  70. data/lib/hamlit.rb +3 -1
  71. data/lib/hamlit/attribute_builder.rb +12 -0
  72. data/lib/hamlit/cli.rb +44 -43
  73. data/lib/hamlit/compiler.rb +92 -16
  74. data/lib/hamlit/compiler/attribute_compiler.rb +148 -0
  75. data/lib/hamlit/compiler/children_compiler.rb +111 -0
  76. data/lib/hamlit/compiler/comment_compiler.rb +36 -0
  77. data/lib/hamlit/compiler/doctype_compiler.rb +45 -0
  78. data/lib/hamlit/compiler/script_compiler.rb +97 -0
  79. data/lib/hamlit/compiler/silent_script_compiler.rb +24 -0
  80. data/lib/hamlit/compiler/tag_compiler.rb +69 -0
  81. data/lib/hamlit/engine.rb +12 -7
  82. data/lib/hamlit/error.rb +14 -0
  83. data/lib/hamlit/escapable.rb +12 -0
  84. data/lib/hamlit/filters.rb +65 -0
  85. data/lib/hamlit/filters/base.rb +4 -62
  86. data/lib/hamlit/filters/coffee.rb +9 -7
  87. data/lib/hamlit/filters/css.rb +25 -8
  88. data/lib/hamlit/filters/erb.rb +4 -6
  89. data/lib/hamlit/filters/escaped.rb +11 -9
  90. data/lib/hamlit/filters/javascript.rb +25 -8
  91. data/lib/hamlit/filters/less.rb +9 -7
  92. data/lib/hamlit/filters/markdown.rb +5 -6
  93. data/lib/hamlit/filters/plain.rb +11 -15
  94. data/lib/hamlit/filters/preserve.rb +15 -5
  95. data/lib/hamlit/filters/ruby.rb +3 -5
  96. data/lib/hamlit/filters/sass.rb +9 -7
  97. data/lib/hamlit/filters/scss.rb +9 -7
  98. data/lib/hamlit/filters/text_base.rb +24 -0
  99. data/lib/hamlit/filters/tilt_base.rb +47 -0
  100. data/lib/hamlit/hash_parser.rb +107 -0
  101. data/lib/hamlit/html.rb +9 -6
  102. data/lib/hamlit/identity.rb +12 -0
  103. data/lib/hamlit/object_ref.rb +29 -0
  104. data/lib/hamlit/parser.rb +25 -142
  105. data/lib/hamlit/parser/MIT-LICENSE +20 -0
  106. data/lib/hamlit/parser/README.md +28 -0
  107. data/lib/hamlit/parser/haml_buffer.rb +348 -0
  108. data/lib/hamlit/parser/haml_compiler.rb +553 -0
  109. data/lib/hamlit/parser/haml_error.rb +61 -0
  110. data/lib/hamlit/parser/haml_helpers.rb +727 -0
  111. data/lib/hamlit/parser/haml_options.rb +286 -0
  112. data/lib/hamlit/parser/haml_parser.rb +801 -0
  113. data/lib/hamlit/parser/haml_util.rb +283 -0
  114. data/lib/hamlit/parser/haml_xss_mods.rb +109 -0
  115. data/lib/hamlit/{helpers.rb → rails_helpers.rb} +2 -7
  116. data/lib/hamlit/rails_template.rb +30 -0
  117. data/lib/hamlit/railtie.rb +1 -12
  118. data/lib/hamlit/ruby_expression.rb +31 -0
  119. data/lib/hamlit/static_analyzer.rb +49 -0
  120. data/lib/hamlit/string_interpolation.rb +69 -0
  121. data/lib/hamlit/template.rb +8 -0
  122. data/lib/hamlit/utils.rb +9 -0
  123. data/lib/hamlit/version.rb +1 -1
  124. metadata +116 -324
  125. data/.rspec +0 -2
  126. data/benchmarks/benchmark.rb +0 -110
  127. data/benchmarks/view.slim +0 -17
  128. data/doc/README.md +0 -19
  129. data/doc/engine/indent.md +0 -48
  130. data/doc/engine/new_attribute.md +0 -77
  131. data/doc/engine/old_attributes.md +0 -198
  132. data/doc/engine/silent_script.md +0 -97
  133. data/doc/engine/tag.md +0 -48
  134. data/doc/engine/text.md +0 -64
  135. data/doc/faml/README.md +0 -16
  136. data/doc/faml/engine/indent.md +0 -48
  137. data/doc/faml/engine/old_attributes.md +0 -111
  138. data/doc/faml/engine/silent_script.md +0 -97
  139. data/doc/faml/engine/text.md +0 -59
  140. data/doc/faml/filters/erb.md +0 -24
  141. data/doc/faml/filters/javascript.md +0 -27
  142. data/doc/faml/filters/less.md +0 -57
  143. data/doc/faml/filters/plain.md +0 -25
  144. data/doc/filters/erb.md +0 -31
  145. data/doc/filters/javascript.md +0 -83
  146. data/doc/filters/less.md +0 -57
  147. data/doc/filters/markdown.md +0 -31
  148. data/doc/filters/plain.md +0 -25
  149. data/doc/haml/README.md +0 -15
  150. data/doc/haml/engine/new_attribute.md +0 -77
  151. data/doc/haml/engine/old_attributes.md +0 -142
  152. data/doc/haml/engine/tag.md +0 -48
  153. data/doc/haml/engine/text.md +0 -29
  154. data/doc/haml/filters/erb.md +0 -26
  155. data/doc/haml/filters/javascript.md +0 -76
  156. data/doc/haml/filters/markdown.md +0 -31
  157. data/lib/hamlit/attribute.rb +0 -78
  158. data/lib/hamlit/compilers/attributes.rb +0 -108
  159. data/lib/hamlit/compilers/comment.rb +0 -13
  160. data/lib/hamlit/compilers/doctype.rb +0 -39
  161. data/lib/hamlit/compilers/filter.rb +0 -53
  162. data/lib/hamlit/compilers/new_attribute.rb +0 -115
  163. data/lib/hamlit/compilers/old_attribute.rb +0 -241
  164. data/lib/hamlit/compilers/runtime_attribute.rb +0 -58
  165. data/lib/hamlit/compilers/script.rb +0 -31
  166. data/lib/hamlit/compilers/strip.rb +0 -19
  167. data/lib/hamlit/compilers/text.rb +0 -111
  168. data/lib/hamlit/concerns/attribute_builder.rb +0 -22
  169. data/lib/hamlit/concerns/balanceable.rb +0 -68
  170. data/lib/hamlit/concerns/deprecation.rb +0 -20
  171. data/lib/hamlit/concerns/error.rb +0 -31
  172. data/lib/hamlit/concerns/escapable.rb +0 -17
  173. data/lib/hamlit/concerns/included.rb +0 -28
  174. data/lib/hamlit/concerns/indentable.rb +0 -117
  175. data/lib/hamlit/concerns/lexable.rb +0 -32
  176. data/lib/hamlit/concerns/line_reader.rb +0 -62
  177. data/lib/hamlit/concerns/registerable.rb +0 -24
  178. data/lib/hamlit/concerns/string_interpolation.rb +0 -48
  179. data/lib/hamlit/concerns/whitespace.rb +0 -91
  180. data/lib/hamlit/filters/tilt.rb +0 -41
  181. data/lib/hamlit/parsers/attribute.rb +0 -71
  182. data/lib/hamlit/parsers/comment.rb +0 -30
  183. data/lib/hamlit/parsers/doctype.rb +0 -18
  184. data/lib/hamlit/parsers/filter.rb +0 -18
  185. data/lib/hamlit/parsers/multiline.rb +0 -58
  186. data/lib/hamlit/parsers/script.rb +0 -126
  187. data/lib/hamlit/parsers/tag.rb +0 -83
  188. data/lib/hamlit/parsers/text.rb +0 -28
  189. data/lib/hamlit/temple.rb +0 -9
  190. data/release +0 -6
  191. data/spec/Rakefile +0 -72
  192. data/spec/hamlit/engine/comment_spec.rb +0 -56
  193. data/spec/hamlit/engine/doctype_spec.rb +0 -19
  194. data/spec/hamlit/engine/error_spec.rb +0 -135
  195. data/spec/hamlit/engine/indent_spec.rb +0 -42
  196. data/spec/hamlit/engine/multiline_spec.rb +0 -44
  197. data/spec/hamlit/engine/new_attribute_spec.rb +0 -110
  198. data/spec/hamlit/engine/old_attributes_spec.rb +0 -404
  199. data/spec/hamlit/engine/script_spec.rb +0 -116
  200. data/spec/hamlit/engine/silent_script_spec.rb +0 -213
  201. data/spec/hamlit/engine/tag_spec.rb +0 -295
  202. data/spec/hamlit/engine/text_spec.rb +0 -239
  203. data/spec/hamlit/engine_spec.rb +0 -58
  204. data/spec/hamlit/filters/coffee_spec.rb +0 -60
  205. data/spec/hamlit/filters/css_spec.rb +0 -33
  206. data/spec/hamlit/filters/erb_spec.rb +0 -16
  207. data/spec/hamlit/filters/javascript_spec.rb +0 -82
  208. data/spec/hamlit/filters/less_spec.rb +0 -37
  209. data/spec/hamlit/filters/markdown_spec.rb +0 -30
  210. data/spec/hamlit/filters/plain_spec.rb +0 -15
  211. data/spec/hamlit/filters/ruby_spec.rb +0 -24
  212. data/spec/hamlit/filters/sass_spec.rb +0 -33
  213. data/spec/hamlit/filters/scss_spec.rb +0 -37
  214. data/spec/hamlit/haml_spec.rb +0 -910
  215. data/spec/rails/.gitignore +0 -18
  216. data/spec/rails/.rspec +0 -2
  217. data/spec/rails/Gemfile +0 -19
  218. data/spec/rails/README.rdoc +0 -28
  219. data/spec/rails/Rakefile +0 -6
  220. data/spec/rails/app/assets/images/.keep +0 -0
  221. data/spec/rails/app/assets/javascripts/application.js +0 -15
  222. data/spec/rails/app/assets/stylesheets/application.css +0 -15
  223. data/spec/rails/app/controllers/application_controller.rb +0 -8
  224. data/spec/rails/app/controllers/concerns/.keep +0 -0
  225. data/spec/rails/app/controllers/users_controller.rb +0 -23
  226. data/spec/rails/app/helpers/application_helper.rb +0 -2
  227. data/spec/rails/app/mailers/.keep +0 -0
  228. data/spec/rails/app/models/.keep +0 -0
  229. data/spec/rails/app/models/concerns/.keep +0 -0
  230. data/spec/rails/app/views/application/index.html.haml +0 -18
  231. data/spec/rails/app/views/layouts/application.html.haml +0 -12
  232. data/spec/rails/app/views/users/capture.html.haml +0 -5
  233. data/spec/rails/app/views/users/capture_haml.html.haml +0 -5
  234. data/spec/rails/app/views/users/form.html.haml +0 -2
  235. data/spec/rails/app/views/users/helpers.html.haml +0 -10
  236. data/spec/rails/app/views/users/index.html.haml +0 -9
  237. data/spec/rails/app/views/users/inline.html.haml +0 -6
  238. data/spec/rails/app/views/users/old_attributes.html.haml +0 -5
  239. data/spec/rails/app/views/users/safe_buffer.html.haml +0 -4
  240. data/spec/rails/app/views/users/whitespace.html.haml +0 -4
  241. data/spec/rails/bin/bundle +0 -3
  242. data/spec/rails/bin/rails +0 -8
  243. data/spec/rails/bin/rake +0 -8
  244. data/spec/rails/bin/setup +0 -29
  245. data/spec/rails/bin/spring +0 -15
  246. data/spec/rails/config.ru +0 -4
  247. data/spec/rails/config/application.rb +0 -34
  248. data/spec/rails/config/boot.rb +0 -3
  249. data/spec/rails/config/database.yml +0 -25
  250. data/spec/rails/config/environment.rb +0 -5
  251. data/spec/rails/config/environments/development.rb +0 -41
  252. data/spec/rails/config/environments/production.rb +0 -79
  253. data/spec/rails/config/environments/test.rb +0 -42
  254. data/spec/rails/config/initializers/assets.rb +0 -11
  255. data/spec/rails/config/initializers/backtrace_silencers.rb +0 -7
  256. data/spec/rails/config/initializers/cookies_serializer.rb +0 -3
  257. data/spec/rails/config/initializers/filter_parameter_logging.rb +0 -4
  258. data/spec/rails/config/initializers/inflections.rb +0 -16
  259. data/spec/rails/config/initializers/mime_types.rb +0 -4
  260. data/spec/rails/config/initializers/session_store.rb +0 -3
  261. data/spec/rails/config/initializers/wrap_parameters.rb +0 -14
  262. data/spec/rails/config/locales/en.yml +0 -24
  263. data/spec/rails/config/routes.rb +0 -16
  264. data/spec/rails/config/secrets.yml +0 -22
  265. data/spec/rails/db/schema.rb +0 -16
  266. data/spec/rails/db/seeds.rb +0 -7
  267. data/spec/rails/lib/assets/.keep +0 -0
  268. data/spec/rails/lib/tasks/.keep +0 -0
  269. data/spec/rails/log/.keep +0 -0
  270. data/spec/rails/public/404.html +0 -67
  271. data/spec/rails/public/422.html +0 -67
  272. data/spec/rails/public/500.html +0 -66
  273. data/spec/rails/public/favicon.ico +0 -0
  274. data/spec/rails/public/robots.txt +0 -5
  275. data/spec/rails/spec/hamlit_spec.rb +0 -123
  276. data/spec/rails/spec/rails_helper.rb +0 -56
  277. data/spec/rails/spec/spec_helper.rb +0 -91
  278. data/spec/rails/vendor/assets/javascripts/.keep +0 -0
  279. data/spec/rails/vendor/assets/stylesheets/.keep +0 -0
  280. data/spec/spec_helper.rb +0 -36
  281. data/spec/spec_helper/document_generator.rb +0 -93
  282. data/spec/spec_helper/render_helper.rb +0 -120
  283. data/spec/spec_helper/test_case.rb +0 -55
@@ -1,239 +0,0 @@
1
- describe Hamlit::Engine do
2
- describe 'text' do
3
- it 'renders string interpolation' do
4
- assert_render(<<-'HAML', <<-HTML)
5
- #{ "a#{3}a" }a" #{["1", 2]} b " !
6
- a#{{ a: 3 }}
7
- <ht#{2}ml>
8
- HAML
9
- a3aa" [&quot;1&quot;, 2] b " !
10
- a{:a=&gt;3}
11
- <ht2ml>
12
- HTML
13
- end
14
-
15
- it 'renders . or # which is not continued by tag name' do
16
- assert_render(<<-HAML, <<-HTML, error_with: [:haml, :faml])
17
- .
18
- .*
19
- ..
20
- #
21
- #+
22
- ##
23
- HAML
24
- .
25
- .*
26
- ..
27
- #
28
- #+
29
- ##
30
- HTML
31
- end
32
-
33
- it 'escapes all operators by backslash' do
34
- assert_render(<<-'HAML', <<-HTML)
35
- = 'a'
36
- -
37
- \= 'a'
38
- \-
39
- HAML
40
- a
41
- = 'a'
42
- -
43
- HTML
44
- end
45
-
46
- it 'renders == operator' do
47
- assert_render(<<-'HAML', <<-HTML)
48
- ===
49
- == =
50
- == <a>
51
- == #{'<a>'}
52
- HAML
53
- =
54
- =
55
- <a>
56
- &lt;a&gt;
57
- HTML
58
- end
59
-
60
- it 'renders !== operator' do
61
- assert_render(<<-'HAML', <<-HTML)
62
- == #{'<a>'}
63
- !== #{'<a>'}
64
- !===
65
- !== =
66
- HAML
67
- &lt;a&gt;
68
- <a>
69
- =
70
- =
71
- HTML
72
- end
73
-
74
- it 'leaves empty spaces after backslash' do
75
- expect(render_string('\ a')).to eq(" a\n")
76
- end
77
-
78
- it 'renders spaced - properly' do
79
- assert_render(<<-HAML, <<-'HTML')
80
- %div
81
- foo
82
- .test - bar
83
- .test - baz
84
- HAML
85
- <div>
86
- foo
87
- <div class='test'>- bar</div>
88
- <div class='test'>- baz</div>
89
- </div>
90
- HTML
91
- end
92
-
93
- describe 'inline operator' do
94
- it 'renders ! operator' do
95
- assert_render(<<-'HAML', <<-'HTML')
96
- %span!#{'<nyaa>'}
97
- %span! #{'<nyaa>'}
98
- ! #{'<nyaa>'}
99
- HAML
100
- <span><nyaa></span>
101
- <span><nyaa></span>
102
- <nyaa>
103
- HTML
104
- end
105
-
106
- it 'renders & operator' do
107
- assert_render(<<-'HAML', <<-'HTML')
108
- %span& #{'<nyaa>'}
109
- %span&#{'<nyaa>'}
110
- & #{'<nyaa>'}
111
- HAML
112
- <span>&lt;nyaa&gt;</span>
113
- <span>&lt;nyaa&gt;</span>
114
- &lt;nyaa&gt;
115
- HTML
116
- end
117
-
118
- it 'renders !, & operator right before a non-space character' do
119
- assert_render(<<-'HAML', <<-'HTML', compatible_only: :haml)
120
- &nbsp;
121
- \&nbsp;
122
- !hello
123
- \!hello
124
- HAML
125
- &nbsp;
126
- &nbsp;
127
- !hello
128
- !hello
129
- HTML
130
- end
131
-
132
- it 'renders &, ! operator inside a tag' do
133
- assert_render(<<-HAML, <<-HTML)
134
- %span &nbsp;
135
- %span&nbsp;
136
- %span& nbsp;
137
- %span !hello
138
- %span!hello
139
- %span! hello
140
- HAML
141
- <span>&nbsp;</span>
142
- <span>nbsp;</span>
143
- <span>nbsp;</span>
144
- <span>!hello</span>
145
- <span>hello</span>
146
- <span>hello</span>
147
- HTML
148
- end
149
-
150
- it 'does not accept backslash operator' do
151
- assert_render(<<-'HAML', <<-'HTML')
152
- %span\ foo
153
- HAML
154
- <span>\ foo</span>
155
- HTML
156
- end
157
-
158
- it 'renders != operator' do
159
- assert_render(<<-'HAML', <<-'HTML')
160
- %span!= '<nyaa>'
161
- HAML
162
- <span><nyaa></span>
163
- HTML
164
- end
165
-
166
- it 'renders !== operator' do
167
- assert_render(<<-'HAML', <<-'HTML')
168
- %span!==#{'<nyaa>'}
169
- %span!== #{'<nyaa>'}
170
- !==#{'<nyaa>'}
171
- !== #{'<nyaa>'}
172
- HAML
173
- <span><nyaa></span>
174
- <span><nyaa></span>
175
- <nyaa>
176
- <nyaa>
177
- HTML
178
- end
179
-
180
- it 'renders &= operator' do
181
- assert_render(<<-'HAML', <<-'HTML', escape_html: false)
182
- %span&= '<nyaa>'
183
- HAML
184
- <span>&lt;nyaa&gt;</span>
185
- HTML
186
- end
187
-
188
- it 'renders &== operator' do
189
- assert_render(<<-'HAML', <<-'HTML')
190
- &===
191
- &== =
192
- &== #{'<p>'}
193
- HAML
194
- =
195
- =
196
- &lt;p&gt;
197
- HTML
198
- end
199
-
200
- it 'renders ~ operator' do
201
- assert_render(<<-HAML, <<-HTML, escape_html: false)
202
- %span~ 1
203
- HAML
204
- <span>1</span>
205
- HTML
206
- end
207
- end
208
-
209
- describe 'string interpolation' do
210
- specify { assert_render('#{}', "\n") }
211
- specify { assert_render('1#{}', "1\n") }
212
- specify { assert_render('1#{2}', "12\n") }
213
- specify { assert_render('}#{1}', "}1\n") }
214
- specify { assert_render('#{1}2', "12\n") }
215
- specify { assert_render('1#{ "2#{3}4" }5', "12345\n") }
216
- specify { assert_render('#{1}2#{3}4#{5}6#{7}8#{9}', "123456789\n") }
217
- specify { assert_render(%q{'"!@$%^&*|=#{1}1#{1}2}, %Q{'"!@$%^&*|=1112\n}) }
218
- specify { assert_render('あ#{1}', "あ1\n") }
219
- specify { assert_render('あ#{"い"}う', "あいう\n") }
220
- specify { assert_render('a#{"<b>"}c', "a&lt;b&gt;c\n") }
221
- end
222
-
223
- describe 'illegal inputs' do
224
- it 'rejects an invalid tag' do
225
- expect { render_string(<<-HAML.unindent) }.
226
- % a
227
- HAML
228
- to raise_error(Hamlit::SyntaxError, 'Invalid tag: "% a".')
229
- end
230
-
231
- it 'rejects an invalid tag' do
232
- expect { render_string(<<-HAML.unindent) }.
233
- %.foo
234
- HAML
235
- to raise_error(Hamlit::SyntaxError, 'Invalid tag: "%.foo".')
236
- end
237
- end
238
- end
239
- end
@@ -1,58 +0,0 @@
1
- describe Hamlit::Engine do
2
- describe '.new' do
3
- subject { described_class.new(options) }
4
-
5
- let(:buffer) { '_a' }
6
- let(:options) do
7
- {
8
- buffer: buffer,
9
- generator: Temple::Generators::ArrayBuffer,
10
- }
11
- end
12
-
13
- it 'accepts generator valid options' do
14
- expect(subject.call('')).to eq(
15
- "#{buffer} = []; ; #{buffer} = #{buffer}.join",
16
- )
17
- end
18
- end
19
-
20
- describe '#call' do
21
- let(:haml) do
22
- <<-HAML.unindent
23
- !!! html
24
-
25
- %html
26
- %head
27
- %title Simple Haml
28
- %body
29
- %h1= 'header'
30
- - unless false
31
- %ul
32
- - for i in [1, 2, 3]
33
- - if i
34
- %li
35
- %strong= 'hello'
36
- - else
37
- %li
38
- %a{:href => i}= i
39
- - else
40
- %p last line
41
- HAML
42
- end
43
- let(:engine) { described_class.new }
44
-
45
- it 'generates code with the same lineno as a template' do
46
- lines = engine.call(haml).split("\n")
47
- expect(lines[0]).to include('DOCTYPE')
48
- expect(lines[6]).to include('header')
49
- expect(lines[7]).to include('unless')
50
- expect(lines[9]).to include('for i in')
51
- expect(lines[10]).to include('if i')
52
- expect(lines[12]).to include('hello')
53
- expect(lines[13]).to include('else')
54
- expect(lines[16]).to include('else')
55
- expect(lines[17]).to include('last line')
56
- end
57
- end
58
- end
@@ -1,60 +0,0 @@
1
- describe Hamlit::Filters::Coffee do
2
- describe '#compile' do
3
- it 'renders coffee filter' do
4
- assert_render(<<-HAML, <<-HTML)
5
- :coffee
6
- foo = ->
7
- alert('hello')
8
- HAML
9
- <script>
10
- (function() {
11
- var foo;
12
-
13
- foo = function() {
14
- return alert('hello');
15
- };
16
-
17
- }).call(this);
18
- </script>
19
- HTML
20
- end
21
-
22
- it 'renders coffeescript filter' do
23
- assert_render(<<-HAML, <<-HTML)
24
- :coffee
25
- foo = ->
26
- alert('hello')
27
- HAML
28
- <script>
29
- (function() {
30
- var foo;
31
-
32
- foo = function() {
33
- return alert('hello');
34
- };
35
-
36
- }).call(this);
37
- </script>
38
- HTML
39
- end
40
-
41
- it 'renders coffeescript filter' do
42
- assert_render(<<-'HAML', <<-HTML)
43
- :coffee
44
- foo = ->
45
- alert("#{'<&>'}")
46
- HAML
47
- <script>
48
- (function() {
49
- var foo;
50
-
51
- foo = function() {
52
- return alert("<&>");
53
- };
54
-
55
- }).call(this);
56
- </script>
57
- HTML
58
- end
59
- end
60
- end
@@ -1,33 +0,0 @@
1
- describe Hamlit::Filters::Css do
2
- describe '#compile' do
3
- it 'renders css' do
4
- assert_render(<<-HAML, <<-HTML)
5
- :css
6
- .foo {
7
- width: 100px;
8
- }
9
- HAML
10
- <style>
11
- .foo {
12
- width: 100px;
13
- }
14
- </style>
15
- HTML
16
- end
17
-
18
- it 'parses string interpolation' do
19
- assert_render(<<-'HAML', <<-HTML)
20
- :css
21
- .foo {
22
- content: "#{'<&>'}";
23
- }
24
- HAML
25
- <style>
26
- .foo {
27
- content: "<&>";
28
- }
29
- </style>
30
- HTML
31
- end
32
- end
33
- end
@@ -1,16 +0,0 @@
1
- describe Hamlit::Filters::Erb do
2
- describe '#compile' do
3
- it 'renders erb filter' do
4
- assert_render(<<-HAML, <<-HTML, compatible_only: [], error_with: :faml)
5
- :erb
6
- <% if true %>
7
- ok
8
- <% else %>
9
- ng
10
- <% end %>
11
- HAML
12
- ok
13
- HTML
14
- end
15
- end
16
- end
@@ -1,82 +0,0 @@
1
- describe Hamlit::Filters::Javascript do
2
- describe '#compile' do
3
- it 'just renders script tag for empty filter' do
4
- assert_render(<<-HAML, <<-HTML, compatible_only: [])
5
- before
6
- :javascript
7
- after
8
- HAML
9
- before
10
- <script>
11
-
12
- </script>
13
- after
14
- HTML
15
- end
16
-
17
- it 'compiles javascript filter' do
18
- assert_render(<<-HAML, <<-HTML)
19
- before
20
- :javascript
21
- alert('hello');
22
- after
23
- HAML
24
- before
25
- <script>
26
- alert('hello');
27
- </script>
28
- after
29
- HTML
30
- end
31
-
32
- it 'accepts illegal indentation' do
33
- assert_render(<<-HAML, <<-HTML, compatible_only: :faml)
34
- :javascript
35
- if {
36
- alert('hello');
37
- }
38
- :javascript
39
- if {
40
- alert('hello');
41
- }
42
- HAML
43
- <script>
44
- if {
45
- alert('hello');
46
- }
47
- </script>
48
- <script>
49
- if {
50
- alert('hello');
51
- }
52
- </script>
53
- HTML
54
- end
55
-
56
- it 'accepts illegal indentation' do
57
- assert_render(<<-HAML, <<-HTML)
58
- :javascript
59
- if {
60
- alert('a');
61
- }
62
- HAML
63
- <script>
64
- if {
65
- alert('a');
66
- }
67
- </script>
68
- HTML
69
- end
70
-
71
- it 'parses string interpolation' do
72
- assert_render(<<-'HAML', <<-HTML)
73
- :javascript
74
- var a = "#{'<&>'}";
75
- HAML
76
- <script>
77
- var a = "<&>";
78
- </script>
79
- HTML
80
- end
81
- end
82
- end