Module: Haml::AttributeBuilder
- Defined in:
- lib/haml/attribute_builder.rb,
ext/haml/haml.c
Class Method Summary collapse
-
.build(escape_attrs, quote, format, boolean_attributes, object_ref, *hashes)
-
.build_aria(escape_attrs, quote, *hashes)
-
.build_class(escape_attrs, *values)
-
.build_data(escape_attrs, quote, *hashes)
-
.build_id(escape_attrs, *values)
Class Method Details
.build(escape_attrs, quote, format, boolean_attributes, object_ref, *hashes)
493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 |
# File 'ext/haml/haml.c', line 493
def build(escape_attrs, quote, format, boolean_attributes, object_ref, *hashes)
hashes << Haml::ObjectRef.parse(object_ref) if object_ref
buf = []
hash = merge_all_attrs(hashes)
keys = hash.keys.sort!
keys.each do |key|
case key
when 'id'.freeze
buf << " id=#{quote}#{build_id(escape_attrs, *hash[key])}#{quote}"
when 'class'.freeze
buf << " class=#{quote}#{build_class(escape_attrs, *hash[key])}#{quote}"
when 'data'.freeze
buf << build_data(escape_attrs, quote, *hash[key])
when *boolean_attributes, /\Adata-/
build_boolean!(escape_attrs, quote, format, buf, key, hash[key])
else
buf << " #{key}=#{quote}#{escape_html(escape_attrs, hash[key].to_s)}#{quote}"
end
end
buf.join
end
|
.build_aria(escape_attrs, quote, *hashes)
471 472 473 |
# File 'ext/haml/haml.c', line 471
def build_aria(escape_attrs, quote, *hashes)
build_data_attribute(:aria, escape_attrs, quote, *hashes)
end
|
.build_class(escape_attrs, *values)
460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 |
# File 'ext/haml/haml.c', line 460
def build_class(escape_attrs, *values)
if values.size == 1
value = values.first
case
when value.is_a?(String)
# noop
when value.is_a?(Array)
value = value.flatten.select { |v| v }.map(&:to_s).uniq.join(' ')
when value
value = value.to_s
else
return ''
end
return escape_html(escape_attrs, value)
end
classes = []
values.each do |value|
case
when value.is_a?(String)
classes += value.split(' ')
when value.is_a?(Array)
classes += value.select { |v| v }
when value
classes << value.to_s
end
end
escape_html(escape_attrs, classes.map(&:to_s).uniq.join(' '))
end
|
.build_data(escape_attrs, quote, *hashes)
482 483 484 |
# File 'ext/haml/haml.c', line 482
def build_data(escape_attrs, quote, *hashes)
build_data_attribute(:data, escape_attrs, quote, *hashes)
end
|
.build_id(escape_attrs, *values)
449 450 451 |
# File 'ext/haml/haml.c', line 449
def build_id(escape_attrs, *values)
escape_html(escape_attrs, values.flatten.select { |v| v }.join('_'))
end
|