<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>doc/classes/Blueprint.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CSSParser.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CSSParser.src/M000011.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CSSParser.src/M000012.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CSSParser.src/M000013.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Compressor.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Compressor.src/M000027.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Compressor.src/M000028.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Compressor.src/M000029.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000020.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000021.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000022.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000023.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000024.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000025.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/CustomLayout.src/M000026.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/GridBuilder.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/GridBuilder.src/M000014.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/GridBuilder.src/M000015.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Namespace.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Namespace.src/M000016.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Namespace.src/M000017.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Namespace.src/M000018.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Namespace.src/M000019.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/SemanticClassNames.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/SemanticClassNames.src/M000009.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/SemanticClassNames.src/M000010.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Validator.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Validator.src/M000007.html</filename>
    </added>
    <added>
      <filename>doc/classes/Blueprint/Validator.src/M000008.html</filename>
    </added>
    <added>
      <filename>doc/classes/File.html</filename>
    </added>
    <added>
      <filename>doc/classes/File.src/M000001.html</filename>
    </added>
    <added>
      <filename>doc/classes/File.src/M000002.html</filename>
    </added>
    <added>
      <filename>doc/classes/String.html</filename>
    </added>
    <added>
      <filename>doc/classes/String.src/M000003.html</filename>
    </added>
    <added>
      <filename>doc/classes/String.src/M000004.html</filename>
    </added>
    <added>
      <filename>doc/classes/String.src/M000005.html</filename>
    </added>
    <added>
      <filename>doc/classes/String.src/M000006.html</filename>
    </added>
    <added>
      <filename>doc/created.rid</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/blueprint_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/compressor_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/core_ext_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/css_parser_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/custom_layout_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/grid_builder_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/namespace_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/semantic_class_names_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/blueprint/validator_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/compress_rb.html</filename>
    </added>
    <added>
      <filename>doc/files/lib/validate_rb.html</filename>
    </added>
    <added>
      <filename>doc/fr_class_index.html</filename>
    </added>
    <added>
      <filename>doc/fr_file_index.html</filename>
    </added>
    <added>
      <filename>doc/fr_method_index.html</filename>
    </added>
    <added>
      <filename>doc/index.html</filename>
    </added>
    <added>
      <filename>doc/rdoc-style.css</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,24 +1,33 @@
 require 'fileutils'
-
-class Blueprint
+module Blueprint
+  # path to the root Blueprint directory
   ROOT_PATH =             File.join(File.expand_path(File.dirname(__FILE__)), &quot;../../&quot;)
+  # path to where the Blueprint CSS files are stored
   BLUEPRINT_ROOT_PATH =   File.join(Blueprint::ROOT_PATH, 'blueprint')
+  # path to where the Blueprint CSS raw CSS files are stored
   SOURCE_PATH =           File.join(Blueprint::BLUEPRINT_ROOT_PATH, 'src')
+  # path to where the Blueprint CSS generated test files are stored
   TEST_PATH =             File.join(Blueprint::ROOT_PATH, 'tests')
+  # path to the root of the Blueprint scripts
   LIB_PATH =              File.join(Blueprint::ROOT_PATH, 'lib', 'blueprint')
+  # path to where Blueprint plugins are stored
   PLUGINS_PATH =          File.join(Blueprint::BLUEPRINT_ROOT_PATH, 'plugins')
+  # settings YAML file where custom user settings are saved
   SETTINGS_FILE =         File.join(Blueprint::ROOT_PATH, 'lib', 'settings.yml')
+  # path to validator jar file to validate generated CSS files
   VALIDATOR_FILE =        File.join(Blueprint::LIB_PATH, 'validate', 'css-validator.jar')
+  # hash of compressed and source CSS files
   CSS_FILES = {
     'screen.css'   =&gt; ['reset.css', 'typography.css', 'grid.css', 'forms.css'],
     'print.css'    =&gt; ['print.css'],
     'ie.css'       =&gt; ['ie.css']
   }
-  
-  # Default column layout
-  # 24 columns * (30px + 10px) - 10px = 950px width
+
+  # default number of columns for Blueprint layout
   COLUMN_COUNT =          24
+  # default column width (in pixels) for Blueprint layout
   COLUMN_WIDTH =          30
+  # default gutter width (in pixels) for Blueprint layout
   GUTTER_WIDTH =          10
 end
 </diff>
      <filename>lib/blueprint/blueprint.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,238 +1,240 @@
 require 'yaml'
 require 'optparse'
-
-class Compressor &lt; Blueprint
-  # class constants
-  TEST_FILES = [
-    'index.html', 
-    'parts/elements.html', 
-    'parts/forms.html', 
-    'parts/grid.html', 
-    'parts/sample.html'
-  ] unless const_defined?(&quot;TEST_FILES&quot;)
-  
-  # properties
-  attr_accessor :namespace, :custom_css, :custom_layout, :semantic_classes, :project_name, :plugins
-  attr_reader   :custom_path, :loaded_from_settings, :destination_path, :script_name
-  
-  def destination_path=(path)
-    @destination_path = path
-    @custom_path = @destination_path != Blueprint::BLUEPRINT_ROOT_PATH
-  end
+module Blueprint
+  class Compressor
+    TEST_FILES = ['index.html', 
+                  'parts/elements.html', 
+                  'parts/forms.html', 
+                  'parts/grid.html', 
+                  'parts/sample.html']
+    
+    attr_accessor :namespace, :custom_css, :custom_layout, :semantic_classes, :project_name, :plugins
+    attr_reader   :custom_path, :loaded_from_settings, :destination_path, :script_name
+    
+    # overridden setter method for destination_path
+    # also sets custom_path flag on Blueprint::Compressor instance
+    def destination_path=(path)
+      @destination_path = path
+      @custom_path = @destination_path != Blueprint::BLUEPRINT_ROOT_PATH
+    end
   
-  # constructor
-  def initialize(options = {})
-    # set up defaults
-    @script_name = File.basename($0) 
-    @loaded_from_settings = false
-    self.namespace = &quot;&quot;
-    self.destination_path = Blueprint::BLUEPRINT_ROOT_PATH
-    self.custom_layout = CustomLayout.new
-    self.project_name = nil
-    self.custom_css = {}
-    self.semantic_classes = {}
-    self.plugins = []
+    # constructor
+    def initialize
+      # set up defaults
+      @script_name = File.basename($0) 
+      @loaded_from_settings = false
+      self.namespace = &quot;&quot;
+      self.destination_path = Blueprint::BLUEPRINT_ROOT_PATH
+      self.custom_layout = CustomLayout.new
+      self.project_name = nil
+      self.custom_css = {}
+      self.semantic_classes = {}
+      self.plugins = []
     
