class RpiMarca::Publication

Constants

NATURE_NORMALIZATION

Attributes

agent[R]
application[R]
disclaimer[R]
expires_on[R]
filed_on[R]
granted_on[R]
kind[R]
national_class[R]
nature[R]
ncl[R]
owners[R]
previous_applications[R]
priorities[R]
rules[R]
trademark[R]
vienna_class[R]

Public Class Methods

new(publication) click to toggle source
# File lib/rpi_marca/publication.rb, line 35
def initialize(publication)
  @rules = []
  @owners = []
  @previous_applications = []
  @priorities = []

  element = validate_and_parse_publication(publication)
  parse_element_children(element)
end

Protected Instance Methods

parse_element_apostila(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 132
def parse_element_apostila(el)
  @disclaimer = Helpers.get_element_value(el)
end
parse_element_children(publication) click to toggle source
# File lib/rpi_marca/publication.rb, line 62
def parse_element_children(publication)
  parse_element_processo(publication)

  publication.elements.each do |el|
    normalized_element_name = el.name.gsub('-', '_')
    parse_method = "parse_element_#{normalized_element_name}".to_sym

    fail ParseError unless respond_to?(parse_method, true)

    __send__(parse_method, el)
  end
end
parse_element_classe_nacional(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 120
def parse_element_classe_nacional(el)
  @national_class = NationalClass.parse(el)
end
parse_element_classe_nice(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 116
def parse_element_classe_nice(el)
  @ncl = Ncl.parse(el)
end
parse_element_classes_vienna(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 124
def parse_element_classes_vienna(el)
  @vienna_class = ViennaClass.parse(el)
end
parse_element_despachos(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 89
def parse_element_despachos(el)
  el = el.elements
  fail ParseError if el.empty?

  @rules = el.map { |rule| Rule.parse(rule) }
end
parse_element_marca(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 109
def parse_element_marca(el)
  @trademark = Helpers.get_element_value(el.at_xpath('.//nome'))
  @kind = Helpers.get_attribute_value(el, 'apresentacao')
  nature = Helpers.get_attribute_value(el, 'natureza')
  @nature = NATURE_NORMALIZATION.fetch(nature, nature)
end
parse_element_prioridade_unionista(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 128
def parse_element_prioridade_unionista(el)
  @priorities = el.elements.map { |prio| Priority.parse(prio) }
end
parse_element_processo(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 75
def parse_element_processo(el)
  @application =
    Helpers.get_attribute_value(el, 'numero') or fail ParseError
  @filed_on =
    Helpers.parse_date(Helpers.get_attribute_value(el, 'data-deposito'))
  @granted_on =
    Helpers.parse_date(Helpers.get_attribute_value(el, 'data-concessao'))
  @expires_on =
    Helpers.parse_date(Helpers.get_attribute_value(el, 'data-vigencia'))

  fail ParseError if @granted_on && @expires_on.nil?
  fail ParseError if @expires_on && @granted_on.nil?
end
parse_element_procurador(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 96
def parse_element_procurador(el)
  @agent = Helpers.get_element_value(el)
end
parse_element_sobrestadores(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 104
def parse_element_sobrestadores(el)
  @previous_applications =
    el.elements.map { |application| PreviousApplication.parse(application) }
end
parse_element_titulares(el) click to toggle source
# File lib/rpi_marca/publication.rb, line 100
def parse_element_titulares(el)
  @owners = el.elements.map { |owner| Owner.parse(owner) }
end
validate_and_parse_publication(element) click to toggle source
# File lib/rpi_marca/publication.rb, line 47
def validate_and_parse_publication(element)
  element =
    if element.is_a? Nokogiri::XML::Element
      element
    elsif element.is_a? String
      Nokogiri::XML(element).at_xpath('//processo')
    else
      fail ParseError, "Input couldn't be recognized as a publication"
    end

  fail ParseError if element.name != 'processo'

  element
end