Files
760-grid-system/generator/generate-grid.rb
2009-07-16 12:38:27 -07:00

117 lines
2.8 KiB
Ruby
Executable File

#! /usr/bin/env ruby
require "yaml"
grids = YAML.load_file("grids.yml")
classes = {}
grids.each do |grid_name, value|
width = value["width"].to_i
cells = value["cells"].to_i
margin = value["margin"].to_i
cell_size = width / cells;
# containers
key = "\tmargin-left: auto;\n"
key << "\tmargin-right: auto;\n"
key << "\twidth: " + width.to_s + "px;\n"
val = ".container_" + cells.to_s
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
# global
key = "\tdisplay: inline;\n"
key << "\tfloat: left;\n"
key << "\tmargin-left: " + margin.to_s + "px;\n"
key << "\tmargin-right: " + margin.to_s + "px;\n"
for i in 1..cells
val = ".container_" + cells.to_s + " .grid_" + i.to_s
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
end
# alpha / omega
key = "\tmargin-left: 0;\n"
val = ".alpha"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
key = "\tmargin-right: 0;\n"
val = ".omega"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
# grid_*
for i in 1..cells
key = "\twidth: " + ((cell_size * i) - (margin * 2)).to_s + "px;\n"
val = ".container_" + cells.to_s + " .grid_" + i.to_s
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
end
# prefix_*
for i in 1..(cells-1)
key = "\tpadding-left: " + ((cell_size) * i).to_s + "px;\n"
val = ".container_" + cells.to_s + " .prefix_" + i.to_s
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
end
# suffix_*
for i in 1..(cells-1)
key = "\tpadding-right: " + ((cell_size) * i).to_s + "px;\n"
val = ".container_" + cells.to_s + " .suffix_" + i.to_s
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
end
end
# clear
key = "\tclear: both;\n"
key << "\tdisplay: block;\n"
key << "\toverflow: hidden;\n"
key << "\tvisibility: hidden;\n"
key << "\twidth: 0;\n"
key << "\theight: 0;\n"
val = ".clear"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
# clearfix
key = "\tclear: both;\n"
key << "\tcontent: '.';\n"
key << "\tdisplay: block;\n"
key << "\tvisibility: hidden;\n"
key << "\theight: 0;\n"
val = ".clearfix:after"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
key = "\tdisplay: inline-block;\n"
val = ".clearfix"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
key = "\theight: 1%;\n"
val = "* html .clearfix"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
key = "\tdisplay: block;\n"
val = ".clearfix"
classes[key] = [] if !classes.has_key?(key)
classes[key].push(val)
# generate output
output = ""
classes.sort
classes.sort{|a,b| a[0]<=>b[0]}.each do |key, value|
output << value.uniq.join(",\n") + " {\n"
output << key
output << "}\n"
output << "\n"
end
puts output