-    self.options.parse!(ARGV)
-    initialize_project_from_yaml(self.project_name)
-  end
+      self.options.parse!(ARGV)
+      initialize_project_from_yaml(self.project_name)
+    end
   
-  # instance methods
-  def generate!
-    output_header       # information to the user (in the console) describing custom settings
-    generate_css_files  # loops through Blueprint::CSS_FILES to generate output CSS
-    generate_tests      # updates HTML with custom namespaces in order to test the generated library.  TODO: have tests kick out to custom location
-    output_footer       # informs the user that the CSS generation process is complete
-  end
-
-  def options
-    OptionParser.new do |o|
-      o.set_summary_indent('  ')
-      o.banner =    &quot;Usage: #{@script_name} [options]&quot;
-      o.define_head &quot;Blueprint Compressor&quot;
-      o.separator &quot;&quot;
-      o.separator &quot;options&quot;
-      o.on( &quot;-oOUTPUT_PATH&quot;, &quot;--output_path=OUTPUT_PATH&quot;, String,
-            &quot;Define a different path to output generated CSS files to.&quot;) { |path| self.destination_path = path }
-      o.on( &quot;-nBP_NAMESPACE&quot;, &quot;--namespace=BP_NAMESPACE&quot;, String,
-            &quot;Define a namespace prepended to all Blueprint classes (e.g. .your-ns-span-24)&quot;) { |ns| self.namespace = ns }
-      o.on( &quot;-pPROJECT_NAME&quot;, &quot;--project=PROJECT_NAME&quot;, String,
-            &quot;If using the settings.yml file, PROJECT_NAME is the project name you want to export&quot;) {|project| @project_name = project }
-      o.on( &quot;--column_width=COLUMN_WIDTH&quot;, Integer,
-            &quot;Set a new column width (in pixels) for the output grid&quot;) {|cw| self.custom_layout.column_width = cw }
-      o.on( &quot;--gutter_width=GUTTER_WIDTH&quot;, Integer,
-            &quot;Set a new gutter width (in pixels) for the output grid&quot;) {|gw| self.custom_layout.gutter_width = gw }
-      o.on( &quot;--column_count=COLUMN_COUNT&quot;, Integer,
-            &quot;Set a new column count for the output grid&quot;) {|cc| self.custom_layout.column_count = cc }
-      #o.on(&quot;-v&quot;, &quot;--verbose&quot;, &quot;Turn on verbose output.&quot;) { |$verbose| }
-      o.on(&quot;-h&quot;, &quot;--help&quot;, &quot;Show this help message.&quot;) { puts o; exit }
+    # generates output CSS based on any args passed in
+    # overwrites any existing CSS, as well as grid.png and tests
+    def generate!
+      output_header       # information to the user (in the console) describing custom settings
+      generate_css_files  # loops through Blueprint::CSS_FILES to generate output CSS
+      generate_tests      # updates HTML with custom namespaces in order to test the generated library.  TODO: have tests kick out to custom location
+      output_footer       # informs the user that the CSS generation process is complete
+    end
+    
+    def options #:nodoc:#
+      OptionParser.new do |o|
+        o.set_summary_indent('  ')
+        o.banner =    &quot;Usage: #{@script_name} [options]&quot;
+        o.define_head &quot;Blueprint Compressor&quot;
+        o.separator &quot;&quot;
+        o.separator &quot;options&quot;
+        o.on( &quot;-oOUTPUT_PATH&quot;, &quot;--output_path=OUTPUT_PATH&quot;, String,
+              &quot;Define a different path to output generated CSS files to.&quot;) { |path| self.destination_path = path }
+        o.on( &quot;-nBP_NAMESPACE&quot;, &quot;--namespace=BP_NAMESPACE&quot;, String,
+              &quot;Define a namespace prepended to all Blueprint classes (e.g. .your-ns-span-24)&quot;) { |ns| self.namespace = ns }
+        o.on( &quot;-pPROJECT_NAME&quot;, &quot;--project=PROJECT_NAME&quot;, String,
+              &quot;If using the settings.yml file, PROJECT_NAME is the project name you want to export&quot;) {|project| @project_name = project }
+        o.on( &quot;--column_width=COLUMN_WIDTH&quot;, Integer,
+              &quot;Set a new column width (in pixels) for the output grid&quot;) {|cw| self.custom_layout.column_width = cw }
+        o.on( &quot;--gutter_width=GUTTER_WIDTH&quot;, Integer,
+              &quot;Set a new gutter width (in pixels) for the output grid&quot;) {|gw| self.custom_layout.gutter_width = gw }
+        o.on( &quot;--column_count=COLUMN_COUNT&quot;, Integer,
+              &quot;Set a new column count for the output grid&quot;) {|cc| self.custom_layout.column_count = cc }
+        #o.on(&quot;-v&quot;, &quot;--verbose&quot;, &quot;Turn on verbose output.&quot;) { |$verbose| }
+        o.on(&quot;-h&quot;, &quot;--help&quot;, &quot;Show this help message.&quot;) { puts o; exit }
+      end
     end
-  end
 
-  private 
+    private 
   
-  # attempts to load output settings from settings.yml
-  def initialize_project_from_yaml(project_name = nil)
-    # ensures project_name is set and settings.yml is present
-    return unless (project_name &amp;&amp; File.exist?(Blueprint::SETTINGS_FILE))
+    # attempts to load output settings from settings.yml
+    def initialize_project_from_yaml(project_name = nil)
+      # ensures project_name is set and settings.yml is present
+      return unless (project_name &amp;&amp; File.exist?(Blueprint::SETTINGS_FILE))
     
-    # loads yaml into hash
-    projects = YAML::load(File.path_to_string(Blueprint::SETTINGS_FILE))
+      # loads yaml into hash
+      projects = YAML::load(File.path_to_string(Blueprint::SETTINGS_FILE))
     
