haml-edge 2.3.76 → 2.3.77
Sign up to get free protection for your applications and to get access to all the features.
- data/EDGE_GEM_VERSION +1 -1
- data/VERSION +1 -1
- data/lib/haml/html.rb +15 -11
- metadata +1 -1
data/EDGE_GEM_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.77
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.77
|
data/lib/haml/html.rb
CHANGED
@@ -62,6 +62,10 @@ module Haml
|
|
62
62
|
text.gsub('#{', '\#{') #'
|
63
63
|
end
|
64
64
|
|
65
|
+
def attr_hash
|
66
|
+
attributes.to_hash
|
67
|
+
end
|
68
|
+
|
65
69
|
def parse_text(text, tabs)
|
66
70
|
parse_text_with_interpolation(uninterp(text), tabs)
|
67
71
|
end
|
@@ -224,8 +228,8 @@ module Haml
|
|
224
228
|
def to_haml(tabs, options)
|
225
229
|
return "" if converted_to_haml
|
226
230
|
if name == "script" &&
|
227
|
-
(
|
228
|
-
(
|
231
|
+
(attr_hash['type'].nil? || attr_hash['type'] == "text/javascript") &&
|
232
|
+
(attr_hash.keys - ['type']).empty?
|
229
233
|
return script_to_haml(tabs, options)
|
230
234
|
end
|
231
235
|
|
@@ -269,22 +273,22 @@ module Haml
|
|
269
273
|
output << "%#{name}" unless name == 'div' &&
|
270
274
|
(static_id?(options) ||
|
271
275
|
static_classname?(options) &&
|
272
|
-
|
276
|
+
attr_hash['class'].split(' ').any?(&method(:haml_css_attr?)))
|
273
277
|
|
274
|
-
if
|
278
|
+
if attr_hash
|
275
279
|
if static_id?(options)
|
276
|
-
output << "##{
|
280
|
+
output << "##{attr_hash['id']}"
|
277
281
|
remove_attribute('id')
|
278
282
|
end
|
279
283
|
if static_classname?(options)
|
280
|
-
leftover =
|
284
|
+
leftover = attr_hash['class'].split(' ').reject do |c|
|
281
285
|
next unless haml_css_attr?(c)
|
282
286
|
output << ".#{c}"
|
283
287
|
end
|
284
288
|
remove_attribute('class')
|
285
289
|
set_attribute('class', leftover.join(' ')) unless leftover.empty?
|
286
290
|
end
|
287
|
-
output << haml_attributes(options) if
|
291
|
+
output << haml_attributes(options) if attr_hash.length > 0
|
288
292
|
end
|
289
293
|
|
290
294
|
output << "/" if empty? && !etag
|
@@ -319,7 +323,7 @@ module Haml
|
|
319
323
|
|
320
324
|
def dynamic_attributes
|
321
325
|
@dynamic_attributes ||= begin
|
322
|
-
Haml::Util.map_hash(
|
326
|
+
Haml::Util.map_hash(attr_hash) do |name, value|
|
323
327
|
next if value.empty?
|
324
328
|
full_match = nil
|
325
329
|
ruby_value = value.gsub(%r{<haml:loud>\s*(.+?)\s*</haml:loud>}) do
|
@@ -351,7 +355,7 @@ module Haml
|
|
351
355
|
end
|
352
356
|
|
353
357
|
def static_attribute?(name, options)
|
354
|
-
|
358
|
+
attr_hash[name] && !dynamic_attribute?(name, options)
|
355
359
|
end
|
356
360
|
|
357
361
|
def dynamic_attribute?(name, options)
|
@@ -359,7 +363,7 @@ module Haml
|
|
359
363
|
end
|
360
364
|
|
361
365
|
def static_id?(options)
|
362
|
-
static_attribute?('id', options) && haml_css_attr?(
|
366
|
+
static_attribute?('id', options) && haml_css_attr?(attr_hash['id'])
|
363
367
|
end
|
364
368
|
|
365
369
|
def static_classname?(options)
|
@@ -373,7 +377,7 @@ module Haml
|
|
373
377
|
# Returns a string representation of an attributes hash
|
374
378
|
# that's prettier than that produced by Hash#inspect
|
375
379
|
def haml_attributes(options)
|
376
|
-
attrs =
|
380
|
+
attrs = attr_hash.sort.map do |name, value|
|
377
381
|
value = dynamic_attribute?(name, options) ? dynamic_attributes[name] : value.inspect
|
378
382
|
name = name.index(/\W/) ? name.inspect : ":#{name}"
|
379
383
|
"#{name} => #{value}"
|