haml 2.0.6 → 2.0.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of haml might be problematic. Click here for more details.
- data/VERSION +1 -1
- data/lib/haml.rb +1 -0
- data/lib/haml/buffer.rb +1 -0
- data/lib/haml/filters.rb +5 -5
- data/lib/haml/helpers.rb +10 -5
- data/lib/haml/helpers/action_view_mods.rb +7 -3
- data/lib/haml/util.rb +15 -0
- data/test/benchmark.rb +38 -33
- data/test/haml/engine_test.rb +23 -0
- data/test/haml/results/helpers.xhtml +20 -18
- data/test/haml/template_test.rb +2 -2
- data/test/haml/templates/_av_partial_1_ugly.haml +9 -0
- data/test/haml/templates/_av_partial_2_ugly.haml +5 -0
- data/test/haml/templates/action_view_ugly.haml +47 -0
- data/test/haml/templates/helpers.haml +30 -27
- data/test/haml/templates/standard_ugly.haml +42 -0
- data/test/sass/plugin_test.rb +11 -2
- metadata +107 -102
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.7
|
data/lib/haml.rb
CHANGED
data/lib/haml/buffer.rb
CHANGED
data/lib/haml/filters.rb
CHANGED
@@ -249,13 +249,13 @@ END
|
|
249
249
|
def render(text)
|
250
250
|
engine = case @required
|
251
251
|
when 'rdiscount'
|
252
|
-
RDiscount
|
252
|
+
::RDiscount
|
253
253
|
when 'peg_markdown'
|
254
|
-
PEGMarkdown
|
254
|
+
::PEGMarkdown
|
255
255
|
when 'maruku'
|
256
|
-
Maruku
|
256
|
+
::Maruku
|
257
257
|
when 'bluecloth'
|
258
|
-
BlueCloth
|
258
|
+
::BlueCloth
|
259
259
|
end
|
260
260
|
engine.new(text).to_html
|
261
261
|
end
|
@@ -266,7 +266,7 @@ END
|
|
266
266
|
lazy_require 'maruku'
|
267
267
|
|
268
268
|
def render(text)
|
269
|
-
Maruku.new(text).to_html
|
269
|
+
::Maruku.new(text).to_html
|
270
270
|
end
|
271
271
|
end
|
272
272
|
end
|
data/lib/haml/helpers.rb
CHANGED
@@ -254,17 +254,17 @@ module Haml
|
|
254
254
|
# the local variable <tt>foo</tt> would be assigned to "<p>13</p>\n".
|
255
255
|
#
|
256
256
|
def capture_haml(*args, &block)
|
257
|
-
buffer = eval('_hamlout', block) rescue haml_buffer
|
257
|
+
buffer = eval('_hamlout', block.binding) rescue haml_buffer
|
258
258
|
with_haml_buffer(buffer) do
|
259
259
|
position = haml_buffer.buffer.length
|
260
260
|
|
261
261
|
block.call(*args)
|
262
262
|
|
263
|
-
captured = haml_buffer.buffer.slice!(position..-1)
|
263
|
+
captured = haml_buffer.buffer.slice!(position..-1).split(/^/)
|
264
264
|
|
265
265
|
min_tabs = nil
|
266
266
|
captured.each do |line|
|
267
|
-
tabs = line.index(/[^ ]/)
|
267
|
+
tabs = line.index(/[^ ]/) || line.length
|
268
268
|
min_tabs ||= tabs
|
269
269
|
min_tabs = min_tabs > tabs ? tabs : min_tabs
|
270
270
|
end
|
@@ -287,10 +287,15 @@ END
|
|
287
287
|
|
288
288
|
# Outputs text directly to the Haml buffer, with the proper tabulation
|
289
289
|
def haml_concat(text = "")
|
290
|
-
haml_buffer.buffer <<
|
290
|
+
haml_buffer.buffer << haml_indent << text.to_s << "\n"
|
291
291
|
nil
|
292
292
|
end
|
293
293
|
|
294
|
+
# Returns the string that should be used to indent the current line
|
295
|
+
def haml_indent
|
296
|
+
' ' * haml_buffer.tabulation
|
297
|
+
end
|
298
|
+
|
294
299
|
#
|
295
300
|
# call-seq:
|
296
301
|
# haml_tag(name, *flags, attributes = {}) {...}
|
@@ -407,7 +412,7 @@ END
|
|
407
412
|
|
408
413
|
# Returns whether or not +block+ is defined directly in a Haml template.
|
409
414
|
def block_is_haml?(block)
|
410
|
-
eval('_hamlout', block)
|
415
|
+
eval('_hamlout', block.binding)
|
411
416
|
true
|
412
417
|
rescue
|
413
418
|
false
|
@@ -17,7 +17,7 @@ if defined?(ActionView) and not defined?(Merb::Plugins)
|
|
17
17
|
alias_method :render, :render_with_haml
|
18
18
|
|
19
19
|
# Rails >2.1
|
20
|
-
if
|
20
|
+
if Haml::Util.has?(:instance_method, self, :output_buffer)
|
21
21
|
def output_buffer_with_haml
|
22
22
|
return haml_buffer.buffer if is_haml?
|
23
23
|
output_buffer_without_haml
|
@@ -44,7 +44,7 @@ if defined?(ActionView) and not defined?(Merb::Plugins)
|
|
44
44
|
# In Rails <=2.1, we've got to override considerable capturing infrastructure.
|
45
45
|
# In Rails >2.1, we can make do with only overriding #capture
|
46
46
|
# (which no longer behaves differently in helper contexts).
|
47
|
-
unless
|
47
|
+
unless Haml::Util.has?(:instance_method, ActionView::Base, :output_buffer)
|
48
48
|
module CaptureHelper
|
49
49
|
def capture_with_haml(*args, &block)
|
50
50
|
# Rails' #capture helper will just return the value of the block
|
@@ -141,10 +141,12 @@ if defined?(ActionView) and not defined?(Merb::Plugins)
|
|
141
141
|
tab_up
|
142
142
|
oldproc.call(*args)
|
143
143
|
tab_down
|
144
|
+
concat haml_indent
|
144
145
|
end
|
146
|
+
concat haml_indent
|
145
147
|
end
|
146
148
|
res = form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc) + "\n"
|
147
|
-
concat "\n" if block_given?
|
149
|
+
concat "\n" if block_given?
|
148
150
|
res
|
149
151
|
else
|
150
152
|
form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc)
|
@@ -162,7 +164,9 @@ if defined?(ActionView) and not defined?(Merb::Plugins)
|
|
162
164
|
tab_up
|
163
165
|
oldproc.call(*args)
|
164
166
|
tab_down
|
167
|
+
concat haml_indent
|
165
168
|
end
|
169
|
+
concat haml_indent
|
166
170
|
end
|
167
171
|
form_for_without_haml(object_name, *args, &proc)
|
168
172
|
concat "\n" if block_given? && is_haml?
|
data/lib/haml/util.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Haml
|
2
|
+
module Util
|
3
|
+
class << self; include Haml::Util; end
|
4
|
+
|
5
|
+
RUBY_VERSION = ::RUBY_VERSION.split(".").map {|s| s.to_i}
|
6
|
+
|
7
|
+
def ruby1_8?
|
8
|
+
Haml::Util::RUBY_VERSION[0] == 1 && Haml::Util::RUBY_VERSION[1] < 9
|
9
|
+
end
|
10
|
+
|
11
|
+
def has?(attr, klass, method)
|
12
|
+
klass.send("#{attr}s").include?(ruby1_8? ? method.to_s : method.to_sym)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/test/benchmark.rb
CHANGED
@@ -14,19 +14,11 @@ end
|
|
14
14
|
require File.dirname(__FILE__) + '/../lib/haml'
|
15
15
|
require File.dirname(__FILE__) + '/linked_rails'
|
16
16
|
%w[sass rubygems erb erubis markaby active_support action_controller
|
17
|
-
action_view haml/template].each(
|
18
|
-
|
19
|
-
begin
|
20
|
-
require 'benchwarmer'
|
21
|
-
rescue LoadError
|
22
|
-
# Since it's not as simple as gem install at the time of writing,
|
23
|
-
# we need to direct folks to the benchwarmer gem.
|
24
|
-
raise "The Haml benchmarks require the benchwarmer gem, available from http://github.com/wycats/benchwarmer"
|
25
|
-
end
|
17
|
+
action_view action_pack haml/template rbench].each {|dep| require(dep)}
|
26
18
|
|
27
19
|
def view
|
28
|
-
unless
|
29
|
-
return ActionView::Base.new(File.dirname(__FILE__),
|
20
|
+
unless Haml::Util.has?(:instance_method, ActionView::Base, :finder)
|
21
|
+
return ActionView::Base.new(File.dirname(__FILE__), {})
|
30
22
|
end
|
31
23
|
|
32
24
|
# Rails >=2.1.0
|
@@ -35,9 +27,15 @@ def view
|
|
35
27
|
base
|
36
28
|
end
|
37
29
|
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
def render(view, file)
|
31
|
+
view.render :file => file
|
32
|
+
end
|
33
|
+
|
34
|
+
RBench.run(times) do
|
35
|
+
column :haml, :title => "Haml"
|
36
|
+
column :haml_ugly, :title => "Haml :ugly"
|
37
|
+
column :erb, :title => "ERB"
|
38
|
+
column :erubis, :title => "Erubis"
|
41
39
|
|
42
40
|
template_name = 'standard'
|
43
41
|
directory = File.dirname(__FILE__) + '/haml'
|
@@ -45,49 +43,56 @@ Benchmark.warmer(times) do
|
|
45
43
|
erb_template = File.read("#{directory}/rhtml/#{template_name}.rhtml")
|
46
44
|
markaby_template = File.read("#{directory}/markaby/#{template_name}.mab")
|
47
45
|
|
48
|
-
report "Uncached" do
|
49
|
-
haml { Haml::Engine.new(haml_template).render }
|
50
|
-
erb { ERB.new(erb_template, nil, '-').result }
|
51
|
-
erubis { Erubis::Eruby.new(erb_template).result }
|
52
|
-
mab { Markaby::Template.new(markaby_template).render }
|
53
|
-
end
|
54
|
-
|
55
46
|
report "Cached" do
|
56
47
|
obj = Object.new
|
57
48
|
|
58
49
|
Haml::Engine.new(haml_template).def_method(obj, :haml)
|
50
|
+
Haml::Engine.new(haml_template, :ugly => true).def_method(obj, :haml_ugly)
|
59
51
|
Erubis::Eruby.new(erb_template).def_method(obj, :erubis)
|
60
52
|
obj.instance_eval("def erb; #{ERB.new(erb_template, nil, '-').src}; end")
|
61
53
|
|
62
|
-
haml
|
63
|
-
|
64
|
-
|
54
|
+
haml { obj.haml }
|
55
|
+
haml_ugly { obj.haml_ugly }
|
56
|
+
erb { obj.erb }
|
57
|
+
erubis { obj.erubis }
|
65
58
|
end
|
66
59
|
|
67
60
|
report "ActionView" do
|
68
61
|
@base = view
|
69
62
|
|
63
|
+
@base.unmemoize_all
|
64
|
+
Haml::Template.options[:ugly] = false
|
70
65
|
# To cache the template
|
71
|
-
@base
|
72
|
-
@base
|
66
|
+
render @base, 'haml/templates/standard'
|
67
|
+
render @base, 'haml/rhtml/standard'
|
68
|
+
|
69
|
+
haml { render @base, 'haml/templates/standard' }
|
70
|
+
erb { render @base, 'haml/rhtml/standard' }
|
73
71
|
|
74
|
-
|
75
|
-
|
72
|
+
Haml::Template.options[:ugly] = true
|
73
|
+
render @base, 'haml/templates/standard_ugly'
|
74
|
+
haml_ugly { render @base, 'haml/templates/standard_ugly' }
|
76
75
|
end
|
77
76
|
|
78
77
|
report "ActionView with deep partials" do
|
79
78
|
@base = view
|
80
79
|
|
80
|
+
@base.unmemoize_all
|
81
|
+
Haml::Template.options[:ugly] = false
|
81
82
|
# To cache the template
|
82
|
-
@base
|
83
|
-
@base
|
83
|
+
render @base, 'haml/templates/action_view'
|
84
|
+
render @base, 'haml/rhtml/action_view'
|
85
|
+
|
86
|
+
haml { render @base, 'haml/templates/action_view' }
|
87
|
+
erb { render @base, 'haml/rhtml/action_view' }
|
84
88
|
|
85
|
-
|
86
|
-
|
89
|
+
Haml::Template.options[:ugly] = true
|
90
|
+
render @base, 'haml/templates/action_view_ugly'
|
91
|
+
haml_ugly { render @base, 'haml/templates/action_view_ugly' }
|
87
92
|
end
|
88
93
|
end
|
89
94
|
|
90
|
-
|
95
|
+
RBench.run(times) do
|
91
96
|
sass_template = File.read("#{File.dirname(__FILE__)}/sass/templates/complex.sass")
|
92
97
|
|
93
98
|
report("Sass") { Sass::Engine.new(sass_template).render }
|
data/test/haml/engine_test.rb
CHANGED
@@ -188,6 +188,19 @@ SOURCE
|
|
188
188
|
render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml))
|
189
189
|
end
|
190
190
|
|
191
|
+
def test_whitespace_nuke_with_both_newlines
|
192
|
+
# Regression test
|
193
|
+
assert_equal("<p>foo</p>\n", render('%p<= "\nfoo\n"'))
|
194
|
+
assert_equal(<<HTML, render(<<HAML))
|
195
|
+
<p>
|
196
|
+
<p>foo</p>
|
197
|
+
</p>
|
198
|
+
HTML
|
199
|
+
%p
|
200
|
+
%p<= "\\nfoo\\n"
|
201
|
+
HAML
|
202
|
+
end
|
203
|
+
|
191
204
|
def test_both_whitespace_nukes_work_together
|
192
205
|
assert_equal(<<RESULT, render(<<SOURCE))
|
193
206
|
<p><q>Foo
|
@@ -308,6 +321,16 @@ HAML
|
|
308
321
|
assert_equal("foo&bar\n", render("= 'foo&bar' #comment", :escape_html => true))
|
309
322
|
end
|
310
323
|
|
324
|
+
def test_script_with_if_shouldnt_output
|
325
|
+
assert_equal(<<HTML, render(<<HAML))
|
326
|
+
<p>foo</p>
|
327
|
+
<p></p>
|
328
|
+
HTML
|
329
|
+
%p= "foo"
|
330
|
+
%p= "bar" if false
|
331
|
+
HAML
|
332
|
+
end
|
333
|
+
|
311
334
|
# Options tests
|
312
335
|
|
313
336
|
def test_filename_and_line
|
@@ -48,24 +48,26 @@ foo
|
|
48
48
|
<p>
|
49
49
|
<form action="" method="post">
|
50
50
|
</p>
|
51
|
-
<
|
52
|
-
<
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
</
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
51
|
+
<div>
|
52
|
+
<form action="" method="post">
|
53
|
+
<div><input name="commit" type="submit" value="save" /></div>
|
54
|
+
<p>
|
55
|
+
@foo =
|
56
|
+
value one
|
57
|
+
</p>
|
58
|
+
Toplevel? false
|
59
|
+
<p>
|
60
|
+
@foo =
|
61
|
+
value three
|
62
|
+
</p>
|
63
|
+
</form>
|
64
|
+
<form action="" method="post">
|
65
|
+
Title:
|
66
|
+
<input id="article_title" name="article[title]" size="30" type="text" value="Hello" />
|
67
|
+
Body:
|
68
|
+
<input id="article_body" name="article[body]" size="30" type="text" value="World" />
|
69
|
+
</form>
|
70
|
+
</div>
|
69
71
|
<li><a href='http://www.google.com'>google</a></li>
|
70
72
|
<p>
|
71
73
|
foo
|
data/test/haml/template_test.rb
CHANGED
@@ -38,7 +38,7 @@ class TemplateTest < Test::Unit::TestCase
|
|
38
38
|
def setup
|
39
39
|
vars = { 'article' => Article.new, 'foo' => 'value one' }
|
40
40
|
|
41
|
-
unless
|
41
|
+
unless Haml::Util.has?(:instance_method, ActionView::Base, :finder)
|
42
42
|
@base = ActionView::Base.new(TEMPLATE_PATH, vars)
|
43
43
|
else
|
44
44
|
# Rails 2.1.0
|
@@ -46,7 +46,7 @@ class TemplateTest < Test::Unit::TestCase
|
|
46
46
|
@base.finder.append_view_path(TEMPLATE_PATH)
|
47
47
|
end
|
48
48
|
|
49
|
-
if
|
49
|
+
if Haml::Util.has?(:private_method, @base, :evaluate_assigns)
|
50
50
|
@base.send(:evaluate_assigns)
|
51
51
|
else
|
52
52
|
# Rails 2.2
|
@@ -0,0 +1,47 @@
|
|
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 => 'haml/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"
|
@@ -42,36 +42,39 @@ click
|
|
42
42
|
<p>
|
43
43
|
<form action="" method="post">
|
44
44
|
</p>
|
45
|
-
<
|
46
|
-
<
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
45
|
+
<div>
|
46
|
+
<form action="" method="post">
|
47
|
+
<div><input name="commit" type="submit" value="save" /></div>
|
48
|
+
<p>
|
49
|
+
@foo =
|
50
|
+
value one
|
51
|
+
</p>
|
52
|
+
Toplevel? false
|
53
|
+
<p>
|
54
|
+
@foo =
|
55
|
+
value three
|
56
|
+
</p>
|
57
|
+
</form>
|
58
|
+
<form action="" method="post">
|
59
|
+
Title:
|
60
|
+
<input id="article_title" name="article[title]" size="30" type="text" value="Hello" />
|
61
|
+
Body:
|
62
|
+
<input id="article_body" name="article[body]" size="30" type="text" value="World" />
|
63
|
+
</form>
|
64
|
+
</div>
|
63
65
|
- else
|
64
66
|
%p
|
65
67
|
= form_tag ''
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
68
|
+
%div
|
69
|
+
- form_tag '' do
|
70
|
+
%div= submit_tag 'save'
|
71
|
+
- @foo = 'value one'
|
72
|
+
= test_partial 'partial'
|
73
|
+
- form_for :article, @article, :url => '' do |f|
|
74
|
+
Title:
|
75
|
+
= f.text_field :title
|
76
|
+
Body:
|
77
|
+
= f.text_field :body
|
75
78
|
= list_of({:google => 'http://www.google.com'}) do |name, link|
|
76
79
|
%a{ :href => link }= name
|
77
80
|
%p
|
@@ -0,0 +1,42 @@
|
|
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
|
+
/ 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
|
18
|
+
= "Holy cow " + |
|
19
|
+
"multiline " + |
|
20
|
+
"tags! " + |
|
21
|
+
"A pipe (|) even!" |
|
22
|
+
= [1, 2, 3].collect { |n| "PipesIgnored|" }
|
23
|
+
= [1, 2, 3].collect { |n| |
|
24
|
+
n.to_s |
|
25
|
+
}.join("|") |
|
26
|
+
%div.silent
|
27
|
+
- foo = String.new
|
28
|
+
- foo << "this"
|
29
|
+
- foo << " shouldn't"
|
30
|
+
- foo << " evaluate"
|
31
|
+
= foo + " but now it should!"
|
32
|
+
-# Woah crap a comment!
|
33
|
+
|
34
|
+
-# That was a line that shouldn't close everything.
|
35
|
+
%ul.really.cool
|
36
|
+
- ('a'..'f').each do |a|
|
37
|
+
%li= a
|
38
|
+
#combo.of_divs_with_underscore= @should_eval = "with this text"
|
39
|
+
= [ 104, 101, 108, 108, 111 ].map do |byte|
|
40
|
+
- byte.chr
|
41
|
+
.footer
|
42
|
+
%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"
|
data/test/sass/plugin_test.rb
CHANGED
@@ -84,13 +84,22 @@ class SassPluginTest < Test::Unit::TestCase
|
|
84
84
|
end
|
85
85
|
|
86
86
|
require 'sass/plugin/merb'
|
87
|
-
MerbHandler
|
87
|
+
if defined?(MerbHandler)
|
88
|
+
MerbHandler.send(:define_method, :process_without_sass) { |*args| }
|
89
|
+
else
|
90
|
+
Merb::Rack::Application.send(:define_method, :call_without_sass) { |*args| }
|
91
|
+
end
|
92
|
+
|
88
93
|
set_plugin_opts
|
89
94
|
|
90
95
|
File.delete(tempfile_loc('basic'))
|
91
96
|
assert Sass::Plugin.stylesheet_needs_update?('basic')
|
92
97
|
|
93
|
-
MerbHandler
|
98
|
+
if defined?(MerbHandler)
|
99
|
+
MerbHandler.new('.').process nil, nil
|
100
|
+
else
|
101
|
+
Merb::Rack::Application.new.call(::Rack::MockRequest.env_for('/'))
|
102
|
+
end
|
94
103
|
|
95
104
|
assert !Sass::Plugin.stylesheet_needs_update?('basic')
|
96
105
|
end
|
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: 2.0.
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Weizenbaum
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2009-01-22 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -24,167 +24,172 @@ executables:
|
|
24
24
|
extensions: []
|
25
25
|
|
26
26
|
extra_rdoc_files:
|
27
|
-
-
|
27
|
+
- FAQ
|
28
28
|
- MIT-LICENSE
|
29
|
+
- VERSION
|
29
30
|
- README.rdoc
|
30
|
-
- FAQ
|
31
31
|
- REVISION
|
32
32
|
files:
|
33
33
|
- rails/init.rb
|
34
34
|
- lib/sass.rb
|
35
35
|
- lib/sass
|
36
|
-
- lib/sass/
|
37
|
-
- lib/sass/plugin/rails.rb
|
38
|
-
- lib/sass/plugin/merb.rb
|
36
|
+
- lib/sass/css.rb
|
39
37
|
- lib/sass/error.rb
|
40
38
|
- lib/sass/tree
|
39
|
+
- lib/sass/tree/comment_node.rb
|
40
|
+
- lib/sass/tree/node.rb
|
41
41
|
- lib/sass/tree/value_node.rb
|
42
|
-
- lib/sass/tree/attr_node.rb
|
43
42
|
- lib/sass/tree/directive_node.rb
|
44
|
-
- lib/sass/tree/
|
45
|
-
- lib/sass/tree/comment_node.rb
|
43
|
+
- lib/sass/tree/attr_node.rb
|
46
44
|
- lib/sass/tree/rule_node.rb
|
45
|
+
- lib/sass/plugin
|
46
|
+
- lib/sass/plugin/rails.rb
|
47
|
+
- lib/sass/plugin/merb.rb
|
47
48
|
- lib/sass/constant.rb
|
49
|
+
- lib/sass/engine.rb
|
50
|
+
- lib/sass/plugin.rb
|
48
51
|
- lib/sass/constant
|
49
|
-
- lib/sass/constant/color.rb
|
50
|
-
- lib/sass/constant/string.rb
|
51
52
|
- lib/sass/constant/number.rb
|
52
53
|
- lib/sass/constant/operation.rb
|
53
54
|
- lib/sass/constant/literal.rb
|
55
|
+
- lib/sass/constant/color.rb
|
56
|
+
- lib/sass/constant/string.rb
|
54
57
|
- lib/sass/constant/nil.rb
|
55
|
-
- lib/sass/plugin.rb
|
56
|
-
- lib/sass/css.rb
|
57
|
-
- lib/sass/engine.rb
|
58
58
|
- lib/haml
|
59
|
+
- lib/haml/filters.rb
|
59
60
|
- lib/haml/exec.rb
|
60
|
-
- lib/haml/html.rb
|
61
61
|
- lib/haml/error.rb
|
62
|
-
- lib/haml/buffer.rb
|
63
62
|
- lib/haml/template.rb
|
63
|
+
- lib/haml/engine.rb
|
64
64
|
- lib/haml/template
|
65
|
-
- lib/haml/template/plugin.rb
|
66
65
|
- lib/haml/template/patch.rb
|
66
|
+
- lib/haml/template/plugin.rb
|
67
67
|
- lib/haml/helpers.rb
|
68
|
-
- lib/haml/
|
69
|
-
- lib/haml/
|
68
|
+
- lib/haml/buffer.rb
|
69
|
+
- lib/haml/html.rb
|
70
70
|
- lib/haml/precompiler.rb
|
71
|
+
- lib/haml/util.rb
|
71
72
|
- lib/haml/helpers
|
72
|
-
- lib/haml/helpers/action_view_extensions.rb
|
73
73
|
- lib/haml/helpers/action_view_mods.rb
|
74
|
+
- lib/haml/helpers/action_view_extensions.rb
|
74
75
|
- lib/haml.rb
|
75
|
-
- bin/css2sass
|
76
76
|
- bin/sass
|
77
|
-
- bin/
|
77
|
+
- bin/css2sass
|
78
78
|
- bin/html2haml
|
79
|
+
- bin/haml
|
80
|
+
- test/linked_rails.rb
|
81
|
+
- test/benchmark.rb
|
79
82
|
- test/sass
|
83
|
+
- test/sass/results
|
84
|
+
- test/sass/results/constants.css
|
85
|
+
- test/sass/results/parent_ref.css
|
86
|
+
- test/sass/results/compressed.css
|
87
|
+
- test/sass/results/complex.css
|
88
|
+
- test/sass/results/compact.css
|
89
|
+
- test/sass/results/mixins.css
|
90
|
+
- test/sass/results/alt.css
|
91
|
+
- test/sass/results/subdir
|
92
|
+
- test/sass/results/subdir/subdir.css
|
93
|
+
- test/sass/results/subdir/nested_subdir
|
94
|
+
- test/sass/results/subdir/nested_subdir/nested_subdir.css
|
95
|
+
- test/sass/results/nested.css
|
96
|
+
- test/sass/results/import.css
|
97
|
+
- test/sass/results/multiline.css
|
98
|
+
- test/sass/results/basic.css
|
99
|
+
- test/sass/results/expanded.css
|
80
100
|
- test/sass/templates
|
81
|
-
- test/sass/templates/
|
101
|
+
- test/sass/templates/basic.sass
|
102
|
+
- test/sass/templates/bork.sass
|
82
103
|
- test/sass/templates/compressed.sass
|
83
|
-
- test/sass/templates/expanded.sass
|
84
104
|
- test/sass/templates/import.sass
|
105
|
+
- test/sass/templates/constants.sass
|
106
|
+
- test/sass/templates/expanded.sass
|
107
|
+
- test/sass/templates/nested.sass
|
108
|
+
- test/sass/templates/_partial.sass
|
109
|
+
- test/sass/templates/compact.sass
|
85
110
|
- test/sass/templates/subdir
|
86
111
|
- test/sass/templates/subdir/subdir.sass
|
87
112
|
- test/sass/templates/subdir/nested_subdir
|
88
113
|
- test/sass/templates/subdir/nested_subdir/nested_subdir.sass
|
89
|
-
- test/sass/templates/
|
90
|
-
- test/sass/templates/_partial.sass
|
91
|
-
- test/sass/templates/mixins.sass
|
92
|
-
- test/sass/templates/multiline.sass
|
93
|
-
- test/sass/templates/nested.sass
|
94
|
-
- test/sass/templates/compact.sass
|
114
|
+
- test/sass/templates/parent_ref.sass
|
95
115
|
- test/sass/templates/alt.sass
|
96
|
-
- test/sass/templates/constants.sass
|
97
116
|
- test/sass/templates/importee.sass
|
98
|
-
- test/sass/templates/
|
99
|
-
- test/sass/templates/
|
117
|
+
- test/sass/templates/mixins.sass
|
118
|
+
- test/sass/templates/multiline.sass
|
100
119
|
- test/sass/templates/complex.sass
|
101
|
-
- test/sass/
|
102
|
-
- test/sass/results
|
103
|
-
- test/sass/results/nested.css
|
104
|
-
- test/sass/results/subdir
|
105
|
-
- test/sass/results/subdir/nested_subdir
|
106
|
-
- test/sass/results/subdir/nested_subdir/nested_subdir.css
|
107
|
-
- test/sass/results/subdir/subdir.css
|
108
|
-
- test/sass/results/import.css
|
109
|
-
- test/sass/results/compact.css
|
110
|
-
- test/sass/results/expanded.css
|
111
|
-
- test/sass/results/alt.css
|
112
|
-
- test/sass/results/mixins.css
|
113
|
-
- test/sass/results/complex.css
|
114
|
-
- test/sass/results/constants.css
|
115
|
-
- test/sass/results/compressed.css
|
116
|
-
- test/sass/results/parent_ref.css
|
117
|
-
- test/sass/results/multiline.css
|
118
|
-
- test/sass/results/basic.css
|
120
|
+
- test/sass/templates/bork2.sass
|
119
121
|
- test/sass/engine_test.rb
|
122
|
+
- test/sass/plugin_test.rb
|
120
123
|
- test/haml
|
121
124
|
- test/haml/mocks
|
122
125
|
- test/haml/mocks/article.rb
|
123
|
-
- test/haml/template_test.rb
|
124
|
-
- test/haml/html2haml_test.rb
|
125
126
|
- test/haml/rhtml
|
126
|
-
- test/haml/rhtml/
|
127
|
+
- test/haml/rhtml/_av_partial_2.rhtml
|
127
128
|
- test/haml/rhtml/standard.rhtml
|
129
|
+
- test/haml/rhtml/_av_partial_1.rhtml
|
128
130
|
- test/haml/rhtml/action_view.rhtml
|
129
|
-
- test/haml/
|
131
|
+
- test/haml/html2haml_test.rb
|
132
|
+
- test/haml/template_test.rb
|
130
133
|
- test/haml/helper_test.rb
|
131
|
-
- test/haml/templates
|
132
|
-
- test/haml/templates/list.haml
|
133
|
-
- test/haml/templates/_text_area.haml
|
134
|
-
- test/haml/templates/_partial.haml
|
135
|
-
- test/haml/templates/nuke_outer_whitespace.haml
|
136
|
-
- test/haml/templates/_av_partial_2.haml
|
137
|
-
- test/haml/templates/partial_layout.haml
|
138
|
-
- test/haml/templates/helpful.haml
|
139
|
-
- test/haml/templates/just_stuff.haml
|
140
|
-
- test/haml/templates/silent_script.haml
|
141
|
-
- test/haml/templates/very_basic.haml
|
142
|
-
- test/haml/templates/nuke_inner_whitespace.haml
|
143
|
-
- test/haml/templates/eval_suppressed.haml
|
144
|
-
- test/haml/templates/tag_parsing.haml
|
145
|
-
- test/haml/templates/whitespace_handling.haml
|
146
|
-
- test/haml/templates/partials.haml
|
147
|
-
- test/haml/templates/standard.haml
|
148
|
-
- test/haml/templates/partialize.haml
|
149
|
-
- test/haml/templates/_layout_for_partial.haml
|
150
|
-
- test/haml/templates/_av_partial_1.haml
|
151
|
-
- test/haml/templates/filters.haml
|
152
|
-
- test/haml/templates/content_for_layout.haml
|
153
|
-
- test/haml/templates/helpers.haml
|
154
|
-
- test/haml/templates/original_engine.haml
|
155
|
-
- test/haml/templates/breakage.haml
|
156
|
-
- test/haml/templates/action_view.haml
|
157
134
|
- test/haml/results
|
135
|
+
- test/haml/results/tag_parsing.xhtml
|
158
136
|
- test/haml/results/content_for_layout.xhtml
|
159
|
-
- test/haml/results/
|
137
|
+
- test/haml/results/helpers.xhtml
|
138
|
+
- test/haml/results/original_engine.xhtml
|
139
|
+
- test/haml/results/very_basic.xhtml
|
140
|
+
- test/haml/results/helpful.xhtml
|
141
|
+
- test/haml/results/list.xhtml
|
142
|
+
- test/haml/results/partials.xhtml
|
143
|
+
- test/haml/results/eval_suppressed.xhtml
|
144
|
+
- test/haml/results/nuke_inner_whitespace.xhtml
|
160
145
|
- test/haml/results/whitespace_handling.xhtml
|
161
|
-
- test/haml/results/nuke_outer_whitespace.xhtml
|
162
146
|
- test/haml/results/silent_script.xhtml
|
163
|
-
- test/haml/results/filters.xhtml
|
164
147
|
- test/haml/results/standard.xhtml
|
165
|
-
- test/haml/results/
|
166
|
-
- test/haml/results/helpful.xhtml
|
167
|
-
- test/haml/results/very_basic.xhtml
|
168
|
-
- test/haml/results/eval_suppressed.xhtml
|
169
|
-
- test/haml/results/partials.xhtml
|
170
|
-
- test/haml/results/original_engine.xhtml
|
171
|
-
- test/haml/results/helpers.xhtml
|
172
|
-
- test/haml/results/list.xhtml
|
148
|
+
- test/haml/results/just_stuff.xhtml
|
173
149
|
- test/haml/results/partial_layout.xhtml
|
174
|
-
- test/haml/results/
|
150
|
+
- test/haml/results/filters.xhtml
|
151
|
+
- test/haml/results/nuke_outer_whitespace.xhtml
|
175
152
|
- test/haml/markaby
|
176
153
|
- test/haml/markaby/standard.mab
|
154
|
+
- test/haml/templates
|
155
|
+
- test/haml/templates/tag_parsing.haml
|
156
|
+
- test/haml/templates/nuke_inner_whitespace.haml
|
157
|
+
- test/haml/templates/partial_layout.haml
|
158
|
+
- test/haml/templates/_av_partial_2_ugly.haml
|
159
|
+
- test/haml/templates/partials.haml
|
160
|
+
- test/haml/templates/_layout_for_partial.haml
|
161
|
+
- test/haml/templates/original_engine.haml
|
162
|
+
- test/haml/templates/helpers.haml
|
163
|
+
- test/haml/templates/action_view_ugly.haml
|
164
|
+
- test/haml/templates/content_for_layout.haml
|
165
|
+
- test/haml/templates/silent_script.haml
|
166
|
+
- test/haml/templates/very_basic.haml
|
167
|
+
- test/haml/templates/filters.haml
|
168
|
+
- test/haml/templates/_av_partial_1.haml
|
169
|
+
- test/haml/templates/standard_ugly.haml
|
170
|
+
- test/haml/templates/_partial.haml
|
171
|
+
- test/haml/templates/nuke_outer_whitespace.haml
|
172
|
+
- test/haml/templates/breakage.haml
|
173
|
+
- test/haml/templates/list.haml
|
174
|
+
- test/haml/templates/standard.haml
|
175
|
+
- test/haml/templates/whitespace_handling.haml
|
176
|
+
- test/haml/templates/eval_suppressed.haml
|
177
|
+
- test/haml/templates/action_view.haml
|
178
|
+
- test/haml/templates/_av_partial_2.haml
|
179
|
+
- test/haml/templates/partialize.haml
|
180
|
+
- test/haml/templates/just_stuff.haml
|
181
|
+
- test/haml/templates/helpful.haml
|
182
|
+
- test/haml/templates/_av_partial_1_ugly.haml
|
183
|
+
- test/haml/templates/_text_area.haml
|
177
184
|
- test/haml/engine_test.rb
|
178
|
-
- test/linked_rails.rb
|
179
|
-
- test/rails
|
180
|
-
- test/benchmark.rb
|
181
185
|
- test/test_helper.rb
|
186
|
+
- test/rails
|
182
187
|
- Rakefile
|
183
188
|
- init.rb
|
184
|
-
-
|
189
|
+
- FAQ
|
185
190
|
- MIT-LICENSE
|
191
|
+
- VERSION
|
186
192
|
- README.rdoc
|
187
|
-
- FAQ
|
188
193
|
- REVISION
|
189
194
|
has_rdoc: true
|
190
195
|
homepage: http://haml.hamptoncatlin.com/
|
@@ -215,14 +220,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
220
|
requirements: []
|
216
221
|
|
217
222
|
rubyforge_project: haml
|
218
|
-
rubygems_version: 1.3.
|
223
|
+
rubygems_version: 1.3.1
|
219
224
|
signing_key:
|
220
225
|
specification_version: 2
|
221
226
|
summary: An elegant, structured XHTML/XML templating engine. Comes with Sass, a similar CSS templating engine.
|
222
227
|
test_files:
|
223
|
-
- test/sass/plugin_test.rb
|
224
228
|
- test/sass/engine_test.rb
|
225
|
-
- test/
|
229
|
+
- test/sass/plugin_test.rb
|
226
230
|
- test/haml/html2haml_test.rb
|
231
|
+
- test/haml/template_test.rb
|
227
232
|
- test/haml/helper_test.rb
|
228
233
|
- test/haml/engine_test.rb
|