-    if (project = projects[project_name]) # checks to see if project info is present
-      self.namespace =        project['namespace']        || &quot;&quot;
-      self.destination_path = (self.destination_path == Blueprint::BLUEPRINT_ROOT_PATH ? project['path'] : self.destination_path) || Blueprint::BLUEPRINT_ROOT_PATH
-      self.custom_css =       project['custom_css']       || {}
-      self.semantic_classes = project['semantic_classes'] || {}
-      self.plugins =          project['plugins']          || []
+      if (project = projects[project_name]) # checks to see if project info is present
+        self.namespace =        project['namespace']        || &quot;&quot;
+        self.destination_path = (self.destination_path == Blueprint::BLUEPRINT_ROOT_PATH ? project['path'] : self.destination_path) || Blueprint::BLUEPRINT_ROOT_PATH
+        self.custom_css =       project['custom_css']       || {}
+        self.semantic_classes = project['semantic_classes'] || {}
+        self.plugins =          project['plugins']          || []
       
-      if (layout = project['custom_layout'])
-        self.custom_layout = CustomLayout.new(:column_count =&gt; layout['column_count'], :column_width =&gt; layout['column_width'], :gutter_width =&gt; layout['gutter_width'])
+        if (layout = project['custom_layout'])
+          self.custom_layout = CustomLayout.new(:column_count =&gt; layout['column_count'], :column_width =&gt; layout['column_width'], :gutter_width =&gt; layout['gutter_width'])
+        end
+        @loaded_from_settings = true
       end
-      @loaded_from_settings = true
     end
-  end
   
-  def generate_css_files
-    Blueprint::CSS_FILES.each do |output_file_name, css_source_file_names|
-      css_output_path = File.join(destination_path, output_file_name)
-      puts &quot;\n    Assembling to #{custom_path ? css_output_path : &quot;default blueprint path&quot;}&quot;
+    def generate_css_files
+      Blueprint::CSS_FILES.each do |output_file_name, css_source_file_names|
+        css_output_path = File.join(destination_path, output_file_name)
+        puts &quot;\n    Assembling to #{custom_path ? css_output_path : &quot;default blueprint path&quot;}&quot;
 
-      # CSS file generation
-      css_output = css_file_header # header included on all three Blueprint-generated files
-      css_output += &quot;\n\n&quot;
+        # CSS file generation
+        css_output = css_file_header # header included on all three Blueprint-generated files
+        css_output += &quot;\n\n&quot;
       
-      # Iterate through src/ .css files and compile to individual core compressed file
-      css_source_file_names.each do |css_source_file|
-        puts &quot;      + src/#{css_source_file}&quot;
-        css_output += &quot;/* #{css_source_file} */\n&quot; if css_source_file_names.any?
+        # Iterate through src/ .css files and compile to individual core compressed file
+        css_source_file_names.each do |css_source_file|
+          puts &quot;      + src/#{css_source_file}&quot;
+          css_output += &quot;/* #{css_source_file} */\n&quot; if css_source_file_names.any?
         
-        source_options = if self.custom_layout &amp;&amp; css_source_file == 'grid.css'
-          {:css_string =&gt; self.custom_layout.generate_grid_css}
-        else
-          {:file_path =&gt; File.join(Blueprint::SOURCE_PATH, css_source_file)}
-        end
+          source_options = if self.custom_layout &amp;&amp; css_source_file == 'grid.css'
+            self.custom_layout.generate_grid_css
+          else
+            File.path_to_string File.join(Blueprint::SOURCE_PATH, css_source_file)
+          end
         
-        css_output += CSSParser.new(source_options.merge(:namespace =&gt; namespace)).to_s
-        css_output += &quot;\n&quot;
-      end
+          css_output += Blueprint::CSSParser.new(source_options, :namespace =&gt; namespace).to_s
+          css_output += &quot;\n&quot;
+        end
       
-      # append CSS from custom files
-      css_output = append_custom_css(css_output, output_file_name)
+        # append CSS from custom files
+        css_output = append_custom_css(css_output, output_file_name)
       
-      #append CSS from plugins
-      css_output = append_plugin_css(css_output, output_file_name)
+        #append CSS from plugins
+        css_output = append_plugin_css(css_output, output_file_name)
       
-      #save CSS to correct path, stripping out any extra whitespace at the end of the file
-      File.string_to_file(css_output.rstrip, css_output_path)
-    end
+        #save CSS to correct path, stripping out any extra whitespace at the end of the file
+        File.string_to_file(css_output.rstrip, css_output_path)
+      end
 
-    # append semantic class names if set
-    append_semantic_classes
+      # append semantic class names if set
+      append_semantic_classes
     
-    #attempt to generate a grid.png file
-    if (grid_builder = GridBuilder.new(:column_width =&gt; self.custom_layout.column_width, :gutter_width =&gt; self.custom_layout.gutter_width, :output_path =&gt; File.join(self.destination_path, 'src')))
-      grid_builder.generate!
+      #attempt to generate a grid.png file
+      if (grid_builder = GridBuilder.new(:column_width =&gt; self.custom_layout.column_width, :gutter_width =&gt; self.custom_layout.gutter_width, :output_path =&gt; File.join(self.destination_path, 'src')))
+        grid_builder.generate!
+      end
     end
-  end
   
-  def append_custom_css(css, current_file_name)
-    # check to see if a custom (non-default) location was used for output files
-    # if custom path is used, handle custom CSS, if any
-    return css unless self.custom_path
+    def append_custom_css(css, current_file_name)
+      # check to see if a custom (non-default) location was used for output files
+      # if custom path is used, handle custom CSS, if any
+      return css unless self.custom_path
 
