Class: Wire::Project
- Inherits:
-
Object
- Object
- Wire::Project
- Defined in:
- lib/wire/model/project.rb
Overview
Defines a project with model elements (zones, networks, …) as open structs
Instance Attribute Summary collapse
-
#data ⇒ Object
target_diris the directory where model files are storesdatais a [Hash] of all model objects. -
#target_dir ⇒ Object
target_diris the directory where model files are storesdatais a [Hash] of all model objects.
Instance Method Summary collapse
-
#calc_stats ⇒ Object
calculates count statistics on project returns: - [Hash], key => element type, value => [int] count.
-
#element?(element_name) ⇒ Boolean
check if we have a model element (i.e. zones) params:
element_nameName of model element part, i.e. -
#get_element(element_name) ⇒ Object
retrieve element hash, raise ArgumentError if it does not exist.
-
#initialize(target_dir) ⇒ Project
constructor
set up empty project.
-
#merge_element(element_name, element_data) ⇒ Object
merge in hash data Params:
element_nameName of model element part, i.e. -
#vartmp_dir ⇒ Object
return project’s var/tmp directory, will be configurable in the future.
Constructor Details
#initialize(target_dir) ⇒ Project
set up empty project. Sets target_dir
20 21 22 23 |
# File 'lib/wire/model/project.rb', line 20 def initialize(target_dir) @target_dir = target_dir @data = {} end |
Instance Attribute Details
#data ⇒ Object
target_dir is the directory where model files are stores data is a [Hash] of all model objects
17 18 19 |
# File 'lib/wire/model/project.rb', line 17 def data @data end |
#target_dir ⇒ Object
target_dir is the directory where model files are stores data is a [Hash] of all model objects
17 18 19 |
# File 'lib/wire/model/project.rb', line 17 def target_dir @target_dir end |
Instance Method Details
#calc_stats ⇒ Object
calculates count statistics on project returns:
- Hash], key => element type, value => [int
-
count
66 67 68 69 70 71 72 73 74 |
# 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) ⇒ Boolean
check if we have a model element (i.e. zones) params: element_name Name of model element part, i.e. ‘backend-zone’
36 37 38 |
# File 'lib/wire/model/project.rb', line 36 def element?(element_name) @data.key? element_name.to_sym end |
#get_element(element_name) ⇒ Object
retrieve element hash, raise ArgumentError if it does not exist. params: element_name Name of model element part, i.e. ‘backend-zone’
44 45 46 47 48 49 |
# 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) ⇒ Object
merge in hash data Params: element_name Name of model element part, i.e. ‘zones’ element_data [Hash] of model element data
29 30 31 |
# 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 ⇒ Object
return project’s var/tmp directory, will be configurable in the future
53 54 55 56 57 58 59 60 61 |
# 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 |