class RpiMarca::NationalClass

Attributes

goods_services[R]
number[R]
subclass1[R]
subclass2[R]
subclass3[R]

Public Class Methods

new(number:, subclass1:, subclass2:, subclass3:, goods_services:) click to toggle source
# File lib/rpi_marca/national_class.rb, line 5
def initialize(number:, subclass1:, subclass2:, subclass3:,
               goods_services:)
  fail ParseError, "National class #{classe} out of range (1-41)" unless
    (1..41).include?(number.to_i)

  @number = number
  @subclass1 = subclass1 if subclass1 > 0
  @subclass2 = subclass2 if subclass2 > 0
  @subclass3 = subclass3 if subclass3 > 0
  @goods_services = goods_services
end
parse(el) click to toggle source
# File lib/rpi_marca/national_class.rb, line 27
def self.parse(el)
  return unless el

  subclass = parse_subclass(el)

  new(
    number: Helpers.get_attribute_value(el, 'codigo').to_i,
    **subclass,
    goods_services: Helpers.get_element_value(
      el.at_xpath('.//especificacao')
    )
  )
end

Private Class Methods

parse_subclass(el) click to toggle source
# File lib/rpi_marca/national_class.rb, line 41
def self.parse_subclass(el)
  subclass = el.xpath('.//sub-classe-nacional').map { |s| s['codigo'] }
  fail ParseError, "National class can't have more than 3 subclasses" if
    subclass.length > 3

  {
    subclass1: subclass[0].to_i,
    subclass2: subclass[1].to_i,
    subclass3: subclass[2].to_i

  }
end

Public Instance Methods

to_s() click to toggle source
# File lib/rpi_marca/national_class.rb, line 17
def to_s
  subclasses = [
    @subclass1,
    @subclass2,
    @subclass3
  ].compact.join('.')

  "#{@number}/#{subclasses}"
end