Class: Relaton::Itu::RecommendationParser
- Inherits:
-
Object
- Object
- Relaton::Itu::RecommendationParser
- Includes:
- Core::ArrayWrapper
- Defined in:
- lib/relaton/itu/recommendation_parser.rb
Constant Summary collapse
- RECHDR =
"https://www.itu.int/mws/api/recommendations/getRecHdrDetail?idrec=%{idrec}&lang=en"- RECEDITIONS =
"https://www.itu.int/mws/api/recommendations/getRecEditions?idrec=%{idrec}&lang=en"- RECSUPPLEMENTS =
"https://www.itu.int/mws/api/recommendations/getRecSupplements?idrec=%{idrec}&lang=en"- IMPLGUIDES =
"https://www.itu.int/mws/api/recommendations/getImplGuides?idrec=%{idrec}&lang=en"
Instance Method Summary collapse
- #doc ⇒ Object
- #doc_date ⇒ Object
- #fetch_abstract ⇒ Array<Relaton::Bib::LocalizedMarkedUpString>
- #fetch_dates ⇒ Array<Relaton::Bib::Date>
- #fetch_edition ⇒ String?
- #fetch_relations ⇒ Array<Relaton::Bib::Relation>
- #fetch_source ⇒ Array<Relaton::Bib::Uri>
- #fetch_status ⇒ Relaton::Bib::Status?
- #fetch_titles ⇒ Array<Relaton::Bib::Title>
- #fetch_workgroup ⇒ String?
-
#initialize(hit, idrec, imp) ⇒ RecommendationParser
constructor
A new instance of RecommendationParser.
Constructor Details
#initialize(hit, idrec, imp) ⇒ RecommendationParser
Returns a new instance of RecommendationParser.
11 12 13 14 15 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 11 def initialize(hit, idrec, imp) @hit = hit @idrec = idrec @imp = imp end |
Instance Method Details
#doc ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 17 def doc @doc ||= begin url = (imp ? IMPLGUIDES : RECHDR) % { idrec: idrec } resp = get_data url imp ? resp.first : resp end end |
#doc_date ⇒ Object
68 69 70 71 72 73 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 68 def doc_date return @doc_date if defined? @doc_date date = imp ? doc["imp_approval_date"] : doc["approval_date"] @doc_date = Date.parse(date).to_s rescue date # rubocop:disable Style/RescueModifier end |
#fetch_abstract ⇒ Array<Relaton::Bib::LocalizedMarkedUpString>
53 54 55 56 57 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 53 def fetch_abstract array(doc["summary"]).map do |content| Relaton::Bib::Abstract.new(content: content, language: "en", script: "Latn") end end |
#fetch_dates ⇒ Array<Relaton::Bib::Date>
48 49 50 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 48 def fetch_dates array(doc_date).map { |on| Relaton::Bib::Date.new(type: "published", at: on) } end |
#fetch_edition ⇒ String?
26 27 28 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 26 def fetch_edition self_edition&.dig("Version") end |
#fetch_relations ⇒ Array<Relaton::Bib::Relation>
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 76 def fetch_relations relations = [] editions.each do |ed| next if ed["idrec"] == idrec relations << create_relation("hasEdition", ed["title"], ed["rec_name"]) end supplements.each { |supp| relations << create_relation("complementOf", supp["title_text"], supp["rec_name"]) } relations end |
#fetch_source ⇒ Array<Relaton::Bib::Uri>
60 61 62 63 64 65 66 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 60 def fetch_source link = imp ? doc["imp_dms_link"] : doc["handle_id"] links = [Relaton::Bib::Uri.new(type: "src", content: link)] links << Relaton::Bib::Uri.new(type: "pdf", content: doc["handle_id_pdf_link"]) if doc["handle_id_pdf_link"] imp_word_link { |wlink| links << Relaton::Bib::Uri.new(type: "word", content: wlink) } links end |
#fetch_status ⇒ Relaton::Bib::Status?
39 40 41 42 43 44 45 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 39 def fetch_status inforce = imp ? imp_status : doc["status"] return if inforce.nil? || inforce.empty? status = inforce == "In force" ? "Published" : "Withdrawal" Relaton::Bib::Status.new(stage: Relaton::Bib::Status::Stage.new(content: status)) end |
#fetch_titles ⇒ Array<Relaton::Bib::Title>
31 32 33 34 35 36 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 31 def fetch_titles title = imp ? doc["imp_title_e"] : doc["rec_title"] return [] if title.nil? || title.empty? Relaton::Bib::Title.from_string title, "en", "Latn" end |
#fetch_workgroup ⇒ String?
90 91 92 93 94 95 96 97 |
# File 'lib/relaton/itu/recommendation_parser.rb', line 90 def fetch_workgroup url = "https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=#{idrec}&lang=en" page = hit.hit_collection.agent.get(url) wg = page.at('//span[contains(@id, "uc_rec_main_info1_rpt_main_ctl00_Label8")]/a') wg&.text rescue StandardError nil end |