relaton-itu 1.14.1 → 1.14.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c4af93cb7f6ba7f9beff7222f442fb1d0b17ad382308fd492fadbbe7932cd69
4
- data.tar.gz: c19c46f3a457914f60cab5992a1443ccf22242ae9ba7c62d141f4de7bdd23fa2
3
+ metadata.gz: 6766812ad6660d739d3d4e4c1778846119eaca063c3c5cfc34242ffca6414a6b
4
+ data.tar.gz: 7c3024fc052ddd75a7c82ab1b3231834d6b0c964cf940f5fa1e2c28c0ff5c085
5
5
  SHA512:
6
- metadata.gz: addf42eb6f8631ed0f37fdcfc662edcab0b8877c9316c661b7168e6af64b9e584b23787bf9d5d59372da60f19c7468b378f896279ca6b39d6139c1791f023dc5
7
- data.tar.gz: 6789334b80124b7a9bbe33631379a952db3849cd34aa46c2bcbdb922f3f9393e65cb93120cd72b35d3590ab3e0f5b42595c3be815db9ca15042d1bb1e8a42332
6
+ metadata.gz: 76647371a1ef4b6eaf3a4f57bd8bff607dda86f63f0f928e8969d9e9a25532eb456f7781740068f094b1fa4d9b505092ff7710e5fb16b9bdbd168207abc70f23
7
+ data.tar.gz: d87e9793f3802bde3d39d672c7c10900f5fd1298811bf6bb0fa129f577020c5e3cbae9d52ef5623e6d3e7933c322b2cdc555e824830cfa4707e48169fe92cd73
@@ -5,6 +5,7 @@ name: rake
5
5
  on:
6
6
  push:
7
7
  branches: [ master, main ]
8
+ tags: [ v* ]
8
9
  pull_request:
9
10
 
10
11
  jobs:
@@ -10,8 +10,9 @@ on:
10
10
  Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
11
11
  required: true
12
12
  default: 'skip'
13
- push:
14
- tags: [ v* ]
13
+ repository_dispatch:
14
+ types: [ do-release ]
15
+
15
16
 
16
17
  jobs:
17
18
  release:
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  .vscode/
10
+ /vendor/
10
11
  .rubocop-https---raw-githubusercontent-com-riboseinc-oss-guides-master-ci-rubocop-yml
11
12
 
12
13
  # rspec failure tracking
data/.rubocop.yml CHANGED
@@ -7,6 +7,6 @@ require: rubocop-rails
7
7
  inherit_from:
8
8
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
9
9
  AllCops:
10
- TargetRubyVersion: 2.5
10
+ TargetRubyVersion: 2.7
11
11
  Rails:
12
12
  Enabled: false
data/Gemfile CHANGED
@@ -5,7 +5,10 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in relaton_itu.gemspec
6
6
  gemspec
7
7
 
8
+ gem "equivalent-xml", "~> 0.6"
8
9
  gem "pry-byebug"
10
+ gem "rake", "~> 13.0"
11
+ gem "rspec", "~> 3.0"
9
12
  gem "ruby-jing"
10
13
  gem "simplecov"
11
14
  gem "vcr"
data/README.adoc CHANGED
@@ -69,7 +69,7 @@ item.to_xml bibdata: true
69
69
  </bibdata>"
70
70
  ----
71
71
 
72
- === Get code, and year
72
+ === Get document by code and year
73
73
  [source,ruby]
74
74
  ----
75
75
  RelatonItu::ItuBibliography.get("ITU-T L.163", "2018", {})
@@ -123,7 +123,7 @@ item.link
123
123
  #<RelatonBib::TypedUri:0x00007f82d665f0f8 @content=#<Addressable::URI:0xc184 URI:https://www.itu.inthttp//handle.itu.int/11.1002/1000/13786-en?locatt=format:pdf&auth>, @type="obp">]
124
124
  ----
125
125
 
126
- === Create bibliographic item from YAML
126
+ === Create a bibliographic item from YAML
127
127
  [source,ruby]
128
128
  ----
129
129
  hash = YAML.load_file 'spec/examples/itu_bib_item.yml'
@@ -135,6 +135,25 @@ RelatonItu::ItuBibliographicItem.from_hash hash
135
135
  ...
