Class: Forme::Serializer::Bootstrap3
- Inherits:
-
Forme::Serializer
- Object
- Forme::Serializer
- Forme::Serializer::Bootstrap3
- Defined in:
- lib/forme/bs3.rb
Overview
Serializer class that converts tags to BS3 bootstrap tags.
Registered at :bs3.
Constant Summary
Constants inherited from Forme::Serializer
Instance Method Summary collapse
Methods inherited from Forme::Serializer
#serialize_close, #serialize_open
Instance Method Details
#call(tag) ⇒ Object
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 |
# File 'lib/forme/bs3.rb', line 347 def call(tag) # All textual <input>, <textarea>, and <select> elements with .form-control case tag when Tag case tag.type when :input # default to <input type="text"...> if not set tag.attr[:type] = :text if tag.attr[:type].nil? case tag.attr[:type].to_sym when :checkbox, :radio, :hidden # .form-control class causes rendering problems, so remove if found tag.attr[:class].gsub!(/\s*form-control\s*/,'') if tag.attr[:class] tag.attr[:class] = nil if tag.attr[:class] && tag.attr[:class].empty? when :file tag.attr[:class] = nil unless tag.attr[:class] && tag.attr[:class].strip != '' when :submit, :reset klass = ['btn', 'btn-default'] if tag.attr[:class] && tag.attr[:class].strip != '' tag.attr[:class].split(' ').each { |c| klass.push c } end tag.attr[:class] = klass.uniq ['btn-primary','btn-success', 'btn-info', 'btn-warning','btn-danger', 'btn-outline','btn-link' ].each do |k| tag.attr[:class].delete('btn-default') if tag.attr[:class].include?(k) end tag.attr[:class].join(' ') else klass = tag.attr[:class] ? "form-control #{tag.attr[:class].to_s}" : '' tag.attr[:class] = "form-control #{klass.gsub(/\s*form-control\s*/,'')}".strip end return "<#{tag.type}#{attr_html(tag.attr)}/>" when :textarea, :select klass = tag.attr[:class] ? "form-control #{tag.attr[:class].to_s}" : '' tag.attr[:class] = "form-control #{klass.gsub(/\s*form-control\s*/,'')}".strip return "#{serialize_open(tag)}#{call(tag.children)}#{serialize_close(tag)}" else super end else super end end |