-    overwrite_path = File.join(destination_path, (self.custom_css[current_file_name] || &quot;my-#{current_file_name}&quot;))
-    overwrite_css = File.exists?(overwrite_path) ? File.path_to_string(overwrite_path) : &quot;&quot;
+      overwrite_path = File.join(destination_path, (self.custom_css[current_file_name] || &quot;my-#{current_file_name}&quot;))
+      overwrite_css = File.exists?(overwrite_path) ? File.path_to_string(overwrite_path) : &quot;&quot;
     
-    # if there's CSS present, add it to the CSS output
-    unless overwrite_css.blank?
-      puts &quot;      + custom styles\n&quot;
-      css += &quot;/* #{overwrite_path} */\n&quot;
-      css += CSSParser.new(:css_string =&gt; overwrite_css).to_s + &quot;\n&quot;
-    end
+      # if there's CSS present, add it to the CSS output
+      unless overwrite_css.blank?
+        puts &quot;      + custom styles\n&quot;
+        css += &quot;/* #{overwrite_path} */\n&quot;
+        css += CSSParser.new(overwrite_css).to_s + &quot;\n&quot;
+      end
     
-    css
-  end
+      css
+    end
 
-  def append_plugin_css(css, current_file_name)
-    return css unless self.plugins.any?
+    def append_plugin_css(css, current_file_name)
+      return css unless self.plugins.any?
     
-    plugin_css = &quot;&quot;
+      plugin_css = &quot;&quot;
     
-    self.plugins.each do |plugin|
-      plugin_file_specific  = File.join(Blueprint::PLUGINS_PATH, plugin, current_file_name)
-      plugin_file_generic   = File.join(Blueprint::PLUGINS_PATH, plugin, &quot;#{plugin}.css&quot;)
+      self.plugins.each do |plugin|
+        plugin_file_specific  = File.join(Blueprint::PLUGINS_PATH, plugin, current_file_name)
+        plugin_file_generic   = File.join(Blueprint::PLUGINS_PATH, plugin, &quot;#{plugin}.css&quot;)
       
-      file = if File.exists?(plugin_file_specific)
-        plugin_file_specific
-      elsif File.exists?(plugin_file_generic) &amp;&amp; current_file_name =~ /^screen|print/
-        plugin_file_generic
-      end
+        file = if File.exists?(plugin_file_specific)
+          plugin_file_specific
+        elsif File.exists?(plugin_file_generic) &amp;&amp; current_file_name =~ /^screen|print/
+          plugin_file_generic
+        end
       
-      if file
-        puts &quot;      + #{plugin} plugin\n&quot;
-        plugin_css += &quot;/* #{plugin} */\n&quot;
-        plugin_css += CSSParser.new(:file_path =&gt; file).to_s + &quot;\n&quot;
+        if file
+          puts &quot;      + #{plugin} plugin\n&quot;
+          plugin_css += &quot;/* #{plugin} */\n&quot;
+          plugin_css += CSSParser.new(File.path_to_string(file)).to_s + &quot;\n&quot;
+        end
       end
-    end
     
-    css += plugin_css
-  end
+      css += plugin_css
+    end
     
-  def append_semantic_classes
-    screen_output_path = File.join(self.destination_path, &quot;screen.css&quot;)
-    semantic_styles = SemanticClassNames.new(:namespace =&gt; self.namespace, :source_file =&gt; screen_output_path).css_from_assignments(self.semantic_classes)
-    return if semantic_styles.blank?
+    def append_semantic_classes
+      screen_output_path = File.join(self.destination_path, &quot;screen.css&quot;)
+      semantic_styles = SemanticClassNames.new(:namespace =&gt; self.namespace, :source_file =&gt; screen_output_path).css_from_assignments(self.semantic_classes)
+      return if semantic_styles.blank?
 
-    css = File.path_to_string(screen_output_path)
-    css += &quot;\n\n/* semantic class names */\n&quot;
-    css += semantic_styles
-    File.string_to_file(css.rstrip, screen_output_path)
-  end
+      css = File.path_to_string(screen_output_path)
+      css += &quot;\n\n/* semantic class names */\n&quot;
+      css += semantic_styles
+      File.string_to_file(css.rstrip, screen_output_path)
+    end
   
-  def generate_tests
-    puts &quot;\n    Updating namespace to \&quot;#{namespace}\&quot; in test files:&quot;
-    test_files = Compressor::TEST_FILES.map {|f| File.join(Blueprint::TEST_PATH, *f.split(/\//))}
+    def generate_tests
+      puts &quot;\n    Updating namespace to \&quot;#{namespace}\&quot; in test files:&quot;
+      test_files = Compressor::TEST_FILES.map {|f| File.join(Blueprint::TEST_PATH, *f.split(/\//))}
     
-    test_files.each do |file|
-      puts &quot;      + #{file}&quot;
-      Namespace.new(file, namespace)
+      test_files.each do |file|
+        puts &quot;      + #{file}&quot;
+        Namespace.new(file, namespace)
+      end
     end
-  end
 
-  def output_header
-    puts &quot;\n&quot;
-    puts &quot;  #{&quot;*&quot; * 100}&quot;
-    puts &quot;  **&quot;
-    puts &quot;  **   Blueprint CSS Compressor&quot;
-    puts &quot;  **   Builds compressed files from the source directory.&quot;
-    puts &quot;  **   Loaded from settings.yml&quot; if loaded_from_settings
-    puts &quot;  **   Namespace: '#{namespace}'&quot; unless namespace.blank?
-    puts &quot;  **   Output to: #{destination_path}&quot;
-    puts &quot;  **   Grid Settings:&quot;
-    puts &quot;  **     - Column Count: #{self.custom_layout.column_count}&quot;
-    puts &quot;  **     - Column Width: #{self.custom_layout.column_width}px&quot;
-    puts &quot;  **     - Gutter Width: #{self.custom_layout.gutter_width}px&quot;
-    puts &quot;  **     - Total Width : #{self.custom_layout.page_width}px&quot;
-    puts &quot;  **&quot;
-    puts &quot;  #{&quot;*&quot; * 100}&quot;
-  end
+    def output_header
+      puts &quot;\n&quot;
+      puts &quot;  #{&quot;*&quot; * 100}&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Blueprint CSS Compressor&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Builds compressed files from the source directory.&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Loaded from settings.yml&quot; if loaded_from_settings
+      puts &quot;  **   Namespace: '#{namespace}'&quot; unless namespace.blank?
+      puts &quot;  **   Output to: #{destination_path}&quot;
+      puts &quot;  **   Grid Settings:&quot;
+      puts &quot;  **     - Column Count: #{self.custom_layout.column_count}&quot;
+      puts &quot;  **     - Column Width: #{self.custom_layout.column_width}px&quot;
+      puts &quot;  **     - Gutter Width: #{self.custom_layout.gutter_width}px&quot;
+      puts &quot;  **     - Total Width : #{self.custom_layout.page_width}px&quot;
+      puts &quot;  **&quot;
+      puts &quot;  #{&quot;*&quot; * 100}&quot;
+    end
 
-  def output_footer
-    puts &quot;\n\n&quot;
-    puts &quot;  #{&quot;*&quot; * 100}&quot;
-    puts &quot;  **&quot;
-    puts &quot;  **   Done!&quot;
-    puts &quot;  **   Your compressed files and test files are now up-to-date.&quot;
-    puts &quot;  **&quot;
-    puts &quot;  #{&quot;*&quot; * 100}\n\n&quot;
-  end
+    def output_footer
+      puts &quot;\n\n&quot;
+      puts &quot;  #{&quot;*&quot; * 100}&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Done!&quot;
+      puts &quot;  **   Your compressed files and test files are now up-to-date.&quot;
+      puts &quot;  **&quot;
+      puts &quot;  #{&quot;*&quot; * 100}\n\n&quot;
+    end
   
-  def css_file_header
+    def css_file_header
 %(/* -----------------------------------------------------------------------
 
-   Blueprint CSS Framework 0.7.1
-   http://blueprintcss.googlecode.com
+
+ Blueprint CSS Framework 0.7.1
+ http://blueprintcss.googlecode.com
 
    * Copyright (c) 2007-2008. See LICENSE for more info.
    * See README for instructions on how to use Blueprint.
@@ -240,9 +242,10 @@ class Compressor &lt; Blueprint
    * This is a compressed file. See the sources in the 'src' directory.
 
 ----------------------------------------------------------------------- */)
-  end
+    end
   
-  def putsv(str)
-    puts str if $verbose
+    def putsv(str)
+      puts str if $verbose
+    end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/compressor.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 class String
-  # quick method to see if string has any content
+  # see if string has any content
   def blank?; self.length.zero?; end
   
   # strip space after :, remove newlines, replace multiple spaces with only one space, remove comments</diff>
      <filename>lib/blueprint/core_ext.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,59 +1,68 @@
-class CSSParser &lt; Blueprint
-  # attributes
-  attr_accessor :namespace
-  attr_reader   :css_output, :raw_data
+module Blueprint
+  # Strips out most whitespace and can return a hash or string of parsed data
+  class CSSParser
+    attr_accessor :namespace
+    attr_reader   :css_output, :raw_data
   
-  # constructor
-  def initialize(options = {})
-    @raw_data     = options[:file_path] ? File.path_to_string(options[:file_path]) : options[:css_string] || &quot;&quot;
-    @namespace    = options[:namespace] || &quot;&quot;
-    compress(@raw_data)
-  end
+    # ==== Options
+    # * &lt;tt&gt;css_string&lt;/tt&gt; String of CSS data
+    # * &lt;tt&gt;options&lt;/tt&gt;
+    #   * &lt;tt&gt;:namespace&lt;/tt&gt; -- Namespace to use when generating output
+    def initialize(css_string = &quot;&quot;, options = {})
+      @raw_data     = css_string
+      @namespace    = options[:namespace] || &quot;&quot;
+      compress(@raw_data)
+    end
   
-  # instance methods
-  def to_s
-    @css_output
-  end
+    # returns string of CSS which can be saved to a file or otherwise
+    def to_s
+      @css_output
+    end
   
-  def parse(data = nil)
-    data ||= @raw_data
+    # returns a hash of all CSS data passed
+    #
+    # ==== Options
+    # * &lt;tt&gt;data&lt;/tt&gt; -- CSS string; defaults to string passed into the constructor
+    def parse(data = nil)
+      data ||= @raw_data
     
-    # wrapper array holding hashes of css tags/rules
-    css_out = []
-    # clear initial spaces
-    data.strip_side_space!.strip_space!
+      # wrapper array holding hashes of css tags/rules
+      css_out = []
+      # clear initial spaces
+      data.strip_side_space!.strip_space!
     
-    # split on end of assignments
-    data.split('}').each_with_index do |assignments, index|
-      # split again to separate tags from rules
-      tags, styles = assignments.split('{').map{|a| a.strip_side_space!}
+      # split on end of assignments
+      data.split('}').each_with_index do |assignments, index|
+        # split again to separate tags from rules
+        tags, styles = assignments.split('{').map{|a| a.strip_side_space!}
       
-      # clean up tags and apply namespaces as needed
-      tags.strip_selector_space!
-      tags.gsub!(/\./, &quot;.#{namespace}&quot;) unless namespace.blank?
+        # clean up tags and apply namespaces as needed
+        tags.strip_selector_space!
+        tags.gsub!(/\./, &quot;.#{namespace}&quot;) unless namespace.blank?
       
-      # split on semicolon to iterate through each rule
-      rules = []
-      styles.split(';').each do |key_val_pair|
-        unless key_val_pair.nil?
-          # split by property/val and append to rules array with correct declaration
-          property, value = key_val_pair.split(':').map{|kv| kv.strip_side_space!}
-          break unless property &amp;&amp; value
-          rules &lt;&lt; &quot;#{property}:#{value};&quot;
+        # split on semicolon to iterate through each rule
+        rules = []
+        styles.split(';').each do |key_val_pair|
+          unless key_val_pair.nil?
+            # split by property/val and append to rules array with correct declaration
+            property, value = key_val_pair.split(':').map{|kv| kv.strip_side_space!}
+            break unless property &amp;&amp; value
+            rules &lt;&lt; &quot;#{property}:#{value};&quot;
+          end
         end
+        # now keeps track of index as hashes don't keep track of position (which will be fixed in Ruby 1.9)
+        css_out &lt;&lt; {:tags =&gt; tags, :rules =&gt; rules.to_s, :idx =&gt; index} unless tags.blank? || rules.to_s.blank?
       end
-      # now keeps track of index as hashes don't keep track of position (which will be fixed in Ruby 1.9)
-      css_out &lt;&lt; {:tags =&gt; tags, :rules =&gt; rules.to_s, :idx =&gt; index} unless tags.blank? || rules.to_s.blank?
+      css_out
     end
-    css_out
-  end
   
-  private
+    private
   
-  def compress(data)
-    @css_output = &quot;&quot;
-    parse(data).flatten.sort_by {|i| i[:idx]}.each do |line|
-      @css_output += &quot;#{line[:tags]} {#{line[:rules]}}\n&quot;
+    def compress(data)
+      @css_output = &quot;&quot;
+      parse(data).flatten.sort_by {|i| i[:idx]}.each do |line|
+        @css_output += &quot;#{line[:tags]} {#{line[:rules]}}\n&quot;
+      end
     end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/css_parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,47 +1,55 @@
 require 'erb'
-
-class CustomLayout &lt; Blueprint
-  # class constants
-  CSS_ERB_FILE = File.join(Blueprint::LIB_PATH, 'grid.css.erb') unless const_defined?(&quot;CSS_ERB_FILE&quot;)
-  
-  # properties
-  # widths/column count default to core BP settings
-  attr_writer :column_count, :column_width, :gutter_width
-  
-  def column_count
-    (@column_count || Blueprint::COLUMN_COUNT).to_i
-  end
-  
-  def column_width
-    (@column_width || Blueprint::COLUMN_WIDTH).to_i
-  end
-  
-  def gutter_width
-    (@gutter_width || Blueprint::GUTTER_WIDTH).to_i
-  end
-  
-  def page_width
-    column_count * (column_width + gutter_width) - gutter_width
-  end
+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')
   
-  # constructor
-  def initialize(options = {})
-    @column_count = options[:column_count]
-    @column_width = options[:column_width]
-    @gutter_width = options[:gutter_width]
-  end
-  
-  # instance methods
-  
-  def default?
-    self.column_width == Blueprint::COLUMN_WIDTH &amp;&amp; self.column_count == Blueprint::COLUMN_COUNT &amp;&amp; self.gutter_width == Blueprint::GUTTER_WIDTH
-  end
-  
-  def generate_grid_css
-    # loads up erb template to evaluate custom widths
-    css = ERB::new(File.path_to_string(CustomLayout::CSS_ERB_FILE))
+    attr_writer :column_count, :column_width, :gutter_width
+
+    # 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
+
+    # Returns page width (in pixels)
+    def page_width
+      column_count * (column_width + gutter_width) - gutter_width
+    end
+  
+    # ==== Options
+    # * &lt;tt&gt;options&lt;/tt&gt;
+    #   * &lt;tt&gt;:column_count&lt;/tt&gt; -- Sets the column count of generated CSS
+    #   * &lt;tt&gt;:column_width&lt;/tt&gt; -- Sets the column width (in pixels) of generated CSS
+    #   * &lt;tt&gt;:gutter_width&lt;/tt&gt; -- Sets the gutter width (in pixels) of generated CSS
+    def initialize(options = {})
+      @column_count = options[:column_count]
+      @column_width = options[:column_width]
+      @gutter_width = options[:gutter_width]
+    end
+  
+    # Boolean value if current settings are Blueprint's defaults
+    def default?
+      self.column_width == Blueprint::COLUMN_WIDTH &amp;&amp; self.column_count == Blueprint::COLUMN_COUNT &amp;&amp; self.gutter_width == Blueprint::GUTTER_WIDTH
+    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)
+      # bind it to this instance
+      css.result(binding)
+    end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/custom_layout.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,45 +5,50 @@ begin
 rescue Exception =&gt; e
 end
 
-class GridBuilder &lt; Blueprint
-  # included modules
-  begin
-    include Magick
-  rescue
-  end
+module Blueprint
+  # Uses ImageMagick and RMagick to generate grid.png file
+  class GridBuilder
+    begin
+      include Magick
+    rescue Exception =&gt; e
+    end
 
+    attr_reader :column_width, :gutter_width, :output_path, :able_to_generate
 
-  # properties
-  attr_reader :column_width, :gutter_width, :output_path, :able_to_generate
-  
-  # constructor
-  def initialize(options={})
-    @able_to_generate = Magick::Long_version rescue false
-    return unless @able_to_generate
-    @column_width = options[:column_width] || Blueprint::COLUMN_WIDTH
-    @gutter_width = options[:gutter_width] || Blueprint::GUTTER_WIDTH
-    @output_path  = options[:output_path]  || Blueprint::SOURCE_PATH
-  end
+    # ==== Options
+    # * &lt;tt&gt;options&lt;/tt&gt;
+    #   * &lt;tt&gt;:column_width&lt;/tt&gt; -- Width (in pixels) of current grid column
+    #   * &lt;tt&gt;:gutter_width&lt;/tt&gt; -- Width (in pixels) of current grid gutter
+    #   * &lt;tt&gt;:output_path&lt;/tt&gt; -- Output path of grid.png file
+    def initialize(options={})
+      @able_to_generate = Magick::Long_version rescue false
+      return unless @able_to_generate
+      @column_width = options[:column_width] || Blueprint::COLUMN_WIDTH
+      @gutter_width = options[:gutter_width] || Blueprint::GUTTER_WIDTH
+      @output_path  = options[:output_path]  || Blueprint::SOURCE_PATH
+    end
   
-  # instance methods
-  def generate!
-    return false unless self.able_to_generate
-    total_width = self.column_width + self.gutter_width
-    height = 20
-    RVG::dpi = 100
+    # generates (overwriting if necessary) grid.png image to be tiled in background
+    def generate!
+      return false unless self.able_to_generate
+      total_width = self.column_width + self.gutter_width
+      height = 20
+      RVG::dpi = 100
 
-    rvg = RVG.new((total_width.to_f/RVG::dpi).in, (height.to_f/RVG::dpi).in).viewbox(0, 0, total_width, height) do |canvas|
-      canvas.background_fill = 'white'
+      rvg = RVG.new((total_width.to_f/RVG::dpi).in, (height.to_f/RVG::dpi).in).viewbox(0, 0, total_width, height) do |canvas|
+        canvas.background_fill = 'white'
 
-      canvas.g do |column|
-        column.rect(self.column_width, height).styles(:fill =&gt; &quot;#e8effb&quot;)
-      end
+        canvas.g do |column|
+          column.rect(self.column_width, height).styles(:fill =&gt; &quot;#e8effb&quot;)
+        end
 
-      canvas.g do |baseline|
-        baseline.line(0, (height - 1), total_width, (height- 1)).styles(:fill =&gt; &quot;#e9e9e9&quot;)
+        canvas.g do |baseline|
+          baseline.line(0, (height - 1), total_width, (height- 1)).styles(:fill =&gt; &quot;#e9e9e9&quot;)
+        end
       end
+      
+      FileUtils.mkdir self.output_path unless File.exists? self.output_path
+      rvg.draw.write(File.join(self.output_path, &quot;grid.png&quot;))
     end
-    FileUtils.mkdir self.output_path unless File.exists? self.output_path
-    rvg.draw.write(File.join(self.output_path, &quot;grid.png&quot;))
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/grid_builder.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,42 +1,38 @@
-#
-# HTML classes namespace adder
-# This class is used to add namespaces to the test files,
-# so that the tests will work even if you set your own namespace.
-#
-
-class Namespace &lt; Blueprint
+module Blueprint
+  class Namespace
   
-  # Read html to string, remove namespace if any,
-  # set the new namespace, and update the test file.
-  def initialize(path, namespace)
-    html = File.path_to_string(path)
-    remove_current_namespace(html)
-    add_namespace(html, namespace)
-    File.string_to_file(html, path)
-  end
+    # Read html to string, remove namespace if any,
+    # set the new namespace, and update the test file.
+    def initialize(path, namespace)
+      html = File.path_to_string(path)
+      remove_current_namespace(html)
+      add_namespace(html, namespace)
+      File.string_to_file(html, path)
+    end
   
-  # adds namespace to BP classes in a html file
-  def add_namespace(html, namespace)    
-    html.gsub!(/(class=&quot;)([a-zA-Z0-9\-_ ]*)(&quot;)/) do |m|
-      classes = m.to_s.split('&quot;')[1].split(' ')
-      classes.map! { |c| c = namespace + c }
-      'class=&quot;' + classes.join(' ') + '&quot;'
+    # adds namespace to BP classes in a html file
+    def add_namespace(html, namespace)    
+      html.gsub!(/(class=&quot;)([a-zA-Z0-9\-_ ]*)(&quot;)/) do |m|
+        classes = m.to_s.split('&quot;')[1].split(' ')
+        classes.map! { |c| c = namespace + c }
+        'class=&quot;' + classes.join(' ') + '&quot;'
+      end
+      html
     end
-    html
-  end
   
-  # removes a namespace from a string of html
-  def remove_current_namespace(html)
-    current = current_namespace(html)
-    html.gsub!(current, '')
-    html
-  end
+    # removes a namespace from a string of html
+    def remove_current_namespace(html)
+      current = current_namespace(html)
+      html.gsub!(current, '')
+      html
+    end
   
-  # returns current namespace in test files
-  # based on container class
-  def current_namespace(html)
-    html =~ /class=&quot;([\S]+)container/
-    current_namespace = $1 if $1
-    current_namespace || ''
+    # returns current namespace in test files
+    # based on container class
+    def current_namespace(html)
+      html =~ /class=&quot;([\S]+)container/
+      current_namespace = $1 if $1
+      current_namespace || ''
+    end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/namespace.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,49 +1,57 @@
-class SemanticClassNames &lt; Blueprint
-  # attributes
-  attr_accessor :class_assignments
-  attr_reader   :namespace, :source_file
+module Blueprint
+  # parses a hash of key/value pairs, key being output CSS selectors, value being a list of CSS selectors to draw from
+  class SemanticClassNames
+    attr_accessor :class_assignments
+    attr_reader   :namespace, :source_file
   
-  # constructor
-  def initialize(options = {})
-    @namespace = options[:namespace] || &quot;&quot;
-    @source_file = options[:source_file] || File.join(Blueprint::BLUEPRINT_ROOT_PATH, 'screen.css')
-    self.class_assignments = options[:class_assignments] || {}
-  end
+    # ==== Options
+    # * &lt;tt&gt;options&lt;/tt&gt;
+    #   * &lt;tt&gt;:namespace&lt;/tt&gt; -- Namespace to be used when matching CSS selectors to draw from
+    #   * &lt;tt&gt;:source_file&lt;/tt&gt; -- Source file to use as reference of CSS selectors.  Defaults to Blueprint's generated screen.css
+    #   * &lt;tt&gt;:class_assignments&lt;/tt&gt; -- Hash of key/value pairs, key being output CSS selectors, value being a list of CSS selectors to draw from
+    def initialize(options = {})
+      @namespace = options[:namespace] || &quot;&quot;
+      @source_file = options[:source_file] || File.join(Blueprint::BLUEPRINT_ROOT_PATH, 'screen.css')
+      self.class_assignments = options[:class_assignments] || {}
+    end
   
-  # instance methods
-  def css_from_assignments(assignments = {})
-    assignments ||= self.class_assignments
+    # Returns a CSS string of semantic selectors and associated styles
+    # ==== Options
+    # * &lt;tt&gt;assignments&lt;/tt&gt; -- Hash of key/value pairs, key being output CSS selectors, value being a list of CSS selectors to draw from; defaults to what was passed in constructor or empty hash
+    def css_from_assignments(assignments = {})
+      assignments ||= self.class_assignments
     
-    # define a wrapper hash to hold all the new CSS assignments
-    output_css = {}
+      # define a wrapper hash to hold all the new CSS assignments
+      output_css = {}
     
-    #loads full stylesheet into an array of hashes
-    blueprint_assignments = CSSParser.new(:file_path =&gt; self.source_file).parse
+      #loads full stylesheet into an array of hashes
+      blueprint_assignments = CSSParser.new(File.path_to_string(self.source_file)).parse
     
-    # iterates through each class assignment ('#footer' =&gt; '.span-24 div.span-24', '#header' =&gt; '.span-24 div.span-24')
-    assignments.each do |semantic_class, blueprint_classes|
-      # gathers all BP classes we're going to be mimicing
-      blueprint_classes = blueprint_classes.split(/,|\s/).find_all {|c| !c.blank? }.flatten.map {|c| c.strip }
-      classes = []
-      # loop through each BP class, grabbing the full hash (containing tags, index, and CSS rules)
-      blueprint_classes.each do |bp_class|
-        match = bp_class.include?('.') ? bp_class.gsub(&quot;.&quot;, &quot;.#{self.namespace}&quot;) : &quot;.#{self.namespace}#{bp_class}&quot;
-        classes &lt;&lt; blueprint_assignments.find_all {|line| line[:tags] =~ Regexp.new(/^([\w\.\-]+, ?)*#{match}(, ?[\w\.\-]+)*$/) }.uniq
-      end
+      # iterates through each class assignment ('#footer' =&gt; '.span-24 div.span-24', '#header' =&gt; '.span-24 div.span-24')
+      assignments.each do |semantic_class, blueprint_classes|
+        # gathers all BP classes we're going to be mimicing
+        blueprint_classes = blueprint_classes.split(/,|\s/).find_all {|c| !c.blank? }.flatten.map {|c| c.strip }
+        classes = []
+        # loop through each BP class, grabbing the full hash (containing tags, index, and CSS rules)
+        blueprint_classes.each do |bp_class|
+          match = bp_class.include?('.') ? bp_class.gsub(&quot;.&quot;, &quot;.#{self.namespace}&quot;) : &quot;.#{self.namespace}#{bp_class}&quot;
+          classes &lt;&lt; blueprint_assignments.find_all {|line| line[:tags] =~ Regexp.new(/^([\w\.\-]+, ?)*#{match}(, ?[\w\.\-]+)*$/) }.uniq
+        end
       
-      # clean up the array
-      classes = classes.flatten.uniq
+        # clean up the array
+        classes = classes.flatten.uniq
       
-      # set the semantic class to the rules gathered in classes, sorted by index
-      # this way, the styles will be applied in the correct order from top of file to bottom
-      output_css[semantic_class] = &quot;#{classes.sort_by {|i| i[:idx]}.map {|i| i[:rules]}}&quot;
-    end
+        # set the semantic class to the rules gathered in classes, sorted by index
+        # this way, the styles will be applied in the correct order from top of file to bottom
+        output_css[semantic_class] = &quot;#{classes.sort_by {|i| i[:idx]}.map {|i| i[:rules]}}&quot;
+      end
     
-    # return the css in proper format
-    css = &quot;&quot;
-    output_css.each do |tags, rules|
-      css += &quot;#{tags} {#{rules}}\n&quot;
+      # return the css in proper format
+      css = &quot;&quot;
+      output_css.each do |tags, rules|
+        css += &quot;#{tags} {#{rules}}\n&quot;
+      end
+      css
     end
-    css
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/semantic_class_names.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,46 +1,49 @@
-class Validator &lt; Blueprint
-  # instance variables
-  attr_reader :error_count
+module Blueprint
+  # Validates generated CSS against the W3 using Java
+  class Validator
+    attr_reader :error_count
     
-  # constructor
-  def initialize(options = {})
-    @error_count = 0
-  end
+    def initialize
+      @error_count = 0
+    end
 
-  # instance methods
-  def validate
-    java_path = `which java`.rstrip
-    raise &quot;You do not have a Java installed, but it is required.&quot; if java_path.blank?
+    # Validates all three CSS files
+    def validate
+      java_path = `which java`.rstrip
+      raise &quot;You do not have a Java installed, but it is required.&quot; if java_path.blank?
+    
+      output_header
     
-    output_header
+      Blueprint::CSS_FILES.keys.each do |file_name|
+        css_output_path = File.join(Blueprint::BLUEPRINT_ROOT_PATH, file_name)
+        puts &quot;\n\n  Testing #{css_output_path}&quot;
+        puts &quot;  Output ============================================================\n\n&quot;
+        @error_count += 1 if !system(&quot;#{java_path} -jar '#{Blueprint::VALIDATOR_FILE}' -e '#{css_output_path}'&quot;)
+      end
     
-    Blueprint::CSS_FILES.keys.each do |file_name|
-      css_output_path = File.join(Blueprint::BLUEPRINT_ROOT_PATH, file_name)
-      puts &quot;\n\n  Testing #{css_output_path}&quot;
-      puts &quot;  Output ============================================================\n\n&quot;
-      @error_count += 1 if !system(&quot;#{java_path} -jar '#{Validator::VALIDATOR_FILE}' -e '#{css_output_path}'&quot;)
+      output_footer
     end
     
-    output_footer
-  end
-
-  def output_header
-    puts &quot;\n\n&quot;
-    puts &quot;  ************************************************************&quot;
-    puts &quot;  **&quot;
-    puts &quot;  **   Blueprint CSS Validator&quot;
-    puts &quot;  **   Validates output CSS files&quot;
-    puts &quot;  **&quot;
-    puts &quot;  ************************************************************&quot;
-  end
+    private
+    
+    def output_header
+      puts &quot;\n\n&quot;
+      puts &quot;  ************************************************************&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Blueprint CSS Validator&quot;
+      puts &quot;  **   Validates output CSS files&quot;
+      puts &quot;  **&quot;
+      puts &quot;  ************************************************************&quot;
+    end
 
-  def output_footer
-    puts &quot;\n\n&quot;
-    puts &quot;  ************************************************************&quot;
-    puts &quot;  **&quot;
-    puts &quot;  **   Done!&quot;
-    puts &quot;  **   Your CSS files are#{&quot; not&quot; if error_count &gt; 0} valid.#{&quot;  You had #{error_count} error(s) within your files&quot; if error_count &gt; 0}&quot;
-    puts &quot;  **&quot;
-    puts &quot;  ************************************************************&quot;
+    def output_footer
+      puts &quot;\n\n&quot;
+      puts &quot;  ************************************************************&quot;
+      puts &quot;  **&quot;
+      puts &quot;  **   Done!&quot;
+      puts &quot;  **   Your CSS files are#{&quot; not&quot; if error_count &gt; 0} valid.#{&quot;  You had #{error_count} error(s) within your files&quot; if error_count &gt; 0}&quot;
+      puts &quot;  **&quot;
+      puts &quot;  ************************************************************&quot;
+    end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/blueprint/validator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -146,4 +146,4 @@ require 'blueprint/blueprint'
 #       }
 #     }
 
-Compressor.new.generate!
\ No newline at end of file
+Blueprint::Compressor.new.generate!
\ No newline at end of file</diff>
      <filename>lib/compress.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,4 +12,4 @@ require 'blueprint/validator'
 # To add your own CSS files for validation, see
 # /lib/blueprint/validator.rb
 
-Validator.new.validate
\ No newline at end of file
+Blueprint::Validator.new.validate
\ No newline at end of file</diff>
      <filename>lib/validate.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>36ae5dd0ff1622beca3501c6c14ccd265e128436</id>
    </parent>
  </parents>
  <author>
    <name>Josh Clayton</name>
    <email>joshua.clayton@gmail.com</email>
  </author>
  <url>http://github.com/joshuaclayton/blueprint-css/commit/bfdba557d108f58dd847ae5adf42a25809c573d5</url>
  <id>bfdba557d108f58dd847ae5adf42a25809c573d5</id>
  <committed-date>2008-02-21T18:06:58-08:00</committed-date>
  <authored-date>2008-02-21T18:06:58-08:00</authored-date>
  <message>Scoped Blueprint classes within a namespace and added RDoc documentation</message>
  <tree>27e910f84072be7e71b69d7d8303233dcbef52e2</tree>
  <committer>
    <name>Josh Clayton</name>
    <email>joshua.clayton@gmail.com</email>
  </committer>
</commit>
