lib/dressmaker/configuration.rb in dressmaker-0.0.1 vs lib/dressmaker/configuration.rb in dressmaker-0.0.2

- old
+ new

@@ -1,12 +1,18 @@ class Dressmaker class Configuration - autoload :DirectoryRule, File.join(File.dirname(__FILE__), 'configuration', 'directory_rule') + autoload :Delegators, File.join(File.dirname(__FILE__), 'configuration', 'delegators') + autoload :Rule, File.join(File.dirname(__FILE__), 'configuration', 'rule') + autoload :FileRule, File.join(File.dirname(__FILE__), 'configuration', 'file_rule') + autoload :DirectoryRule, File.join(File.dirname(__FILE__), 'configuration', 'directory_rule') + autoload :Matcher, File.join(File.dirname(__FILE__), 'configuration', 'matcher') + autoload :FileMatcher, File.join(File.dirname(__FILE__), 'configuration', 'file_matcher') + autoload :DirectoryMatcher, File.join(File.dirname(__FILE__), 'configuration', 'directory_matcher') attr_accessor :description_holder - attr_reader :options + attr_reader :options, :rules def self.load(file, options) configuration = new(options) configuration.instance_eval(File.read(file)) configuration @@ -15,22 +21,22 @@ def initialize(options) @options = options @rules = [] end - def directory(directory, &block) - rule = DirectoryRule.new(directory, &block) - if rule.respond_to?(:description=) - rule.description = description_holder - self.description_holder = nil - end - @rules << rule + def directory + DirectoryMatcher.new(self) end + def files + FileMatcher.new(self) + end + def process!(target) - @rules.each do |rule| - if rule.matches?(target) - rule.execute!(target) + rules.each do |rule| + Dir.glob("#{target}/**/*") do |file| + rel_file = file[target.size, file.size] + rule.inform && rule.execute!(file) if rule.matches?(target, rel_file) end end end alias_method :desc, :description_holder= \ No newline at end of file