relaton-cie 1.13.0 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ module RelatonCie
2
+ class BibliographicItem < RelatonBib::BibliographicItem
3
+ def ext_schema
4
+ @ext_schema ||= schema_versions["relaton-model-cie"]
5
+ end
6
+ end
7
+ end
@@ -13,14 +13,14 @@ module RelatonCie
13
13
  # @param code [String] the ECMA standard Code to look up (e..g "ECMA-6")
14
14
  # @param year [String] not used
15
15
  # @param opts [Hash] not used
16
- # @return [RelatonBib::BibliographicItem] Relaton of reference
16
+ # @return [RelatonCie::BibliographicItem] Relaton of reference
17
17
  def get(code, _year = nil, _opts = {})
18
18
  warn "[relaton-cie] (\"#{code}\") fetching..."
19
19
  result = search code
20
20
  if result
21
21
  warn "[relaton-cie] (\"#{code}\") found #{result.docidentifier.first.id}"
22
22
  else
23
- warn "[relaton-cie] WARNING no match found online for #{code}. "\
23
+ warn "[relaton-cie] WARNING no match found online for #{code}. " \
24
24
  "The code must be exactly like it is on the standards website."
25
25
  end
26
26
  result
@@ -10,35 +10,64 @@ module RelatonCie
10
10
  URL = "https://www.techstreet.com/cie/searches/31156444?page=1&per_page=100"
11
11
 
12
12
  def initialize(output, format)
13
- @agent = Mechanize.new
14
13
  @output = output
15
14
  @format = format
15
+ @files = []
16
+ @ext = format == "bibxml" ? "xml" : format
17
+ end
18
+
19
+ def agent
20
+ @agent ||= Mechanize.new
21
+ end
22
+
23
+ def index
24
+ @index ||= Relaton::Index.find_or_create :cie, file: "index-v1.yaml"
16
25
  end
17
26
 
18
27
  # @param hit [Nokogiri::HTML::Document]
19
28
  # @param doc [Mechanize::Page]
20
29
  # @return [Array<RelatonBib::DocumentIdentifier>]
