71 lines
2.5 KiB
Ruby
71 lines
2.5 KiB
Ruby
|
require 'erb'
|
||
|
module Blueprint
|
||
|
# Generates a custom grid file, using ERB to evaluate custom settings
|
||
|
class CustomLayout
|
||
|
# path to ERB file used for CSS template
|
||
|
CSS_ERB_FILE = File.join(Blueprint::LIB_PATH, 'grid.css.erb')
|
||
|
|
||
|
attr_writer :column_count, :column_width, :gutter_width, :input_padding, :input_border
|
||
|
|
||
|
# Column count of generated CSS. Returns itself or Blueprint's default
|
||
|
def column_count
|
||
|
(@column_count || Blueprint::COLUMN_COUNT).to_i
|
||
|
end
|
||
|
|
||
|
# Column width (in pixels) of generated CSS. Returns itself or Blueprint's default
|
||
|
def column_width
|
||
|
(@column_width || Blueprint::COLUMN_WIDTH).to_i
|
||
|
end
|
||
|
|
||
|
# Gutter width (in pixels) of generated CSS. Returns itself or Blueprint's default
|
||
|
def gutter_width
|
||
|
(@gutter_width || Blueprint::GUTTER_WIDTH).to_i
|
||
|
end
|
||
|
|
||
|
def input_padding
|
||
|
(@input_padding || Blueprint::INPUT_PADDING).to_i
|
||
|
end
|
||
|
|
||
|
def input_border
|
||
|
(@input_border || Blueprint::INPUT_BORDER).to_i
|
||
|
end
|
||
|
|
||
|
# Returns page width (in pixels)
|
||
|
def page_width
|
||
|
column_count * (column_width + gutter_width) - gutter_width
|
||
|
end
|
||
|
|
||
|
# ==== Options
|
||
|
# * <tt>options</tt>
|
||
|
# * <tt>:column_count</tt> -- Sets the column count of generated CSS
|
||
|
# * <tt>:column_width</tt> -- Sets the column width (in pixels) of generated CSS
|
||
|
# * <tt>:gutter_width</tt> -- Sets the gutter width (in pixels) of generated CSS
|
||
|
# * <tt>:input_padding</tt> -- Sets the input padding width (in pixels) of generated CSS
|
||
|
# * <tt>:input_border</tt> -- Sets the border width (in pixels) of generated CSS
|
||
|
def initialize(options = {})
|
||
|
@column_count = options[:column_count]
|
||
|
@column_width = options[:column_width]
|
||
|
@gutter_width = options[:gutter_width]
|
||
|
@input_padding = options[:input_padding]
|
||
|
@input_border = options[:input_border]
|
||
|
end
|
||
|
|
||
|
# Boolean value if current settings are Blueprint's defaults
|
||
|
def default?
|
||
|
self.column_width == Blueprint::COLUMN_WIDTH &&
|
||
|
self.column_count == Blueprint::COLUMN_COUNT &&
|
||
|
self.gutter_width == Blueprint::GUTTER_WIDTH &&
|
||
|
self.input_padding == Blueprint::INPUT_PADDING &&
|
||
|
self.input_border == Blueprint::INPUT_BORDER
|
||
|
end
|
||
|
|
||
|
# Loads grid.css.erb file, binds it to current instance, and returns output
|
||
|
def generate_grid_css
|
||
|
# loads up erb template to evaluate custom widths
|
||
|
css = ERB::new(File.path_to_string(CustomLayout::CSS_ERB_FILE))
|
||
|
|
||
|
# bind it to this instance
|
||
|
css.result(binding)
|
||
|
end
|
||
|
end
|
||
|
end
|