class RpiMarca::ViennaClass

Attributes

edition[R]
subclass1[R]
subclass2[R]
subclass3[R]
subclass4[R]
subclass5[R]

Public Class Methods

new(edition:, subclass1:, subclass2: nil, subclass3: nil, subclass4: nil, subclass5: nil) click to toggle source
# File lib/rpi_marca/vienna_class.rb, line 6
def initialize(edition:, subclass1:, subclass2: nil, subclass3: nil,
               subclass4: nil, subclass5: nil)
  @edition = edition
  @subclass1 = subclass1
  @subclass2 = subclass2
  @subclass3 = subclass3
  @subclass4 = subclass4
  @subclass5 = subclass5
end
parse(el) click to toggle source
# File lib/rpi_marca/vienna_class.rb, line 26
def self.parse(el)
  return unless el

  subclasses = parse_subclasses(el)

  new(
    edition: Helpers.get_attribute_value(el, 'edicao').to_i,
    **subclasses
  )
end

Private Class Methods

parse_subclasses(el) click to toggle source
# File lib/rpi_marca/vienna_class.rb, line 37
def self.parse_subclasses(el)
  subclasses = el.xpath('.//classe-vienna').map { |s| s['codigo'] }
  fail ParseError, "Vienna class can't have more than 5 subclasses" if
    subclasses.length > 5

  {
    subclass1: subclasses[0],
    subclass2: subclasses[1],
    subclass3: subclasses[2],
    subclass4: subclasses[3],
    subclass5: subclasses[4]
  }
end

Public Instance Methods

to_s() click to toggle source
# File lib/rpi_marca/vienna_class.rb, line 16
def to_s
  [
    @subclass1,
    @subclass2,
    @subclass3,
    @subclass4,
    @subclass5
    ].compact.join(' / ')
end