mirror of
https://github.com/jimeh/760-grid-system.git
synced 2026-02-19 03:06:39 +00:00
117 lines
2.8 KiB
Ruby
Executable File
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
|