Sha256: f84ba2f6e56fa29495c235f4aacdf2ea1bd15e6773d51a3c9ec0242069f8317d

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

class Dressmaker
  class Configuration 
    
    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, :rules

    def self.load(file, options)
      configuration = new(options)
      configuration.instance_eval(File.read(file))
      configuration
    end

    def initialize(options)
      @options = options
      @rules = []
    end
    
    def directory
      DirectoryMatcher.new(self)
    end
    
    def files
      FileMatcher.new(self)
    end
    
    def process!(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=
    def desc(description)
      @description_holder = description
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dressmaker-0.0.3 lib/dressmaker/configuration.rb
dressmaker-0.0.2 lib/dressmaker/configuration.rb