136
136
  ----
137
137
 
138
+ === Fetch data
139
+
140
+ This gem uses the (https://extranet.itu.int/brdocsearch) dataset as a data source. +
141
+
142
+ The method `RelatonItu::DataFetcher.fetch(output: "data", format: "yaml")` fetches all the documents from the dataset and saves them to the `./data` folder in YAML format.
143
+ Arguments:
144
+
145
+ - `output` - folder to save documents (default 'data').
146
+ - `format` - the format in which the documents are saved. Possible formats are: `yaml`, `xml`, `bibxxml` (default `yaml`).
147
+
148
+ [source,ruby]
149
+ ----
150
+ RelatonItu::DataFetcher.fetch output: "dir", format: "xml"
151
+ Started at: 2023-05-27 09:21:16 -0400
152
+ Stopped at: 2023-05-27 09:27:45 -0400
153
+ Done in: 390 sec.
154
+ => nil
155
+ ----
156
+
138
157
  == Development
139
158
 
140
159
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,147 @@
1
+ module RelatonItu
2
+ class DataFetcher
3
+ def initialize(output, format)
4
+ @output = output
5
+ @format = format
6
+ @ext = format.sub "bibxml", "xml"
7
+ end
8
+
9
+ def files
10
+ @files ||= []
11
+ end
12
+
13
+ def index
14
+ @index ||= Relaton::Index.find_or_create :itu, file: "index-v1.yaml"
15
+ end
16
+
17
+ # @return agent [Mechanize]
18
+ def agent
19
+ @agent ||= Mechanize.new
20
+ end
21
+
22
+ # @return workers [RelatonBib::WorkersPool]
23
+ def workers
24
+ return @workers if @workers
25
+
26
+ @workers = RelatonBib::WorkersPool.new 10
27
+ @workers.tap do |w|
28
+ w.worker { |row| parse_page(*row) }
29
+ end
30
+ end
31
+
32
+ # @param url [String]
33
+ # @param type [String]
34
+ def parse_page(url, type)
35
+ doc = agent.get url
36
+ bib = DataParserR.parse doc, url, type
37
+ write_file bib
38
+ rescue => e # rubocop:disable Style/RescueStandardError
39
+ warn e.message
40
+ warn e.backtrace
41
+ end
42
+
43
+ def self.fetch(output: "data", format: "yaml")
44
+ t1 = Time.now
45
+ puts "Started at: #{t1}"
46
+ FileUtils.mkdir_p output
47
+ new(output, format).fetch
48
+ t2 = Time.now
49
+ puts "Stopped at: #{t2}"
50
+ puts "Done in: #{(t2 - t1).round} sec."
51
+ end
52
+
53
+ def fetch
54
+ fetch_recommendation
55
+ fetch_question
56
+ fetch_report
57
+ fetch_handbook
58
+ fetch_resolution
59
+ workers.end
60
+ workers.result
61
+ index.save
62
+ end
63
+
64
+ def fetch_recommendation
65
+ url = "https://extranet.itu.int/brdocsearch/_layouts/15/inplview.aspx?" \
66
+ "List=%7B0661B581-2413-4E84-BAB2-77E6DB27AF7F%7D&" \
67
+ "View=%7BC81191DD-48C4-4881-9CB7-FB61C683FE98%7D&" \
68
+ "ViewCount=123&" \
69
+ "IsXslView=TRUE&" \
70
+ "IsCSR=TRUE&" \
71
+ "ListViewPageUrl=https%3A%2F%2Fextranet.itu.int%2Fbrdocsearch%2FR-REC%2FForms%2Ffolders_inforce.aspx&" \
72
+ "FolderCTID=0x012001"
73
+ json_index url, "recommendation"
74
+ end
75
+
76
+ def fetch_question
77
+ url = "https://extranet.itu.int/brdocsearch/R-QUE/Forms/folders_inforce.aspx"
78
+ html_index url, "question"
79
+ end
80
+
81
+ def fetch_report
82
+ url = "https://extranet.itu.int/brdocsearch/_layouts/15/inplview.aspx?" \
83
+ "List=%7B82E4A13D-C7F3-4844-9E8A-2463C4B7784F%7D&" \
84
+ "View=%7B94CC1561-E4AC-4317-B402-AA0AADD7F414%7D&" \
85
+ "ViewCount=407&" \
86
+ "IsXslView=TRUE&" \
87
+ "IsCSR=TRUE&" \
88
+ "ListViewPageUrl=https%3A%2F%2Fextranet.itu.int%2Fbrdocsearch%2FR-REP%2FForms%2FFolders%2520InForce.aspx&" \
89
+ "FolderCTID=0x012001"
90
+ json_index url, "technical-report"
91
+ end
92
+
93
+ def fetch_handbook
94
+ url = "https://extranet.itu.int/brdocsearch/R-HDB/Forms/Folders%20InForce.aspx"
95
+ html_index url, "handbook"
96
+ end
97
+
98
+ def fetch_resolution
99
+ url = "https://extranet.itu.int/brdocsearch/R-RES/Forms/Folders%20InForce.aspx"
100
+ html_index url, "resolution"
101
+ end
102
+
103
+ # #param url [String]
104
+ # @param type [String]
105
+ def json_index(url, type) # rubocop:disable Metrics/AbcSize
106
+ result = agent.post url
107
+ json = JSON.parse result.body
108
+ json["Row"].each { |row| workers << [row["serverurl.progid"].sub(/^1/, ""), type] }
109
+ return unless json["NextHref"]
110
+
111
+ nexturl = url.sub(/(Paged|FolderCTID)=.+/, json["NextHref"].match(/(?<=aspx\?).+/).to_s)
112
+ json_index nexturl, type
113
+ end
114
+
115
+ # #param url [String]
116
+ # @param type [String]
117
+ def html_index(url, type)
118
+ resp = agent.get url
119
+ result = Nokogiri::HTML resp.body
120
+ result.xpath("//table//table/tr[position() > 1]").each do |hit|
121
+ url = hit.at("td/a")[:onclick].match(%r{https://[^']+}).to_s
122
+ workers << [url, type]
123
+ end
124
+ end
125
+
126
+ # @param bib [RelatonItu::ItuBibliographicItem]
127
+ def write_file(bib) # rubocop:disable Metrics/AbcSize
128
+ id = bib.docidentifier[0].id.gsub(/[\s.]/, "_")
129
+ file = "#{@output}/#{id}.#{@ext}"
130
+ if files.include? file
131
+ warn "File #{file} exists."
132
+ else
133
+ files << file
134
+ end
135
+ index.add_or_update bib.docidentifier[0].id, file
136
+ File.write file, content(bib), encoding: "UTF-8"
137
+ end
138
+
139
+ def content(bib)
140
+ case @format
141
+ when "yaml" then bib.to_hash.to_yaml
142
+ when "xml" then bib.to_xml bibdata: true
143
+ when "bibxml" then bib.to_bibxml
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,94 @@
1
+ module RelatonItu
2
+ module DataParserR
3
+ extend self
4
+
5
+ #
6
+ # Parse ITU-R document.
7
+ #
8
+ # @param [Mechanize::Page] doc mechanize page
9
+ # @param [String] url document url
10
+ # @param [String] type document type
11
+ #
12
+ # @return [RelatonItu::ItuBibliographicItem] bibliographic item
13
+ #
14
+ def parse(doc, url, type)
15
+ RelatonItu::ItuBibliographicItem.new(
16
+ docid: fetch_docid(doc), title: fetch_title(doc),
17
+ abstract: fetch_abstract(doc), date: fetch_date(doc), language: ["en"],
18
+ link: fetch_link(url), script: ["Latn"], docstatus: fetch_status(doc),
19
+ type: "standard", doctype: type
20
+ )
21
+ end
22
+
23
+ # @param doc [Mechanize::Page]
24
+ # @return [Araay<RelatonBib::DocumentIdentifier>]
25
+ def fetch_docid(doc)
26
+ # id = doc.at('//h3[.="Number"]/parent::td/following-sibling::td[2]').text # .match(/^[^\s\(]+/).to_s
27
+ # %r{^(?<id1>[^\s\(\/]+(\/\d+)?)(\/(?<id2>\w+[^\s\(]+))?} =~ id
28
+ id = doc.at('//div[@id="idDocSetPropertiesWebPart"]/h2').text.match(/^R-\w+-([^-]+(?:-\d{1,3})?)/)[1]
29
+ [RelatonBib::DocumentIdentifier.new(type: "ITU", id: "ITU-R #{id}", primary: true)]
30
+ # docid << RelatonBib::DocumentIdentifier.new(type: 'ITU', id: id2) if id2
31
+ # docid
32
+ end
33
+
34
+ # @param doc [Mechanize::Page]
35
+ # @return [Araay<RelatonBib::TypedTitleString>]
36
+ def fetch_title(doc)
37
+ content = doc.at('//h3[.="Title"]/parent::td/following-sibling::td[2]').text
38
+ [RelatonBib::TypedTitleString.new(type: "main", content: content, language: "en", script: "Latn")]
39
+ end
40
+
41
+ # @param doc [Mechanize::Page]
42
+ # @return [Array<RelatonBib::FormattedString>]
43
+ def fetch_abstract(doc)
44
+ doc.xpath('//h3[.="Observation"]/parent::td/following-sibling::td[2]').map do |a|
45
+ c = a.text.strip
46
+ RelatonBib::FormattedString.new content: c, language: "en", script: "Latn" unless c.empty?
47
+ end.compact
48
+ end
49
+
50
+ # @param doc [Mechanize::Page]
51
+ # @return [Araay<RelatonBib::BibliographicDate>]
52
+ def fetch_date(doc)
53
+ dates = []
54
+ date = doc.at('//h3[.="Approval_Date"]/parent::td/following-sibling::td[2]',
55
+ '//h3[.="Approval date"]/parent::td/following-sibling::td[2]',
56
+ '//h3[.="Approval year"]/parent::td/following-sibling::td[2]')
57
+ dates << parse_date(date.text, "confirmed") if date
58
+
59
+ date = doc.at('//h3[.="Version year"]/parent::td/following-sibling::td[2]')
60
+ dates << parse_date(date.text, "updated") if date
61
+ date = doc.at('//div[@id="idDocSetPropertiesWebPart"]/h2').text.match(/(?<=-)(19|20)\d{2}/)
62
+ dates << parse_date(date.to_s, "published") if date
63
+ dates
64
+ end
65
+
66
+ # @param date [String]
67
+ # @param type [String]
68
+ # @return [RelatonBib::BibliographicDate]
69
+ def parse_date(date, type)
70
+ d = case date
71
+ # when /^\d{4}$/ then date
72
+ when /(\d{4})(\d{2})/ then "#{$1}-#{$2}"
73
+ when %r{(\d{1,2})/(\d{1,2})/(\d{4})} then "#{$3}-#{$1}-#{$2}"
74
+ else date
75
+ end
76
+ RelatonBib::BibliographicDate.new(type: type, on: d)
77
+ end
78
+
79
+ # @param url [String]
80
+ # @return [Array<RelatonBib::TypedUri>]
81
+ def fetch_link(url)
82
+ [RelatonBib::TypedUri.new(type: "src", content: url)]
83
+ end
84
+
85
+ # @param doc [Mechanize::Page]
86
+ # @return [RelatonBib::DocumentStatus, nil]
87
+ def fetch_status(doc)
88
+ s = doc.at('//h3[.="Status"]/parent::td/following-sibling::td[2]')
89
+ return unless s
90
+
91
+ RelatonBib::DocumentStatus.new stage: s.text
92
+ end
93
+ end
94
+ end
@@ -8,7 +8,7 @@ module RelatonItu
8
8
  # Parse page.
9
9
  # @return [RelatonItu::ItuBibliographicItem]
10
10
  def fetch
11
- @fetch ||= Scrapper.parse_page self, hit_collection.gi_imp
11
+ @fetch ||= Scrapper.parse_page self, imp: hit_collection.gi_imp
12
12
  end
13
13
  end
14
14
  end
@@ -8,6 +8,8 @@ module RelatonItu
8
8
  # Page of hit collection.
9
9
  class HitCollection < RelatonBib::HitCollection
10
10
  DOMAIN = "https://www.itu.int"
11
+ GH_ITU_R = "https://raw.githubusercontent.com/relaton/relaton-data-itu-r/master/"
12
+ INDEX_FILE = "index-v1.yaml"
11
13
 
12
14
  # @return [TrueClass, FalseClass]
13
15
  attr_reader :gi_imp
@@ -23,6 +25,7 @@ module RelatonItu
23
25
  @agent = Mechanize.new
24
26
  agent.user_agent_alias = "Mac Safari"
25
27
  @gi_imp = /\.Imp\d/.match?(ref)
28
+ @array = []
26
29
 
27
30
  case ref
28
31
  when /^(ITU-T|ITU-R\sRR)/
@@ -42,16 +45,14 @@ module RelatonItu
42
45
  end
43
46
 
44
47
  # @param ref [String] a document ref
45
- def request_document(ref) # rubocop:todo Metrics/MethodLength
46
- uri = URI::HTTPS.build(
47
- host: "raw.githubusercontent.com",
48
- path: "/relaton/relaton-data-itu-r/master/data/#{ref.gsub(/[\s.]/, '_')}.yaml",
49
- )
48
+ def request_document(ref) # rubocop:todo Metrics/MethodLength, Metrics/AbcSize
49
+ index = Relaton::Index.find_or_create :itu, url: "#{GH_ITU_R}index-v1.zip", file: INDEX_FILE
50
+ row = index.search(ref).min_by { |i| i[:id] }
51
+ return unless row
52
+
53
+ uri = URI("#{GH_ITU_R}#{row[:file]}")
50
54
  resp = Net::HTTP.get_response(uri)
51
- if resp.code == "404"
52
- @array = []
53
- return
54
- end
55
+ return if resp.code == "404"
55
56
 
56
57
  hash = YAML.safe_load resp.body
57
58
  item_hash = HashConverter.hash_to_bib(hash)
@@ -7,6 +7,7 @@ module RelatonItu
7
7
  @prefix = "ITU"
8
8
  @defaultprefix = %r{^ITU\s}
9
9
  @idtype = "ITU"
10
+ @datasets = %w[itu-r]
10
11
  end
11
12
 
12
13
  # @param code [String]
@@ -17,6 +18,18 @@ module RelatonItu
17
18
  ::RelatonItu::ItuBibliography.get(code, date, opts)
18
19
  end
19
20
 
21
+ #
22
+ # Fetch all the documents from https://extranet.itu.int/brdocsearch/
23
+ #
24
+ # @param [String] source source name (itu-r)
25
+ # @param [Hash] opts
26
+ # @option opts [String] :output directory to output documents, default is data
27
+ # @option opts [String] :format output format, default is yaml
28
+ #
29
+ def fetch_data(_source, opts)
30
+ DataFetcher.fetch(**opts)
31
+ end
32
+
20
33
  # @param xml [String]
21
34
  # @return [RelatonItu::ItuBibliographicItem]
22
35
  def from_xml(xml)
@@ -34,5 +47,12 @@ module RelatonItu
34
47
  def grammar_hash
35
48
  @grammar_hash ||= ::RelatonItu.grammar_hash
36
49
  end
50
+
51
+ #
52
+ # Remove index file
53
+ #
54
+ def remove_index_file
55
+ Relaton::Index.find_or_create(:itu, url: true, file: HitCollection::INDEX_FILE).remove_file
56
+ end
37
57
  end
38
58
  end
@@ -27,7 +27,7 @@ module RelatonItu
27
27
  # Parse page.
28
28
  # @param hit [RelatonItu::Hit]
29
29
  # @return [Hash]
30
- def parse_page(hit, imp = false) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
30
+ def parse_page(hit, imp: false) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
31
31
  doc = get_page hit
32
32
  return unless doc.code == "200"
33
33
 
@@ -1,3 +1,3 @@
1
1
  module RelatonItu
2
- VERSION = "1.14.1".freeze
2
+ VERSION = "1.14.2".freeze
3
3
  end
data/lib/relaton_itu.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "mechanize"
2
+ require "digest/md5"
3
+ require "relaton/index"
2
4
  require "relaton_itu/version"
3
5
  require "relaton_itu/itu_bibliography"
4
- require "digest/md5"
6
+ require "relaton_itu/data_fetcher"
7
+ require "relaton_itu/data_parser_r"
5
8
 
6
9
  module RelatonItu
7
10
  class Error < StandardError; end
data/relaton-itu.gemspec CHANGED
@@ -1,5 +1,4 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "relaton_itu/version"
5
4
 
@@ -9,10 +8,10 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ["Ribose Inc."]
10
9
  spec.email = ["open.source@ribose.com"]
11
10
 
12
- spec.summary = "RelatonItu: retrieve ITU Standards for bibliographic use "\
13
- "using the BibliographicItem model"
14
- spec.description = "RelatonItu: retrieve ITU Standards for bibliographic use "\
15
- "using the BibliographicItem model"
11
+ spec.summary = "RelatonItu: retrieve ITU Standards for bibliographic " \
12
+ "use using the BibliographicItem model"
13
+ spec.description = "RelatonItu: retrieve ITU Standards for bibliographic " \
14
+ "use using the BibliographicItem model"
16
15
  spec.homepage = "https://github.com/metanorma/relaton-itu"
17
16
  spec.license = "MIT"
18
17
 
@@ -24,12 +23,9 @@ Gem::Specification.new do |spec|
24
23
  spec.bindir = "exe"
25
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
25
  spec.require_paths = ["lib"]
27
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
28
-
29
- spec.add_development_dependency "equivalent-xml", "~> 0.6"
30
- spec.add_development_dependency "rake", "~> 13.0"
31
- spec.add_development_dependency "rspec", "~> 3.0"
26
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
32
27
 
33
28
  spec.add_dependency "mechanize", "~> 2.8.0"
34
29
  spec.add_dependency "relaton-bib", "~> 1.14.0"
30
+ spec.add_dependency "relaton-index", "~> 0.2.0"
35
31
  end
metadata CHANGED
@@ -1,85 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.1
4
+ version: 1.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-09 00:00:00.000000000 Z
11
+ date: 2023-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: equivalent-xml
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.6'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.6'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '13.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '13.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
14
+ name: mechanize
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - "~>"
46
18
  - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
19
+ version: 2.8.0
20
+ type: :runtime
49
21
  prerelease: false
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
24
  - - "~>"
53
25
  - !ruby/object:Gem::Version
54
- version: '3.0'
26
+ version: 2.8.0
55
27
  - !ruby/object:Gem::Dependency
56
- name: mechanize
28
+ name: relaton-bib
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: 2.8.0
33
+ version: 1.14.0
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: 2.8.0
40
+ version: 1.14.0
69
41
  - !ruby/object:Gem::Dependency
70
- name: relaton-bib
42
+ name: relaton-index
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: 1.14.0
47
+ version: 0.2.0
76
48
  type: :runtime
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: 1.14.0
54
+ version: 0.2.0
83
55
  description: 'RelatonItu: retrieve ITU Standards for bibliographic use using the BibliographicItem
84
56
  model'
85
57
  email:
@@ -106,6 +78,8 @@ files:
106
78
  - grammars/relaton-itu-compile.rng
107
79
  - grammars/relaton-itu.rng
108
80
  - lib/relaton_itu.rb
81
+ - lib/relaton_itu/data_fetcher.rb
82
+ - lib/relaton_itu/data_parser_r.rb
109
83
  - lib/relaton_itu/editorial_group.rb
110
84
  - lib/relaton_itu/hash_converter.rb
111
85
  - lib/relaton_itu/hit.rb
@@ -131,14 +105,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
105
  requirements:
132
106
  - - ">="
133
107
  - !ruby/object:Gem::Version
134
- version: 2.5.0
108
+ version: 2.7.0
135
109
  required_rubygems_version: !ruby/object:Gem::Requirement
136
110
  requirements:
137
111
  - - ">="
138
112
  - !ruby/object:Gem::Version
139
113
  version: '0'
140
114
  requirements: []
141
- rubygems_version: 3.1.6
115
+ rubygems_version: 3.3.26
142
116
  signing_key:
143
117
  specification_version: 4
144
118
  summary: 'RelatonItu: retrieve ITU Standards for bibliographic use using the BibliographicItem