class Courtier::ConfigFilter

Public Class Methods

new(configuration, criteria={}) click to toggle source

Initialize new ConfigFilter.

@param [Array<Config>] List if Config instances.

# File lib/courtier/config_filter.rb, line 12
def initialize(configuration, criteria={})
  @configuration = configuration
  @criteria      = criteria

  @list = []

  configuration.each do |c|
    @list << c if c.match?(criteria)
  end
end

Public Instance Methods

[](subset) click to toggle source
# File lib/courtier/config_filter.rb, line 47
def [](subset)
  return method_missing(:[]) if profile
  if tool
    criteria = @criteria.dup
    criteria[:profile] = subset
  else
    criteria = @criteria.dup
    criteria[:tool] = subset
  end
  self.class.new(@configuration, criteria)
end
call(*args) click to toggle source

Call each config.

# File lib/courtier/config_filter.rb, line 78
def call(*args)
  @list.each do |c|
    if c.profile?(RC.current_profile)
      c.call(*args)
    end
  end
end
each(&block) click to toggle source
# File lib/courtier/config_filter.rb, line 62
def each(&block)
  @list.each do
    block
  end
end
profile() click to toggle source
# File lib/courtier/config_filter.rb, line 33
def profile
  @criteria[:profile]
end
profiles() click to toggle source

Returns list of profiles.

# File lib/courtier/config_filter.rb, line 40
def profiles
  @list.map{ |c| c.profile }
end
size() click to toggle source
# File lib/courtier/config_filter.rb, line 71
def size
  @list.size
end
to_proc(exec=false) click to toggle source

Convert to Proc.

# File lib/courtier/config_filter.rb, line 89
def to_proc(exec=false)
  list = @list
  if exec
    Proc.new do |*args|
      list.each{ |c| instance_exec(*args, &c) }
    end
  else
    Proc.new do |*args|
      list.each{ |c| c.call(*args) }
    end
  end
end
tool() click to toggle source
# File lib/courtier/config_filter.rb, line 26
def tool
  @criteria[:tool]
end