class Wire::Project
Defines a project with model elements (zones, networks, …) as open structs
Attributes
target_dir
is the directory where model files are stores data
is a [Hash] of all model objects
target_dir
is the directory where model files are stores data
is a [Hash] of all model objects
Public Class Methods
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
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
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
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 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
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