class Wire::Project

Defines a project with model elements (zones, networks, …) as open structs

Attributes

data[RW]

target_dir is the directory where model files are stores data is a [Hash] of all model objects

target_dir[RW]

target_dir is the directory where model files are stores data is a [Hash] of all model objects

Public Class Methods

new(target_dir) click to toggle source

set up empty project. Sets target_dir

# File lib/wire/model/project.rb, line 20
def initialize(target_dir)
  @target_dir = target_dir
  @data = {}
end

Public Instance Methods

calc_stats() click to toggle source

calculates count statistics on project returns:

  • Hash], key => element type, value => [int

    count

# File lib/wire/model/project.rb, line 66
def calc_stats
  result = {}

  @data.each do |element_name, element_data|
    result[element_name] = element_data.size
  end

  result
end
element?(element_name) click to toggle source

check if we have a model element (i.e. zones) params: element_name Name of model element part, i.e. ‘backend-zone’

# File lib/wire/model/project.rb, line 36
def element?(element_name)
  @data.key? element_name.to_sym
end
get_element(element_name) click to toggle source

retrieve element hash, raise ArgumentError if it does not exist. params: element_name Name of model element part, i.e. ‘backend-zone’

# File lib/wire/model/project.rb, line 44
def get_element(element_name)
  fail(
      ArgumentError, "Element #{element_name} not found"
  ) unless element?(element_name)
  @data[element_name.to_sym]
end
merge_element(element_name, element_data) click to toggle source

merge in hash data Params: element_name Name of model element part, i.e. ‘zones’ element_data [Hash] of model element data

# File lib/wire/model/project.rb, line 29
def merge_element(element_name, element_data)
  @data.merge!({ element_name.to_sym => element_data })
end
vartmp_dir() click to toggle source

return project’s var/tmp directory, will be configurable in the future

# File lib/wire/model/project.rb, line 53
def vartmp_dir
  # as of now, use .state in target dir
  state_dir = File.join(@target_dir, '.state')
  unless File.directory? state_dir
    FileUtils.mkdir_p state_dir
    $log.debug "created state dir #{state_dir}"
  end
  state_dir
end