class NetLinx::Project
A collection of NetLinx
systems. Workspace
-> Project
-> System
Attributes
dealer[RW]
description[RW]
designer[RW]
name[RW]
purchase_order[RW]
sales_order[RW]
systems[RW]
workspace[RW]
A reference to the project's parent workspace.
Public Class Methods
new(**kwargs)
click to toggle source
@option kwargs [NetLinx::Workspace] :workspace This system's parent workspace node. @option kwargs [String] :name ('') Project
name. @option kwargs [String] :description ('') @option kwargs [String] :dealer ('') @option kwargs [String] :designer ('') @option kwargs [String] :sales_order ('') @option kwargs [String] :purchase_order ('')
# 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
Public Instance Methods
<<(system)
click to toggle source
Alias to add a system.
# File lib/netlinx/workspace/project.rb, line 42 def << system @systems << system system.project = self end
compile()
click to toggle source
Compile
all systems in this project.
# 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)
click to toggle source
@return true if the project contains the specified file.
# 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_s()
click to toggle source
@return the project name.
# File lib/netlinx/workspace/project.rb, line 48 def to_s @name end
to_xml_element()
click to toggle source
@return [REXML::Element] an XML element representing this project.
# 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
Private Instance Methods
parse_xml_element(project)
click to toggle source
# File lib/netlinx/workspace/project.rb, line 87 def parse_xml_element project # Load project params. @name = project.elements['Identifier'].text.strip || '' @designer = project.elements['Designer'].text || '' @dealer = project.elements['DealerID'].text || '' @sales_order = project.elements['SalesOrder'].text || '' @purchase_order = project.elements['PurchaseOrder'].text || '' @description = project.elements['Comments'].text || '' # Load systems. project.each_element 'System' do |e| system = NetLinx::System.new \ element: e, project: self @systems << system end end