Sha256: 2ac2a8b1db0b0d07d51eabb748d8aed738ec113bcb98a32d54e58164da114f8e

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

require "delegate"

class Dressmaker
  class Configuration
    class Delegators
      
      class DirectoryDelegator < SimpleDelegator
        def for(pattern)
          Dir["#{__getobj__.path}/#{pattern}"].each {|e| Delegators.with(e) {|wrapper_e| yield wrapper_e}}
        end
      end

      class FileDelegator < SimpleDelegator
        def gsub!(pattern, replace = nil, &block)
          contents = self.read.gsub(pattern, replace, &block)
          File.open(self.path, 'w') {|f| f << contents }
        end
        
        def chmod(mode)
          File.chmod(mode, self.path)
        end
        
        def make_executable!
          chmod(0755)
        end
      end
      
      def self.with(target)
        target = target.path unless target.is_a?(String)
        if File.directory?(target)
          yield DirectoryDelegator.new(File.open(target))
        elsif File.file?(target)
          yield FileDelegator.new(File.open(target))
        else
          yield target
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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