class EagleCAD::Board

Constants

ContactReference
Via

Attributes

attributes[R]
classes[R]
description[RW]
design_rules[RW]
elements[R]
libraries[R]
passes[R]
plain[R]

Public Class Methods

from_xml(element) click to toggle source
# File lib/eaglecad/board.rb, line 103
def self.from_xml(element)
    Board.new.tap do |board|
        element.elements.each do |element|
            case element.name
                when 'attributes'
                    element.elements.each {|attribute| board.attributes.push Attribute.from_xml(attribute) }
                when 'autorouter'
                    element.elements.each do |pass_element|
                        pass = board.passes[pass_element.attributes['name']]
                        pass_element.elements.each {|parameter| pass[parameter.attributes['name']] = parameter.attributes['value'] }
                    end
                when 'classes'
                    element.elements.each {|clearance| board.classes.push Clearance.from_xml(clearance) }
                when 'description'
                    board.description = element.text
                when 'designrules'
                    board.design_rules = DesignRules.from_xml(element)
                when 'elements'
                    element.elements.each {|object| board.elements.push Element.from_xml(object) }
                when 'libraries'
                    element.elements.each {|library| board.libraries[library.attributes['name']] = Library.from_xml(library) }
                when 'plain'
                    element.elements.each {|object| board.plain.push Geometry.from_xml(object) }
                when 'signals'
                when 'variantdefs'
                else
                    raise StandardError, "Unrecognized Board element '#{element.name}'"
            end
        end
    end
end
new() click to toggle source
# File lib/eaglecad/board.rb, line 135
def initialize
    @attributes = []
    @classes = []
    @contact_references = []
    @elements = []
    @libraries = {}
    @passes = Hash.new {|hash, key| hash[key] = Hash.new }
    @plain = []
end

Public Instance Methods

to_xml() click to toggle source

@return [REXML::Element]

# File lib/eaglecad/board.rb, line 146
def to_xml
    REXML::Element.new('board').tap do |element|
        element.add_element('attributes').tap do |attribute_element|
            attributes.each {|attribute| attribute_element.add_element attribute.to_xml }
        end

        element.add_element('description').text = description

        element.add_element('autorouter').tap do |autorouter_element|
            passes.each do |name, pass|
                autorouter_element.add_element('pass', {'name' => name}).tap do |pass_element|
                    pass.each {|name, value| pass_element.add_element('param', {'name' => name, 'value' => value})}
                end
            end
        end

        element.add_element('classes').tap do |classes_element|
            classes.each do |clearance|
                classes_element.add_element clearance.to_xml
            end
        end

        element.add_element(design_rules.to_xml) if design_rules

        element.add_element('elements').tap do |element_element|
            elements.each {|object| element_element.add_element object.to_xml }
        end

        element.add_element('libraries').tap do |libraries_element|
            libraries.each {|name, library| libraries_element.add_element library.to_xml }
        end

        element.add_element('plain').tap do |plain_element|
            plain.each {|object| plain_element.add_element object.to_xml }
        end
    end
end