Sha256: 6ab487b7e2b19137f21851c6f538171b4a240a3d37dd42ca8cfe4fa8037a09dd

Contents?: true

Size: 1.23 KB

Versions: 8

Compression:

Stored size: 1.23 KB

Contents

module Aureus

	class Row < Renderable

		def initialize &block
			init_haml_helpers
			@columns = Array.new
			@content = capture_haml self, &block
		end

		def column width, &block
			@columns << RowColumn.new(width,capture_haml(&block))
		end

		def space width
			@columns << RowColumn.new(width,"")
		end

		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

	end

	class RowColumn < Renderable

		attr_reader :width, :content

		def initialize	width, content
			@width = width
			@content = content
		end

		def render

		end

	end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
aureus-1.3.1 lib/aureus/row.rb
aureus-1.3.0 lib/aureus/row.rb
aureus-1.2.2 lib/aureus/row.rb
aureus-1.2.1 lib/aureus/row.rb
aureus-1.2.0 lib/aureus/row.rb
aureus-1.1.2 lib/aureus/row.rb
aureus-1.1.1 lib/aureus/row.rb
aureus-1.1.0 lib/aureus/row.rb