Class: EpoOps::Factories::PatentApplicationFactory
- Inherits:
-
Object
- Object
- EpoOps::Factories::PatentApplicationFactory
- 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
-
#raw_data ⇒ Object
readonly
Returns the value of attribute raw_data.
Class Method Summary collapse
-
.build(raw_data) ⇒ EpoOps::PatentApplication
PatentApplication filled with parsed data.
Instance Method Summary collapse
-
#agents ⇒ Array
List of NameAndAddress.
-
#applicants ⇒ Array
List of NameAndAddress.
-
#application_number ⇒ String
Application Number.
-
#classifications ⇒ Array
List of IPC classes.
- #effective_date ⇒ Date
-
#initialize(raw_data) ⇒ PatentApplicationFactory
constructor
A new instance of PatentApplicationFactory.
-
#inventors ⇒ Array
List of NameAndAddress.
-
#priority_claims ⇒ Array
Hashes of priority claims.
- #publication_references ⇒ Array
-
#status ⇒ String
Application status as described by EPO.
-
#title ⇒ Hash
List of titles in different languages.
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_data ⇒ Object (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.
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
#agents ⇒ Array
Returns List of NameAndAddress.
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 |
#applicants ⇒ Array
Returns List of NameAndAddress.
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_number ⇒ String
Returns Application Number.
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 |
#classifications ⇒ Array
Returns List of IPC classes.
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_date ⇒ Date
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 |
#inventors ⇒ Array
Returns List of NameAndAddress.
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_claims ⇒ Array
Returns Hashes of priority claims.
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_references ⇒ Array
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 |
#status ⇒ String
Returns Application status as described by EPO.
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 |
#title ⇒ Hash
Returns List of titles in different languages.
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 |