Class: Buildr::Filter

Inherits:
Rake::Task
  • Object
show all
Defined in:
lib/tasks/filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Filter

Returns a new instance of Filter.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tasks/filter.rb', line 10

def initialize(*args)
  super
  enhance do |task|
    fail "No target directory specified" if !target || (File.exist?(target) && !File.directory?(target))
    unless copy_map.empty?
      verbose(Rake.application.options.trace || false) do
        copy_map do |dest, src|
          mkpath File.dirname(dest) rescue nil
          case filter
          when Proc, Method
            filtered = filter.call(File.read(src))
            File.open(dest, "w") { |file| file.write filtered }
          when Hash
            filtered = File.read(src).gsub(/\$\{.*\}/) { |str| filter[str[2..-2]] || str }
            File.open(dest, "w") { |file| file.write filtered }
          when nil
            cp src, dest
          else
            fail "Filter can be a hash (key=>value), or a proc/method; I don't understand #{filter}"
          end
        end
        touch target if File.exist?(target)
      end
    end 
  end
end

Instance Attribute Details

#filterObject

Filter to use.



8
9
10
# File 'lib/tasks/filter.rb', line 8

def filter
  @filter
end

#targetObject

The target directory.



6
7
8
# File 'lib/tasks/filter.rb', line 6

def target
  @target
end

Instance Method Details

#exclude(*files) ⇒ Object



43
44
45
46
# File 'lib/tasks/filter.rb', line 43

def exclude(*files)
  prerequisites.exclude *files
  self
end

#include(*files) ⇒ Object Also known as: add



37
38
39
40
# File 'lib/tasks/filter.rb', line 37

def include(*files)
  prerequisites.include *files
  self
end

#into(dir) ⇒ Object



48
49
50
51
# File 'lib/tasks/filter.rb', line 48

def into(dir)
  self.target = dir
  self
end

#using(filter, &block) ⇒ Object



53
54
55
56
# File 'lib/tasks/filter.rb', line 53

def using(filter, &block)
  self.filter = filter || block
  self
end