haml-edge 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/EDGE_GEM_VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.1.3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.1.3
data/lib/haml/engine.rb CHANGED
@@ -17,16 +17,16 @@ module Haml
17
17
  include Precompiler
18
18
 
19
19
  # Allow reading and writing of the options hash
20
- attr :options, true
20
+ attr_accessor :options
21
21
 
22
22
  # This string contains the source code that is evaluated
23
23
  # to produce the Haml document.
24
- attr :precompiled, true
24
+ attr_accessor :precompiled
25
25
 
26
26
  # A string containing the indentation used for the Haml document.
27
27
  # nil if the indentation is ambiguous
28
28
  # (for example, for a single-level document).
29
- attr :indentation, true
29
+ attr_accessor :indentation
30
30
 
31
31
  # True if the format is XHTML
32
32
  def xhtml?
data/lib/haml/helpers.rb CHANGED
@@ -78,14 +78,14 @@ module Haml
78
78
 
79
79
  # call-seq:
80
80
  # find_and_preserve(input, tags = haml_buffer.options[:preserve])
81
- # find_and_preserve {...}
81
+ # find_and_preserve(tags = haml_buffer.options[:preserve]) {...}
82
82
  #
83
83
  # Uses preserve to convert any newlines inside whitespace-sensitive tags
84
84
  # into the HTML entities for endlines.
85
85
  # +tags+ is an array of tags to preserve.
86
86
  # It defaults to the value of the <tt>:preserve</tt> option.
87
- def find_and_preserve(input = '', tags = haml_buffer.options[:preserve], &block)
88
- return find_and_preserve(capture_haml(&block)) if block
87
+ def find_and_preserve(input = nil, tags = haml_buffer.options[:preserve], &block)
88
+ return find_and_preserve(capture_haml(&block), input || tags) if block
89
89
 
90
90
  input = input.to_s
