class BaseChip::Block

Public Instance Methods

configuration_dereference(name,names,passive) click to toggle source
# File lib/base_chip/block.rb, line 26
def configuration_dereference(name,names,passive)
  if configuration = @configurations[name]
    configuration.configure
    configuration.dereference_workload(names,passive)
  elsif configuration = @configurations[:default]
    configuration.configure
    configuration.dereference_workload(names.map{|n|"#{name}:#{n}"},passive)
  elsif passive
    []
  else
    fault "Could not find configuration #{name} in block #{@name}" # FIXME say who wanted it, and if shortcut occurred
  end
end
dereference_workload(names = nil,passive=false) click to toggle source
# File lib/base_chip/block.rb, line 39
def dereference_workload(names = nil,passive=false)
  configure
  fault "No configurations specified for block #{@name}" unless @configurations # || passive || names.nil?
  names ||= ['all']
  out     = Array.new
  names.each do |n|
    n = n.to_s
    case n
    when 'all', 'gate', 'upgate', 'downgate', 'diffgate' # FIXME , 'alltests', 'allactions'
      next unless @configurations
      @configurations.keys.each { |k| out += configuration_dereference(k,[n],true) }
    when /^all:(.*)$/
      next unless @configurations
      tmp = $1
      @configurations.keys.each { |k| out += configuration_dereference(k,[tmp],true) }
    when /^([^:]*?):(.*)$/
      out += configuration_dereference($1.to_sym,[$2],passive)
    else
      fault "No configurations specified for block #{@name}" unless @configurations || passive
      if @configurations[:default] 
        out += configuration_dereference(:default,[n],passive)
      elsif @configurations.size == 1
        out += configuration_dereference(@configurations.keys[0],[n],passive)
      end
    end
  end
  out.uniq!
  out
end
discover_configurations() click to toggle source
# File lib/base_chip/block.rb, line 74
def discover_configurations ; file_glob("#{@directory}/*/base_chip/configuration.rb" , /(\w+)\/base_chip\/configuration\.rb$/        , :configuration)
                              file_glob("#{@directory}/base_chip/configurations/*.rb",        /base_chip\/configurations\/(\w+)\.rb$/, :configuration) end
shortcut(name, array) click to toggle source
# File lib/base_chip/block.rb, line 69
def shortcut(name, array)
  @shortcuts ||= {}
  @shortcuts[name] = array
end