<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -9,6 +9,11 @@ class Blueprint
   PLUGINS_PATH =          File.join(Blueprint::BLUEPRINT_ROOT_PATH, 'plugins')
   SETTINGS_FILE =         File.join(Blueprint::ROOT_PATH, 'lib', 'settings.yml')
   VALIDATOR_FILE =        File.join(Blueprint::LIB_PATH, 'validate', 'css-validator.jar')
+  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</diff>
      <filename>lib/blueprint/blueprint.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,12 +3,6 @@ require 'optparse'
 
 class Compressor &lt; Blueprint
   # class constants
-    CSS_FILES = {
-      'screen.css'   =&gt; ['reset.css', 'typography.css', 'grid.css', 'forms.css'],
-      'print.css'    =&gt; ['print.css'],
-      'ie.css'       =&gt; ['ie.css']
-    } unless const_defined?(&quot;CSS_FILES&quot;)
-  
   TEST_FILES = [
     'index.html', 
     'parts/elements.html', 
@@ -46,7 +40,7 @@ class Compressor &lt; Blueprint
   # instance methods
   def generate!
     output_header       # information to the user (in the console) describing custom settings
-    generate_css_files  # loops through Compressor::CSS_FILES to generate output CSS
+    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
@@ -100,7 +94,7 @@ class Compressor &lt; Blueprint
   end
   
   def generate_css_files
-    Compressor::CSS_FILES.each do |output_file_name, css_source_file_names|
+    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;
 
@@ -113,12 +107,13 @@ class Compressor &lt; Blueprint
         puts &quot;      + src/#{css_source_file}&quot;
         css_output += &quot;/* #{css_source_file} */\n&quot; if css_source_file_names.any?
         
-        css_output += if self.custom_layout &amp;&amp; css_source_file == 'grid.css'
-          CSSParser.new(:css_string =&gt; self.custom_layout.generate_grid_css, :namespace =&gt; namespace).to_s
+        source_options = if self.custom_layout &amp;&amp; css_source_file == 'grid.css'
+          {:css_string =&gt; self.custom_layout.generate_grid_css}
         else
-          CSSParser.new(:file_path =&gt; File.join(Blueprint::SOURCE_PATH, css_source_file), :namespace =&gt; namespace).to_s
+          {:file_path =&gt; 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
       
@@ -133,7 +128,7 @@ class Compressor &lt; Blueprint
     end
 
     # append semantic class names if set
-    append_semantic_classes!
+    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')))
@@ -185,7 +180,7 @@ class Compressor &lt; Blueprint
     css += plugin_css
   end
     
-  def append_semantic_classes!
+  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?</diff>
      <filename>lib/blueprint/compressor.rb</filename>
    </modified>
    <modified>
      <diff>@@ -18,16 +18,17 @@ class SemanticClassNames &lt; Blueprint
     output_css = {}
     
     #loads full stylesheet into an array of hashes
-    blueprint_assignments = CSSParser.new(:file_path =&gt; self.source_file, :namespace =&gt; self.namespace).parse
+    blueprint_assignments = CSSParser.new(:file_path =&gt; self.source_file).parse
     
-    # iterates through each class assignment ('footer' =&gt; 'span-# column last', 'header' =&gt; 'span-# column last')
+    # 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? }
+      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|
-        classes &lt;&lt; blueprint_assignments.find_all {|line| line[:tags] =~ Regexp.new(/^(\w+, ?)*\.#{self.namespace}#{bp_class}(, \w+)?$/)}.uniq
+        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</diff>
      <filename>lib/blueprint/semantic_class_names.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,4 @@
 class Validator &lt; Blueprint
-  # class constants
-  CSS_FILES_TO_TEST = ['screen.css', 'print.css', 'ie.css']
-  
   # instance variables
   attr_reader :error_count
     
@@ -12,15 +9,16 @@ class Validator &lt; Blueprint
 
   # instance methods
   def validate
-    raise &quot;You do not have a Java installed, but it is required.&quot; if `which java`.blank?
+    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
     
-    Validator::CSS_FILES_TO_TEST.each do |file_name|
+    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 -jar '#{Validator::VALIDATOR_FILE}' -e '#{css_output_path}'&quot;)
+      @error_count += 1 if !system(&quot;#{java_path} -jar '#{Validator::VALIDATOR_FILE}' -e '#{css_output_path}'&quot;)
     end
     
     output_footer</diff>
      <filename>lib/blueprint/validator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,33 @@
 # refer to http://www.yaml.org/spec/1.1/ for clarification on YAML collections
-projectname:
-  path: /Users/username/Sites/project name/public/stylesheets # path to output folder
-  namespace: my-custom-namespace- #custom namespace (if used)
+project1:
+  path: /path/to/my/project/stylesheets
+  namespace: custom-namespace-1-
   custom_css:
     ie.css:
-      - my-ie.css # compressed and appended on to ie.css
+      - custom-ie.css
+    print.css:
+      - docs.css
+      - my-print-styles.css
     screen.css:
-      - validation.css # both validation.css and calendar-date-select/styles.css would be compressed and appended onto screen.css
-      - calendar-date-select/styles.css
+      - subfolder-of-stylesheets/sub_css.css
   custom_layout:
     column_count: 12
     column_width: 70
     gutter_width: 10
-projectname2:
-  path: /Users/username/Sites/different-project-name/styles
+  plugins:
+    - fancy-type
+    - buttons
+project2:
+  path: /path/to/different/stylesheets
+  namespace: different-namespace-
   custom_css:
-    print.css:
-      - pages.css
-      - pretty-print.css
-      - prince/document.css
+    screen.css:
+      - custom_screen.css
   semantic_classes:
-    &quot;#footer, #header&quot;: span-24 last
-    &quot;#content&quot;: span-18 border
-    &quot;#extra-content&quot;: last span-6
-    &quot;div#navigation&quot;: last span-24
-    &quot;div.section, div.entry, .feeds&quot;: span-6
\ No newline at end of file
+    &quot;#footer, #header&quot;: &quot;.span-24, div.span-24&quot;
+    &quot;#content&quot;: &quot;.span-17, div.span-17, div.colborder&quot;
+    &quot;#extra-content&quot;: &quot;.span-6, div.span-6&quot;
+    &quot;div#navigation&quot;: &quot;div.span_24, .span-24&quot;
+    &quot;div.section, div.entry, .feeds&quot;: &quot;.span-6 div.span-6&quot;
+project3:
+  path: /path/to/another/projects/styles
\ No newline at end of file</diff>
      <filename>lib/settings.example.yml</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>30fd5e2878f5227ea4029207a06d726117b66b5a</id>
    </parent>
  </parents>
  <author>
    <name>Josh Clayton</name>
    <email>joshua.clayton@gmail.com</email>
  </author>
  <url>http://github.com/joshuaclayton/blueprint-css/commit/9b6701e8a090a98fd5071b954239bb412cda541b</url>
  <id>9b6701e8a090a98fd5071b954239bb412cda541b</id>
  <committed-date>2008-02-16T09:51:01-08:00</committed-date>
  <authored-date>2008-02-16T09:51:01-08:00</authored-date>
  <message>Updated semantic class parser to now parse against div.span-# and other selectors.  Updated settings YAML to reflect ability to include plugins.</message>
  <tree>23334356bd9ac9ef8db32631ac84b96791e715a4</tree>
  <committer>
    <name>Josh Clayton</name>
    <email>joshua.clayton@gmail.com</email>
  </committer>
</commit>
