Class: EpoOps::Factories::PatentApplicationFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/epo_ops/factories/patent_application_factory.rb

Overview

Parses the patent application data from EPO Ops into an PatentApplication object

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_data) ⇒ PatentApplicationFactory

Returns a new instance of PatentApplicationFactory.



31
32
33
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 31

def initialize(raw_data)
  @raw_data = raw_data
end

Instance Attribute Details

#raw_dataObject (readonly)

Returns the value of attribute raw_data.



29
30
31
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 29

def raw_data
  @raw_data
end

Class Method Details

.build(raw_data) ⇒ EpoOps::PatentApplication

Returns PatentApplication filled with parsed data.

Parameters:

  • raw_data (Hash)

    raw application data as retrieved from Epo Ops

Returns:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 9

def build(raw_data)
  factory = new(raw_data)

  EpoOps::PatentApplication.new(
    factory.application_number,

    raw_data: raw_data,
    title: factory.title,
    status: factory.status,
    agents: factory.agents,
    applicants: factory.applicants,
    inventors: factory.inventors,
    classifications: factory.classifications,
    priority_claims: factory.priority_claims,
    publication_references: factory.publication_references,
    effective_date: factory.effective_date
  )
end

Instance Method Details

#agentsArray

Returns List of NameAndAddress.

Returns:

See Also:



56
57
58
59
60
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 56

def agents
  EpoOps::Util.flat_dig(raw_data, data_path('parties', 'agents', 'agent', 'addressbook')).map do |agent|
    EpoOps::Factories::NameAndAddressFactory.build(agent)
  end
end

#applicantsArray

Returns List of NameAndAddress.

Returns:

See Also:



64
65
66
67
68
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 64

def applicants
  EpoOps::Util.flat_dig(raw_data, data_path('parties', 'applicants', 'applicant', 'addressbook')).map do |applicant|
    EpoOps::Factories::NameAndAddressFactory.build(applicant)
  end
end

#application_numberString

Returns Application Number.

Returns:

  • (String)

    Application Number

See Also:



37
38
39
40
41
42
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 37

def application_number
  document_id = EpoOps::Util.flat_dig raw_data, data_path('application_reference', 'document_id')
  document_id = document_id.first if document_id.is_a?(Array)

  "#{document_id['country']}#{document_id['doc_number']}"
end

#classificationsArray

Returns List of IPC classes.

Returns:

  • (Array)

    List of IPC classes

See Also:



80
81
82
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 80

def classifications
  EpoOps::Util.dig(raw_data, data_path('classifications_ipcr', 'classification_ipcr', 'text')).split(",").map(&:strip)
end

#effective_dateDate

Returns:

  • (Date)

See Also:



104
105
106
107
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 104

def effective_date
  dates = EpoOps::Util.flat_dig raw_data, data_path('dates_rights_effective', 'request_for_examination')
  dates.first.nil? ? nil : dates.first['date']
end

#inventorsArray

Returns List of NameAndAddress.

Returns:

See Also:



72
73
74
75
76
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 72

def inventors
  EpoOps::Util.flat_dig(raw_data, data_path('parties', 'inventors', 'inventor', 'addressbook')).map do |inventor|
    EpoOps::Factories::NameAndAddressFactory.build(inventor)
  end
end

#priority_claimsArray

Returns Hashes of priority claims.

Returns:

  • (Array)

    Hashes of priority claims

See Also:



92
93
94
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 92

def priority_claims
  EpoOps::Util.flat_dig raw_data, data_path('priority_claims','priority_claim')
end

#publication_referencesArray

Returns:

  • (Array)

See Also:



98
99
100
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 98

def publication_references
  EpoOps::Util.flat_dig raw_data, data_path('publication_reference', 'document_id')
end

#statusString

Returns Application status as described by EPO.

Returns:

  • (String)

    Application status as described by EPO

See Also:



86
87
88
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 86

def status
  EpoOps::Util.dig raw_data, data_path('status')
end

#titleHash

Returns List of titles in different languages.

Returns:

  • (Hash)

    List of titles in different languages

See Also:



46
47
48
49
50
51
52
# File 'lib/epo_ops/factories/patent_application_factory.rb', line 46

def title
  titles = EpoOps::Util.flat_dig raw_data, data_path('invention_title')
  titles.inject({}) do |hash, title|
    hash[title['lang']] = title['__content__'] if title.is_a? Hash
    hash
  end
end