Class: Aureus::Row
- Inherits:
-
Renderable
- Object
- Renderable
- Aureus::Row
- Defined in:
- lib/aureus/row.rb
Instance Method Summary collapse
- #column(width, &block) ⇒ Object
-
#initialize(&block) ⇒ Row
constructor
A new instance of Row.
- #render ⇒ Object
- #space(width) ⇒ Object
Methods inherited from Renderable
#compact, #compact_render, #content_tag, #init
Constructor Details
#initialize(&block) ⇒ Row
Returns a new instance of Row.
5 6 7 8 9 |
# File 'lib/aureus/row.rb', line 5 def initialize &block init_haml_helpers @columns = Array.new @content = capture_haml self, &block end |
Instance Method Details
#column(width, &block) ⇒ Object
11 12 13 |
# File 'lib/aureus/row.rb', line 11 def column width, &block @columns << RowColumn.new(width,capture_haml(&block)) end |
#render ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/aureus/row.rb', line 19 def render if @columns.empty? content_tag "div", @content, :class => "row" elsif @columns.length == 1 content_tag "div", @columns.first.content, :class => "row" else total_width = @columns.inject 0 do |sum, n| sum += n.width end out = String.new.html_safe @columns.each_with_index do |c,i| left = 0.5 right = 0.5 width = (100.0 / total_width * c.width).round if i == 0 left = 0 width -= 0.5 elsif i == @columns.length-1 right = 0 width -= 0.5 else width -= 1 end out += content_tag "div", c.content, :class => :column, :style => "width: #{width}%; margin-left: #{left}%; margin-right: #{right}%" end content_tag "div", out, :class => "row" end end |