91
91
  input.gsub(/<(#{tags.map(&Regexp.method(:escape)).join('|')})([^>]*)>(.*?)(<\/\1>)/im) do
data/lib/haml/html.rb CHANGED
@@ -14,7 +14,7 @@ module Haml
14
14
  # which can either be a string containing HTML or an Hpricot node,
15
15
  # to a Haml string when +render+ is called.
16
16
  def initialize(template, options = {})
17
- @@options = options
17
+ @options = options
18
18
 
19
19
  if template.is_a? Hpricot::Node
20
20
  @template = template
@@ -23,12 +23,12 @@ module Haml
23
23
  template = template.read
24
24
  end
25
25
 
26
- if @@options[:rhtml]
26
+ if @options[:rhtml]
27
27
  match_to_html(template, /<%=(.*?)-?%>/m, 'loud')
28
28
  match_to_html(template, /<%-?(.*?)-?%>/m, 'silent')
29
29
  end
30
30
 
31
- method = @@options[:xhtml] ? Hpricot.method(:XML) : method(:Hpricot)
31
+ method = @options[:xhtml] ? Hpricot.method(:XML) : method(:Hpricot)
32
32
  @template = method.call(template.gsub('&', '&amp;'))
33
33
  end
34
34
  end
@@ -36,14 +36,14 @@ module Haml
36
36
  # Processes the document and returns the result as a string
37
37
  # containing the Haml template.
38
38
  def render
39
- @template.to_haml(0)
39
+ @template.to_haml(0, @options)
40
40
  end
41
41
  alias_method :to_haml, :render
42
42
 
43
43
  module ::Hpricot::Node
44
44
  # Returns the Haml representation of the given node,
45
45
  # at the given tabulation.
46
- def to_haml(tabs = 0)
46
+ def to_haml(tabs, options)
47
47
  parse_text(self.to_s, tabs)
48
48
  end
49
49
 
@@ -70,32 +70,28 @@ module Haml
70
70
 
71
71
  # :stopdoc:
72
72
 
73
- def self.options
74
- @@options
75
- end
76
-
77
73
  TEXT_REGEXP = /^(\s*).*$/
78
74
 
79
75
  class ::Hpricot::Doc
80
- def to_haml(tabs = 0)
81
- (children || []).inject('') {|s, c| s << c.to_haml(0)}
76
+ def to_haml(tabs, options)
77
+ (children || []).inject('') {|s, c| s << c.to_haml(0, options)}
82
78
  end
83
79
  end
84
80
 
85
81
  class ::Hpricot::XMLDecl
86
- def to_haml(tabs = 0)
82
+ def to_haml(tabs, options)
87
83
  "#{tabulate(tabs)}!!! XML\n"
88
84
  end
89
85
  end
90
86
 
91
87
  class ::Hpricot::CData
92
- def to_haml(tabs = 0)
88
+ def to_haml(tabs, options)
93
89
  "#{tabulate(tabs)}:cdata\n#{parse_text(self.content, tabs + 1)}"
94
90
  end
95
91
  end
96
92
 
97
93
  class ::Hpricot::DocType
98
- def to_haml(tabs = 0)
94
+ def to_haml(tabs, options)
99
95
  attrs = public_id.scan(/DTD\s+([^\s]+)\s*([^\s]*)\s*([^\s]*)\s*\/\//)[0]
100
96
  if attrs == nil
101
97
  raise Exception.new("Invalid doctype")
@@ -126,34 +122,35 @@ module Haml
126
122
  end
127
123
 
128
124
  class ::Hpricot::Comment
129
- def to_haml(tabs = 0)
125
+ def to_haml(tabs, options)
130
126
  "#{tabulate(tabs)}/\n#{parse_text(self.content, tabs + 1)}"
131
127
  end
132
128
  end
133
129
 
134
130
  class ::Hpricot::Elem
135
- def to_haml(tabs = 0)
131
+ def to_haml(tabs, options)
136
132
  output = "#{tabulate(tabs)}"
137
- if HTML.options[:rhtml] && name[0...5] == 'haml:'
133
+ if options[:rhtml] && name[0...5] == 'haml:'
138
134
  return output + HTML.send("haml_tag_#{name[5..-1]}", CGI.unescapeHTML(self.inner_text))
139
135
  end
140
136
 
141
- output += "%#{name}" unless name == 'div' && (static_id? || static_classname?)
137
+ output += "%#{name}" unless name == 'div' &&
138
+ (static_id?(options) || static_classname?(options))
142
139
 
143
140
  if attributes
144
- if static_id?
141
+ if static_id?(options)
145
142
  output += "##{attributes['id']}"
146
143
  remove_attribute('id')
147
144
  end
148
- if static_classname?
145
+ if static_classname?(options)
149
146
  attributes['class'].split(' ').each { |c| output += ".#{c}" }
150
147
  remove_attribute('class')
151
148
  end
152
- output += haml_attributes if attributes.length > 0
149
+ output += haml_attributes(options) if attributes.length > 0
153
150
  end
154
151
 
155
152
  (self.children || []).inject(output + "\n") do |output, child|
156
- output + child.to_haml(tabs + 1)
153
+ output + child.to_haml(tabs + 1, options)
157
154
  end
158
155
  end
159
156
 
@@ -174,27 +171,27 @@ module Haml
174
171
  end
175
172
  end
176
173
 
177
- def static_attribute?(name)
178
- attributes[name] and !dynamic_attribute?(name)
174
+ def static_attribute?(name, options)
175
+ attributes[name] and !dynamic_attribute?(name, options)
179
176
  end
180
177
 
181
- def dynamic_attribute?(name)
182
- HTML.options[:rhtml] and dynamic_attributes.key?(name)
178
+ def dynamic_attribute?(name, options)
179
+ options[:rhtml] and dynamic_attributes.key?(name)
183
180
  end
184
181
 
185
- def static_id?
186
- static_attribute? 'id'
182
+ def static_id?(options)
183
+ static_attribute?('id', options)
187
184
  end
188
185
 
189
- def static_classname?
190
- static_attribute? 'class'
186
+ def static_classname?(options)
187
+ static_attribute?('class', options)
191
188
  end
192
189
 
193
190
  # Returns a string representation of an attributes hash
194
191
  # that's prettier than that produced by Hash#inspect
195
- def haml_attributes
192
+ def haml_attributes(options)
196
193
  attrs = attributes.map do |name, value|
197
- value = dynamic_attribute?(name) ? dynamic_attributes[name] : value.inspect
194
+ value = dynamic_attribute?(name, options) ? dynamic_attributes[name] : value.inspect
198
195
  name = name.index(/\W/) ? name.inspect : ":#{name}"
199
196
  "#{name} => #{value}"
200
197
  end
data/lib/haml/template.rb CHANGED
@@ -26,7 +26,7 @@ if defined?(RAILS_ROOT)
26
26
  # because the new init file is sufficiently flexible
27
27
  # to not need updating.
28
28
  rails_init_file = File.join(RAILS_ROOT, 'vendor', 'plugins', 'haml', 'init.rb')
29
- haml_init_file = Haml.scope('init.rb')
29
+ haml_init_file = Haml::Util.scope('init.rb')
30
30
  begin
31
31
  if File.exists?(rails_init_file)
32
32
  require 'fileutils'
data/lib/haml/util.rb CHANGED
@@ -8,6 +8,11 @@ module Haml
8
8
 
9
9
  RUBY_VERSION = ::RUBY_VERSION.split(".").map {|s| s.to_i}
10
10
 
11
+ # Returns the path of file relative to the Haml root.
12
+ def scope(file)
13
+ File.expand_path File.join(File.dirname(__FILE__), '..', '..', file)
14
+ end
15
+
11
16
  def to_hash(arr)
12
17
  arr.compact.inject({}) {|h, (k, v)| h[k] = v; h}
13
18
  end
data/lib/haml/version.rb CHANGED
@@ -1,5 +1,9 @@
1
+ require 'haml/util'
2
+
1
3
  module Haml
2
4
  module Version
5
+ include Haml::Util
6
+
3
7
  # Returns a hash representing the version of Haml.
4
8
  # The :major, :minor, and :teeny keys have their respective numbers.
5
9
  # The :string key contains a human-readable string representation of the version.
@@ -38,10 +42,5 @@ module Haml
38
42
 
39
43
  @@version
40
44
  end
41
-
42
- # Returns the path of file relative to the Haml root.
43
- def scope(file) # :nodoc:
44
- File.expand_path File.join(File.dirname(__FILE__), '..', '..', file)
45
- end
46
45
  end
47
46
  end
@@ -182,6 +182,11 @@ HAML
182
182
  render("= find_and_preserve do\n %pre\n Foo\n Bar\n Foo\n Bar"))
183
183
  end
184
184
 
185
+ def test_find_and_preserve_with_block_and_tags
186
+ assert_equal("<pre>Foo\nBar</pre>\nFoo\nBar\n",
187
+ render("= find_and_preserve([]) do\n %pre\n Foo\n Bar\n Foo\n Bar"))
188
+ end
189
+
185
190
  def test_preserve_with_block
186
191
  assert_equal("<pre>Foo&#x000A;Bar</pre>&#x000A;Foo&#x000A;Bar\n",
187
192
  render("= preserve do\n %pre\n Foo\n Bar\n Foo\n Bar"))
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'pathname'
3
4
 
4
5
  class UtilTest < Test::Unit::TestCase
5
6
  include Haml::Util
6
7
 
8
+ def test_scope
9
+ assert(File.exist?(scope("Rakefile")))
10
+ end
11
+
7
12
  def test_to_hash
8
13
  assert_equal({
9
14
  :foo => 1,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml-edge
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
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: 2009-04-30 00:00:00 -04:00
13
+ date: 2009-05-02 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16