Class: NetLinx::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/netlinx/workspace/project.rb

Overview

A collection of NetLinx systems. Workspace -> Project -> System

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**kwargs) ⇒ Project

Returns a new instance of Project.

Parameters:

  • kwargs (Hash)

    a customizable set of options

Options Hash (**kwargs):

  • :workspace (NetLinx::Workspace)

    This system’s parent workspace node.

  • :name (String) — default: ''

    Project name.

  • :description (String) — default: ''
  • :dealer (String) — default: ''
  • :designer (String) — default: ''
  • :sales_order (String) — default: ''
  • :purchase_order (String) — default: ''


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/netlinx/workspace/project.rb', line 25

def initialize **kwargs
  @workspace      = kwargs.fetch :workspace,      nil
  
  @name           = kwargs.fetch :name,           ''
  @description    = kwargs.fetch :description,    ''
  @dealer         = kwargs.fetch :dealer,         ''
  @designer       = kwargs.fetch :designer,       ''
  @sales_order    = kwargs.fetch :sales_order,    ''
  @purchase_order = kwargs.fetch :purchase_order, ''
  
  @systems = []
  
  project_element = kwargs.fetch :element, nil
  parse_xml_element project_element if project_element
end

Instance Attribute Details

#dealerObject

Returns the value of attribute dealer.



12
13
14
# File 'lib/netlinx/workspace/project.rb', line 12

def dealer
  @dealer
end

#descriptionObject

Returns the value of attribute description.



11
12
13
# File 'lib/netlinx/workspace/project.rb', line 11

def description
  @description
end

#designerObject

Returns the value of attribute designer.



13
14
15
# File 'lib/netlinx/workspace/project.rb', line 13

def designer
  @designer
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/netlinx/workspace/project.rb', line 10

def name
  @name
end

#purchase_orderObject

Returns the value of attribute purchase_order.



15
16
17
# File 'lib/netlinx/workspace/project.rb', line 15

def purchase_order
  @purchase_order
end

#sales_orderObject

Returns the value of attribute sales_order.



14
15
16
# File 'lib/netlinx/workspace/project.rb', line 14

def sales_order
  @sales_order
end

#systemsObject

Returns the value of attribute systems.



16
17
18
# File 'lib/netlinx/workspace/project.rb', line 16

def systems
  @systems
end

#workspaceObject

A reference to the project’s parent workspace.



9
10
11
# File 'lib/netlinx/workspace/project.rb', line 9

def workspace
  @workspace
end

Instance Method Details

#<<(system) ⇒ Object

Alias to add a system.



42
43
44
45
# File 'lib/netlinx/workspace/project.rb', line 42

def << system
  @systems << system
  system.project = self
end

#compileObject

Compile all systems in this project.



65
66
67
68
69
# File 'lib/netlinx/workspace/project.rb', line 65

def compile
  compiler_results = []
  @systems.each {|system| compiler_results << (system.compile).first}
  compiler_results
end

#include?(file) ⇒ Boolean

Returns true if the project contains the specified file.

Returns:

  • (Boolean)

    true if the project contains the specified file.



53
54
55
56
57
58
59
60
61
62
# File 'lib/netlinx/workspace/project.rb', line 53

def include? file
  included = false
  
  systems.each do |system|
    included = system.include? file
    break if included
  end
  
  included
end

#to_sObject

Returns the project name.

Returns:

  • the project name.



48
49
50
# File 'lib/netlinx/workspace/project.rb', line 48

def to_s
  @name
end

#to_xml_elementREXML::Element

Returns an XML element representing this project.

Returns:

  • (REXML::Element)

    an XML element representing this project.



72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/netlinx/workspace/project.rb', line 72

def to_xml_element
  REXML::Element.new('Project').tap do |project|
    project.add_element('Identifier').tap { |e| e.text = name }
    project.add_element('Designer').tap { |e| e.text = designer }
    project.add_element('DealerID').tap { |e| e.text = dealer }
    project.add_element('SalesOrder').tap { |e| e.text = sales_order }
    project.add_element('PurchaseOrder').tap { |e| e.text = purchase_order }
    project.add_element('Comments').tap { |e| e.text = description }
    
    @systems.each { |system| project << system.to_xml_element }
  end
end