21
- def fetch_docid(hit, doc) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
22
- code = hit.at("h3/a").text.strip.sub(/\u25b9/, "").gsub(" / ", "/")
30
+ def fetch_docid(hit, doc)
31
+ code, code2 = parse_code hit, doc
32
+ docid = [RelatonBib::DocumentIdentifier.new(type: "CIE", id: code, primary: true)]
33
+ if code2
34
+ type2 = code2.match(/\w+/).to_s
35
+ docid << RelatonBib::DocumentIdentifier.new(type: type2, id: code2.strip)
36
+ end
37
+ isbn = doc.at('//dt[contains(.,"ISBN")]/following-sibling::dd')
38
+ docid << RelatonBib::DocumentIdentifier.new(type: "ISBN", id: isbn.text.strip) if isbn
39
+ docid
40
+ end
41
+
42
+ def parse_code(hit, doc = nil)
43
+ code = hit.at("h3/a").text.strip.squeeze(" ").sub(/\u25b9/, "").gsub(" / ", "/")
23
44
  c2idx = %r{(?:\(|/)(?<c2>(?:ISO|IEC)\s[^()]+)} =~ code
24
45
  code = code[0...c2idx].strip if c2idx
46
+ [primary_code(code, doc), c2]
47
+ end
48
+
49
+ def primary_code(code, doc = nil)
25
50
  /^(?<code1>[^(]+)(?:\((?<code2>\w+\d+,(?:\sPages)?[^)]+))?/ =~ code
26
- if code1.match?(/^CIE/)
27
- c = code1.size > 25 && code2 ? "CIE #{code2.sub(/,(\sPages)?/, '')}" : code1
28
- add = doc.at("//hgroup/h2")&.text&.match(/(Add)endum\s(\d+)$/)
29
- c += " #{add[1]} #{add[2]}" if add
30
- elsif (pcode = doc.at('//dt[.="Product Code(s):"]/following-sibling::dd'))
31
- c = "CIE #{pcode.text.strip.match(/[^,]+/)}"
51
+ if code1&.match?(/^CIE/)
52
+ parse_cie_code code1, code2, doc
53
+ elsif (pcode = doc&.at('//dt[.="Product Code(s):"]/following-sibling::dd'))
54
+ "CIE #{pcode.text.strip.match(/[^,]+/)}"
32
55
  else
33
- num = code.match(/(?<=\()\w{2}\d+,.+(?=\))/).to_s.gsub(/,(?=\s)/, "")
34
- .gsub(/,(?=\S)/, " ")
35
- c = "CIE #{num}"
56
+ num = code.match(/(?<=\()\w{2}\d+,.+(?=\))/).to_s.gsub(/,(?=\s)/, "").gsub(/,(?=\S)/, " ")
57
+ "CIE #{num}"
36
58
  end
37
- docid = [RelatonBib::DocumentIdentifier.new(type: "CIE", id: c, primary: true)]
38
- isbn = doc.at('//dt[contains(.,"ISBN")]/following-sibling::dd')
39
- docid << RelatonBib::DocumentIdentifier.new(type: c2.match(/\w+/).to_s, id: c2.strip) if c2
40
- docid << RelatonBib::DocumentIdentifier.new(type: "ISBN", id: isbn.text.strip) if isbn
41
- docid
59
+ end
60
+
61
+ def parse_cie_code(code1, code2, doc = nil) # rubocop:disable Metrics/CyclomaticComplexity
62
+ code = code1.size > 25 && code2 ? "CIE #{code2.sub(/,(\sPages)?/, '')}" : code1
63
+ add = doc&.at("//hgroup/h2")&.text&.match(/(Add)endum\s(\d+)$/)
64
+ return code unless add
65
+
66
+ "#{code} #{add[1]} #{add[2]}"
67
+ end
68
+
69
+ def fetch_docnumber(hit)
70
+ parse_code(hit).first.sub(/\w+\s/, "")
42
71
  end
43
72
 
44
73
  # @param doc [Mechanize::Page]
@@ -63,7 +92,7 @@ module RelatonCie
63
92
  # @param doc [Mechanize::Page]
64
93
  # @return [String]
65
94
  def fetch_edition(doc)
66
- doc.at('//dt[.="Edition:"]/following-sibling::dd')&.text&.match(/^\d+(?=th)/)&.to_s
95
+ doc.at('//dt[.="Edition:"]/following-sibling::dd')&.text&.match(/^\d+(?=(st|nd|rd|th))/)&.to_s
67
96
  end
68
97
 
69
98
  # @param doc [Mechanize::Page]
@@ -78,7 +107,7 @@ module RelatonCie
78
107
  on = ref.at("p/time")
79
108
  date = [RelatonBib::BibliographicDate.new(type: "published", on: on[:datetime])]
80
109
  link = [RelatonBib::TypedUri.new(type: "src", content: url)]
81
- bibitem = RelatonBib::BibliographicItem.new docid: docid, title: title, link: link, date: date
110
+ bibitem = BibliographicItem.new docid: docid, title: title, link: link, date: date
82
111
  type = ref.at('//li/i[contains(@class,"historical")]') ? "updates" : "updatedBy"
83
112
  { type: type, bibitem: bibitem }
84
113
  end
@@ -103,14 +132,14 @@ module RelatonCie
103
132
  # @param doc [Mechanize::Page]
104
133
  # @return [Array<Hash>]
105
134
  def fetch_contributor(doc) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity
106
- authors = doc.xpath('//hgroup/p[not(@class="pub_date")]').text
135
+ authors = doc.xpath('//hgroup/p[not(@class="pub_date")]').text.gsub "\"", ""
107
136
  contribs = []
108
137
  until authors.empty?
109
138
  /^(?<sname1>\S+(?:\sder?\s)?[^\s,]+)
110
139
  (?:,?\s(?<sname2>[\w-]{2,})(?=,\s+\w\.))?
111
140
  (?:,?\s(?<fname>[\w-]{2,})(?!,\s+\w\.))?
112
141
  (?:(?:\s?,\s?|\s)(?<init>(?:\w(?:\s?\.|\s|,|$)[\s-]?)+))?
113
- (?:(?:,\s?|\s|\.|(?<=\s))(?:and\s)?)?/x =~ authors
142
+ (?:(?:,\s*|\s+|\.|(?<=\s))(?:and\s)?)?/x =~ authors
114
143
  raise StandardError, "Author name not found in \"#{authors}\"" unless $LAST_MATCH_INFO
115
144
 
116
145
  authors.sub! $LAST_MATCH_INFO.to_s, ""
@@ -131,25 +160,33 @@ module RelatonCie
131
160
  contribs << { entity: org, role: [{ type: "publisher" }] }
132
161
  end
133
162
 
134
- # @param bib [RelatonItu::ItuBibliographicItem]
135
- def write_file(bib)
163
+ # @param bib [RelatonCie::BibliographicItem]
164
+ def write_file(bib) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
136
165
  id = bib.docidentifier[0].id.gsub(%r{[/\s\-:.]}, "_")
137
166
  file = "#{@output}/#{id.upcase}.#{@format}"
138
- # if File.exist? file
139
- # warn "File #{file} exists. Docid: #{bib.docidentifier[0].id}"
140
- # warn "Link: #{bib.link.detect { |l| l.type == 'src' }.content}"
141
- # else
142
- out = @format == "xml" ? bib.to_xml(bibdata: true) : bib.to_hash.to_yaml
143
- File.write file, out, encoding: "UTF-8"
144
- # end
167
+ if @files.include? file
168
+ warn "File #{file} exists. Docid: #{bib.docidentifier[0].id}"
169
+ warn "Link: #{bib.link.detect { |l| l.type == 'src' }.content}"
170
+ else @files << file
171
+ end
172
+ index.add_or_update bib.docidentifier[0].id, file
173
+ File.write file, content(bib), encoding: "UTF-8"
174
+ end
175
+
176
+ def content(bib)
177
+ case @format
178
+ when "xml" then bib.to_xml(bibdata: true)
179
+ when "yaml" then bib.to_hash.to_yaml
180
+ when "bibxml" then bib.to_bibxml
181
+ end
145
182
  end
146
183
 
147
184
  # @param hit [Nokogiri::HTML::Element]
148
185
  def parse_page(hit) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
149
186
  url = "https://www.techstreet.com#{hit.at('h3/a')[:href]}"
150
- doc = time_req { @agent.get url }
151
- item = RelatonBib::BibliographicItem.new(
152
- type: "standard", link: fetch_link(url), fetched: Date.today.to_s,
187
+ doc = time_req { agent.get url }
188
+ item = BibliographicItem.new(
189
+ type: "standard", link: fetch_link(url), docnumber: fetch_docnumber(hit),
153
190
  docid: fetch_docid(hit, doc), title: fetch_title(doc),
154
191
  abstract: fetch_abstract(doc), date: fetch_date(doc),
155
192
  edition: fetch_edition(doc), contributor: fetch_contributor(doc),
@@ -164,10 +201,14 @@ module RelatonCie
164
201
  end
165
202
 
166
203
  def fetch(url)
167
- result = time_req { @agent.get url }
204
+ result = time_req { agent.get url }
168
205
  result.xpath("//li[@data-product]").each { |hit| parse_page hit }
169
206
  np = result.at '//a[@class="next_page"]'
170
- fetch "https://www.techstreet.com#{np[:href]}" if np
207
+ if np
208
+ fetch "https://www.techstreet.com#{np[:href]}"
209
+ else
210
+ index.save
211
+ end
171
212
  end
172
213
 
173
214
  def time_req
@@ -182,7 +223,7 @@ module RelatonCie
182
223
  t1 = Time.now
183
224
  puts "Started at: #{t1}"
184
225
 
185
- FileUtils.mkdir output unless Dir.exist? output
226
+ FileUtils.mkdir_p output
186
227
  new(output, format).fetch URL
187
228
 
188
229
  t2 = Time.now
@@ -0,0 +1,11 @@
1
+ module RelatonCie
2
+ class HashConverter < RelatonBib::HashConverter
3
+ class << self
4
+ # @param item_hash [Hash]
5
+ # @return [RelatonCie::BibliographicItem]
6
+ def bib_item(item_hash)
7
+ BibliographicItem.new(**item_hash)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -13,7 +13,7 @@ module RelatonCie
13
13
  # @param code [String]
14
14
  # @param date [String, NilClass] year
15
15
  # @param opts [Hash]
16
- # @return [RelatonBib::BibliographicItem]
16
+ # @return [RelatonCie::BibliographicItem]
17
17
  def get(code, date, opts)
18
18
  ::RelatonCie::CieBibliography.get(code, date, opts)
19
19
  end
@@ -31,21 +31,28 @@ module RelatonCie
31
31
  end
32
32
 
33
33
  # @param xml [String]
34
- # @return [RelatonBib::BibliographicItem]
34
+ # @return [RelatonCie::BibliographicItem]
35
35
  def from_xml(xml)
36
- ::RelatonBib::XMLParser.from_xml xml
36
+ ::RelatonCie::XMLParser.from_xml xml
37
37
  end
38
38
 
39
39
  # @param hash [Hash]
40
- # @return [RelatonBib::BibliographicItem]
40
+ # @return [RelatonCie::BibliographicItem]
41
41
  def hash_to_bib(hash)
42
- ::RelatonBib::BibliographicItem.from_hash hash
42
+ ::RelatonCie::BibliographicItem.from_hash hash
43
43
  end
44
44
 
45
45
  # Returns hash of XML grammar
46
46
  # @return [String]
47
47
  def grammar_hash
48
- @grammar_hash ||= ::RelatonEcma.grammar_hash
48
+ @grammar_hash ||= ::RelatonCie.grammar_hash
49
+ end
50
+
51
+ #
52
+ # Remove index file
53
+ #
54
+ def remove_index_file
55
+ Relaton::Index.find_or_create(:cie, url: true, file: Scrapper::INDEX_FILE).remove_file
49
56
  end
50
57
  end
51
58
  end
@@ -1,13 +1,17 @@
1
1
  module RelatonCie
2
2
  module Scrapper
3
- ENDPOINT = "https://raw.githubusercontent.com/relaton/relaton-data-cie/master/data/".freeze
3
+ ENDPOINT = "https://raw.githubusercontent.com/relaton/relaton-data-cie/master/".freeze
4
+ INDEX_FILE = "index-v1.yaml".freeze
4
5
 
5
6
  class << self
6
7
  # @param code [String]
7
- # @return [RelatonBib::BibliographicItem]
8
+ # @return [RelatonCie::BibliographicItem]
8
9
  def scrape_page(code)
9
- url = "#{ENDPOINT}#{code.gsub(/[\/\s\-:.]/, '_').upcase}.yaml"
10
- parse_page url
10
+ index = Relaton::Index.find_or_create :cie, url: "#{ENDPOINT}index-v1.zip", file: INDEX_FILE
11
+ row = index.search(code).min_by { |r| r[:id] }
12
+ return unless row
13
+
14
+ parse_page "#{ENDPOINT}#{row[:file]}"
11
15
  rescue OpenURI::HTTPError => e
12
16
  return if e.io.status.first == "404"
13
17
 
@@ -17,11 +21,12 @@ module RelatonCie
17
21
  private
18
22
 
19
23
  # @param url [String]
20
- # @retrurn [RelatonBib::BibliographicItem]
24
+ # @retrurn [RelatoCie::BibliographicItem]
21
25
  def parse_page(url)
22
26
  doc = OpenURI.open_uri url
23
27
  bib_hash = RelatonBib::HashConverter.hash_to_bib YAML.safe_load(doc)
24
- RelatonBib::BibliographicItem.new(**bib_hash)
28
+ bib_hash[:fetched] = Date.today.to_s
29
+ RelatonCie::BibliographicItem.new(**bib_hash)
25
30
  end
26
31
  end
27
32
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonCie
2
- VERSION = "1.13.0".freeze
2
+ VERSION = "1.14.1".freeze
3
3
  end
@@ -0,0 +1,13 @@
1
+ module RelatonCie
2
+ class XMLParser < RelatonBib::XMLParser
3
+ class << self
4
+ private
5
+
6
+ # @param item_hash [Hash]
7
+ # @return [RelatonCie::BibliographicItem]
8
+ def bib_item(item_hash)
9
+ BibliographicItem.new(**item_hash)
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/relaton_cie.rb CHANGED
@@ -1,10 +1,16 @@
1
1
  require "nokogiri"
2
2
  require "open-uri"
3
+ # require "parslet"
4
+ require "relaton/index"
3
5
  require "relaton_bib"
6
+ # require "relaton_bib/name_parser"
4
7
  require "relaton_cie/version"
8
+ require "relaton_cie/bibliographic_item"
5
9
  require "relaton_cie/cie_bibliography"
6
10
  require "relaton_cie/scrapper"
7
11
  require "relaton_cie/data_fetcher"
12
+ require "relaton_cie/xml_parser"
13
+ require "relaton_cie/hash_converter"
8
14
 
9
15
  module RelatonCie
10
16
  # Returns hash of XML reammar
data/relaton_cie.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  DESCRIPTION
17
17
  spec.homepage = "https://github.com/metanorma/relaton-cie"
18
18
  spec.license = "BSD-2-Clause"
19
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
19
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
20
20
 
21
21
  spec.metadata["homepage_uri"] = spec.homepage
22
22
 
@@ -29,13 +29,8 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_development_dependency "equivalent-xml", "~> 0.6"
33
- spec.add_development_dependency "pry-byebug"
34
- spec.add_development_dependency "ruby-jing"
35
- spec.add_development_dependency "simplecov"
36
- spec.add_development_dependency "vcr"
37
- spec.add_development_dependency "webmock"
38
-
39
32
  spec.add_dependency "mechanize", "~> 2.8.0"
40
- spec.add_dependency "relaton-bib", "~> 1.13.0"
33
+ spec.add_dependency "parslet", "~> 2.0.0"
34
+ spec.add_dependency "relaton-bib", "~> 1.14.0"
35
+ spec.add_dependency "relaton-index", "~> 0.2.0"
41
36
  end
metadata CHANGED
@@ -1,127 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-cie
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-21 00:00:00.000000000 Z
11
+ date: 2023-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: equivalent-xml
14
+ name: mechanize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
20
- type: :development
19
+ version: 2.8.0
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.6'
27
- - !ruby/object:Gem::Dependency
28
- name: pry-byebug
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: ruby-jing
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: simplecov
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: vcr
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
26
+ version: 2.8.0
83
27
  - !ruby/object:Gem::Dependency
84
- name: webmock
28
+ name: parslet
85
29
  requirement: !ruby/object:Gem::Requirement
86
30
  requirements:
87
- - - ">="
31
+ - - "~>"
88
32
  - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
33
+ version: 2.0.0
34
+ type: :runtime
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
- - - ">="
38
+ - - "~>"
95
39
  - !ruby/object:Gem::Version
96
- version: '0'
40
+ version: 2.0.0
97
41
  - !ruby/object:Gem::Dependency
98
- name: mechanize
42
+ name: relaton-bib
99
43
  requirement: !ruby/object:Gem::Requirement
100
44
  requirements:
101
45
  - - "~>"
102
46
  - !ruby/object:Gem::Version
103
- version: 2.8.0
47
+ version: 1.14.0
104
48
  type: :runtime
105
49
  prerelease: false
106
50
  version_requirements: !ruby/object:Gem::Requirement
107
51
  requirements:
108
52
  - - "~>"
109
53
  - !ruby/object:Gem::Version
110
- version: 2.8.0
54
+ version: 1.14.0
111
55
  - !ruby/object:Gem::Dependency
112
- name: relaton-bib
56
+ name: relaton-index
113
57
  requirement: !ruby/object:Gem::Requirement
114
58
  requirements:
115
59
  - - "~>"
116
60
  - !ruby/object:Gem::Version
117
- version: 1.13.0
61
+ version: 0.2.0
118
62
  type: :runtime
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
65
  requirements:
122
66
  - - "~>"
123
67
  - !ruby/object:Gem::Version
124
- version: 1.13.0
68
+ version: 0.2.0
125
69
  description: "RelatonEcma: retrieve CIE Standards for bibliographic use \nusing the
126
70
  BibliographicItem model.\n"
127
71
  email:
@@ -131,6 +75,7 @@ extensions: []
131
75
  extra_rdoc_files: []
132
76
  files:
133
77
  - ".github/workflows/rake.yml"
78
+ - ".github/workflows/release.yml"
134
79
  - ".gitignore"
135
80
  - ".rspec"
136
81
  - ".rubocop.yml"
@@ -142,22 +87,26 @@ files:
142
87
  - bin/rspec
143
88
  - bin/setup
144
89
  - grammars/basicdoc.rng
90
+ - grammars/biblio-standoc.rng
145
91
  - grammars/biblio.rng
146
- - grammars/isodoc.rng
147
- - grammars/reqt.rng
92
+ - grammars/relaton-cie-compile.rng
93
+ - grammars/relaton-cie.rng
148
94
  - lib/relaton_cie.rb
95
+ - lib/relaton_cie/bibliographic_item.rb
149
96
  - lib/relaton_cie/cie_bibliography.rb
150
97
  - lib/relaton_cie/data_fetcher.rb
98
+ - lib/relaton_cie/hash_converter.rb
151
99
  - lib/relaton_cie/processor.rb
152
100
  - lib/relaton_cie/scrapper.rb
153
101
  - lib/relaton_cie/version.rb
102
+ - lib/relaton_cie/xml_parser.rb
154
103
  - relaton_cie.gemspec
155
104
  homepage: https://github.com/metanorma/relaton-cie
156
105
  licenses:
157
106
  - BSD-2-Clause
158
107
  metadata:
159
108
  homepage_uri: https://github.com/metanorma/relaton-cie
160
- post_install_message:
109
+ post_install_message:
161
110
  rdoc_options: []
162
111
  require_paths:
163
112
  - lib
@@ -165,15 +114,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
114
  requirements:
166
115
  - - ">="
167
116
  - !ruby/object:Gem::Version
168
- version: 2.5.0
117
+ version: 2.7.0
169
118
  required_rubygems_version: !ruby/object:Gem::Requirement
170
119
  requirements:
171
120
  - - ">="
172
121
  - !ruby/object:Gem::Version
173
122
  version: '0'
174
123
  requirements: []
175
- rubygems_version: 3.2.3
176
- signing_key:
124
+ rubygems_version: 3.3.26
125
+ signing_key:
177
126
  specification_version: 4
178
127
  summary: 'RelatonEcma: retrieve CIE Standards for bibliographic use using the BibliographicItem
179
128
  model.'