relaton-iec 1.18.0 → 1.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +7 -14
- data/grammars/basicdoc.rng +3 -0
- data/lib/relaton_iec/basic_block/alignment.rb +1 -2
- data/lib/relaton_iec/basic_block/image.rb +3 -4
- data/lib/relaton_iec/basic_block/reference_format.rb +2 -2
- data/lib/relaton_iec/basic_block/stem.rb +1 -2
- data/lib/relaton_iec/basic_block/table.rb +4 -4
- data/lib/relaton_iec/basic_block/text_element.rb +1 -2
- data/lib/relaton_iec/data_fetcher.rb +5 -4
- data/lib/relaton_iec/document_type.rb +1 -1
- data/lib/relaton_iec/hash_converter.rb +4 -0
- data/lib/relaton_iec/iec_bibliographic_item.rb +8 -4
- data/lib/relaton_iec/iec_bibliography.rb +12 -14
- data/lib/relaton_iec/util.rb +1 -4
- data/lib/relaton_iec/version.rb +1 -1
- data/lib/relaton_iec/xml_parser.rb +4 -0
- data/lib/relaton_iec.rb +0 -1
- data/relaton_iec.gemspec +2 -1
- metadata +19 -6
- data/lib/relaton_iec/config.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c60902215d917d1699b588d576e9b0b775bb266617eb2f75f4fb8c1282d335c9
|
4
|
+
data.tar.gz: acc1c1bd4ad7fadacd3585eadef5b23bee9004568489164e2eb2638dde6aca2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d84bf94de3ee0ab5d8572817422a934a06324babbe382442ed43a445ea52085ef884e586eb5f0cab43a5c0a86062f6501c3945a400244cf89ed089651d8c585
|
7
|
+
data.tar.gz: 54a7652ce95dc6cfe26a722af5f0e5ba7f4f45968e71e0abf1db1e3f00a5f9018d8981e5a2219e972d6192defebfd760770e5832322c960db7c1293473e776be
|
data/README.adoc
CHANGED
@@ -31,20 +31,6 @@ Or install it yourself as:
|
|
31
31
|
|
32
32
|
== Usage
|
33
33
|
|
34
|
-
=== Configuration
|
35
|
-
|
36
|
-
Configuration is optional. The available option is `logger` which is a `Logger` instance. By default, the logger is `Logger.new($stderr)` with `Logger::WARN` level. To change the logger level, use `RelatonIec.configure` block.
|
37
|
-
|
38
|
-
[source,ruby]
|
39
|
-
----
|
40
|
-
require 'relaton_iec'
|
41
|
-
=> true
|
42
|
-
|
43
|
-
RelatonIec.configure do |config|
|
44
|
-
config.logger.level = Logger::DEBUG
|
45
|
-
end
|
46
|
-
----
|
47
|
-
|
48
34
|
=== Search for a standard using keywords
|
49
35
|
|
50
36
|
`RelatonIec::IecBibliography.search(ref, year)` method returns hits collection. Each hit can be used to fetch a document.
|
@@ -54,6 +40,9 @@ end
|
|
54
40
|
|
55
41
|
[source,ruby]
|
56
42
|
----
|
43
|
+
require 'relaton_iec'
|
44
|
+
=> true
|
45
|
+
|
57
46
|
hit_collection = RelatonIec::IecBibliography.search("60050")
|
58
47
|
=> <RelatonIec::HitCollection:0x007fe0d7126f28 @ref=60050 @fetched=false>
|
59
48
|
|
@@ -271,6 +260,10 @@ Done in: 752 sec.
|
|
271
260
|
=> nil
|
272
261
|
----
|
273
262
|
|
263
|
+
=== Logging
|
264
|
+
|
265
|
+
RelatonIec uses the relaton-logger gem for logging. By default, it logs to STDOUT. To change the log levels and add other loggers, read the https://github.com/relaton/relaton-logger#usage[relaton-logger] documentation.
|
266
|
+
|
274
267
|
== Development
|
275
268
|
|
276
269
|
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.
|
data/grammars/basicdoc.rng
CHANGED
@@ -7,8 +7,7 @@ module BasicBlock
|
|
7
7
|
#
|
8
8
|
def initialize(content)
|
9
9
|
unless ALIGNS.include?(content)
|
10
|
-
warn "
|
11
|
-
warn "[basic-block] alloved aligments are: #{ALIGNS.join ', '}"
|
10
|
+
Util.warn "invalid alignment `#{content}`\nalloved aligments are: `#{ALIGNS.join '`, `'}`"
|
12
11
|
end
|
13
12
|
@content = content
|
14
13
|
end
|
@@ -13,12 +13,11 @@ module BasicBlock
|
|
13
13
|
@mimetype = mimetype
|
14
14
|
@filename = args[:filename]
|
15
15
|
if args[:width] && !args[:width].is_a?(Integer) && args[:width] != "auto"
|
16
|
-
warn "
|
17
|
-
warn "[basic-block] Image width should be integer or \"auto\""
|
16
|
+
Util.warn "Invalid image width attribute: `#{args[:width]}`\nImage width should be integer or `auto`"
|
18
17
|
end
|
19
18
|
if args[:height] && !args[:height].is_a?(Integer) && args[:height] != "auto"
|
20
|
-
warn "
|
21
|
-
|
19
|
+
Util.warn "Invalid image height attribute: `#{args[:height]}`\n" \
|
20
|
+
"Image height should be integer or `auto`"
|
22
21
|
end
|
23
22
|
@width = args[:width]
|
24
23
|
@height = args[:height]
|
@@ -15,8 +15,8 @@ module RelatonIec
|
|
15
15
|
#
|
16
16
|
def initialize(format)
|
17
17
|
unless FORMATS.include? format
|
18
|
-
warn "
|
19
|
-
|
18
|
+
Util.warn "Invalid reference format: `#{format}`\n" \
|
19
|
+
"Alloved reference formats are: `#{FORMATS.join '`, `'}`"
|
20
20
|
end
|
21
21
|
@format = format
|
22
22
|
end
|
@@ -11,8 +11,7 @@ module BasicBlock
|
|
11
11
|
#
|
12
12
|
def initialize(type:, content: [])
|
13
13
|
unless TYPES.include? type
|
14
|
-
warn "
|
15
|
-
warn "[relaton-iec] Allowed types are: #{TYPES.join ', '}"
|
14
|
+
Util.warn "Invalud type: `#{type}`\nAllowed types are: `#{TYPES.join '`, `'}`"
|
16
15
|
end
|
17
16
|
@type = type
|
18
17
|
@content = content
|
@@ -74,12 +74,12 @@ module BasicBlock
|
|
74
74
|
# @option args [String, nil] :valign
|
75
75
|
def initialize(content, **args) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
76
76
|
if args[:align] && !ALIGNS.include?(args[:align])
|
77
|
-
warn "
|
78
|
-
|
77
|
+
Util.warn "invalid table/tr/td align `#{args[:align]}`\n" \
|
78
|
+
"alloved aligns are: `#{ALIGNS.join '`, `'}`"
|
79
79
|
end
|
80
80
|
if args[:valign] && !VALIGNS.include?(args[:valign])
|
81
|
-
warn "
|
82
|
-
|
81
|
+
Util.warn "invalid table/tr/td valign `#{args[:valign]}`\n" \
|
82
|
+
"alloved valigns are: `#{VALIGNS.join '`, `'}`"
|
83
83
|
end
|
84
84
|
@content = content
|
85
85
|
@colspan = args[:colspan]
|
@@ -10,8 +10,7 @@ module BasicBlock
|
|
10
10
|
#
|
11
11
|
def initialize(tag:, content:)
|
12
12
|
unless TAGS.include? tag
|
13
|
-
warn "
|
14
|
-
warn "[basic-block] allowed tags are: #{TAGS.join ', '}"
|
13
|
+
Util.warn "invalid tag `#{tag}`\nallowed tags are: `#{TAGS.join '`, `'}`"
|
15
14
|
end
|
16
15
|
@tag = tag
|
17
16
|
@content = content
|
@@ -51,8 +51,9 @@ module RelatonIec
|
|
51
51
|
puts "Stopped at: #{t2}"
|
52
52
|
puts "Done in: #{(t2 - t1).round} sec."
|
53
53
|
rescue StandardError => e
|
54
|
-
|
55
|
-
|
54
|
+
Util.error do
|
55
|
+
"#{e.message}\n#{e.backtrace.join("\n")}"
|
56
|
+
end
|
56
57
|
end
|
57
58
|
|
58
59
|
def create_index
|
@@ -90,7 +91,7 @@ module RelatonIec
|
|
90
91
|
while next_page
|
91
92
|
res = fetch_page_token page
|
92
93
|
unless res.code == "200"
|
93
|
-
warn "
|
94
|
+
Util.warn "#{res.body}"
|
94
95
|
break
|
95
96
|
end
|
96
97
|
json = JSON.parse res.body
|
@@ -162,7 +163,7 @@ module RelatonIec
|
|
162
163
|
bib = DataParser.new(pub).parse
|
163
164
|
did = bib.docidentifier.detect &:primary
|
164
165
|
file = File.join(@output, "#{did.id.downcase.gsub(/[:\s\/]/, '_')}.#{@ext}")
|
165
|
-
if @files.include? file then warn "File #{file} exists."
|
166
|
+
if @files.include? file then Util.warn "File #{file} exists."
|
166
167
|
else
|
167
168
|
@files << file
|
168
169
|
# @index.add index_id(pub), file, pub["lastChangeTimestamp"]
|
@@ -28,13 +28,17 @@ module RelatonIec
|
|
28
28
|
#
|
29
29
|
def initialize(**args) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
30
30
|
if args[:function] && !FUNCTION.include?(args[:function])
|
31
|
-
Util.warn
|
32
|
-
|
31
|
+
Util.warn do
|
32
|
+
"Invalid function: `#{args[:function]}`\n" \
|
33
|
+
"Allowed function values are: `#{FUNCTION.join('`, `')}`"
|
34
|
+
end
|
33
35
|
end
|
34
36
|
if args[:updates_document_type] &&
|
35
37
|
!DocumentType::DOCTYPES.include?(args[:updates_document_type])
|
36
|
-
Util.warn
|
37
|
-
|
38
|
+
Util.warn do
|
39
|
+
"WARNING: Invalid updates_document_type: `#{args[:updates_document_type]}`\n" \
|
40
|
+
"Allowed updates_document_type values are: `#{DocumentType::DOCTYPES.join('`, `')}`"
|
41
|
+
end
|
38
42
|
end
|
39
43
|
@function = args.delete :function
|
40
44
|
@updates_document_type = args.delete :updates_document_type
|
@@ -46,8 +46,8 @@ module RelatonIec
|
|
46
46
|
# @param missed_years [Array<String>]
|
47
47
|
def warn_missing_years(pubid, year, missed_years)
|
48
48
|
id = ref_with_year(pubid, year)
|
49
|
-
Util.
|
50
|
-
"but matches exist for `#{missed_years.uniq.join('`, `')}`."
|
49
|
+
Util.info "TIP: No match for edition year `#{year}`, " \
|
50
|
+
"but matches exist for `#{missed_years.uniq.join('`, `')}`.", key: id
|
51
51
|
end
|
52
52
|
|
53
53
|
# @param code [String]
|
@@ -56,7 +56,7 @@ module RelatonIec
|
|
56
56
|
def fetch_ref_err(code, year, missed_years) # rubocop:disable Metrics/MethodLength
|
57
57
|
id = ref_with_year(code, year)
|
58
58
|
|
59
|
-
Util.
|
59
|
+
Util.info "Not found.", key: id
|
60
60
|
|
61
61
|
if year && missed_years.any?
|
62
62
|
warn_missing_years(code, year, missed_years)
|
@@ -65,11 +65,11 @@ module RelatonIec
|
|
65
65
|
# TODO: change this to pubid-iec
|
66
66
|
has_part = /\d-\d/.match?(code)
|
67
67
|
if has_part
|
68
|
-
Util.
|
68
|
+
Util.info "TIP: If it cannot be found, the document may no longer be published in parts.", key: id
|
69
69
|
|
70
70
|
else
|
71
|
-
Util.
|
72
|
-
"the reference, use `#{code} (all parts)`."
|
71
|
+
Util.info "TIP: If you wish to cite all document parts for " \
|
72
|
+
"the reference, use `#{code} (all parts)`.", key: id
|
73
73
|
end
|
74
74
|
|
75
75
|
# TODO: streamline after integration with pubid-iec
|
@@ -78,11 +78,9 @@ module RelatonIec
|
|
78
78
|
code.include?("#{t} ")
|
79
79
|
end
|
80
80
|
unless selected_doctype
|
81
|
-
Util.
|
82
|
-
"deliverable type abbreviation `#{doctypes.join('`, `')}`."
|
81
|
+
Util.info "TIP: If the document is not an International Standard, use its " \
|
82
|
+
"deliverable type abbreviation `#{doctypes.join('`, `')}`.", key: id
|
83
83
|
end
|
84
|
-
|
85
|
-
nil
|
86
84
|
end
|
87
85
|
|
88
86
|
# @param ref [String]
|
@@ -125,7 +123,7 @@ module RelatonIec
|
|
125
123
|
# @return [RelatonIec::HitCollection]
|
126
124
|
def search_filter(ref, year)
|
127
125
|
code = ref.split(":").first
|
128
|
-
Util.
|
126
|
+
Util.info "Fetching from Relaton repsitory ...", key: ref_with_year(ref, year)
|
129
127
|
search(code)
|
130
128
|
end
|
131
129
|
|
@@ -257,12 +255,12 @@ module RelatonIec
|
|
257
255
|
|
258
256
|
# if id == docid then Util.warn "(#{id}) Found exact match."
|
259
257
|
# else
|
260
|
-
Util.
|
258
|
+
Util.info "Found: `#{docid}`", key: id
|
261
259
|
# end
|
262
260
|
|
263
261
|
if ret[:missed_parts]
|
264
|
-
Util.
|
265
|
-
"if you want to cite all parts, use `#{code} (all parts)`."
|
262
|
+
Util.info "TIP: `#{code}` also contains other parts, " \
|
263
|
+
"if you want to cite all parts, use `#{code} (all parts)`.", key: id
|
266
264
|
end
|
267
265
|
|
268
266
|
ret[:ret]
|
data/lib/relaton_iec/util.rb
CHANGED
data/lib/relaton_iec/version.rb
CHANGED
data/lib/relaton_iec.rb
CHANGED
data/relaton_iec.gemspec
CHANGED
@@ -24,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
25
25
|
|
26
26
|
spec.add_dependency "addressable"
|
27
|
+
spec.add_dependency "base64"
|
27
28
|
spec.add_dependency "relaton-index", "~> 0.2.0"
|
28
|
-
spec.add_dependency "relaton-iso-bib", "~> 1.
|
29
|
+
spec.add_dependency "relaton-iso-bib", "~> 1.19.0"
|
29
30
|
spec.add_dependency "rubyzip"
|
30
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-iec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: base64
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: relaton-index
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +58,14 @@ dependencies:
|
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
61
|
+
version: 1.19.0
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
68
|
+
version: 1.19.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rubyzip
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +123,6 @@ files:
|
|
109
123
|
- lib/relaton_iec/basic_block/stem.rb
|
110
124
|
- lib/relaton_iec/basic_block/table.rb
|
111
125
|
- lib/relaton_iec/basic_block/text_element.rb
|
112
|
-
- lib/relaton_iec/config.rb
|
113
126
|
- lib/relaton_iec/data_fetcher.rb
|
114
127
|
- lib/relaton_iec/data_parser.rb
|
115
128
|
- lib/relaton_iec/document_type.rb
|
@@ -145,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
158
|
- !ruby/object:Gem::Version
|
146
159
|
version: '0'
|
147
160
|
requirements: []
|
148
|
-
rubygems_version: 3.3.
|
161
|
+
rubygems_version: 3.3.27
|
149
162
|
signing_key:
|
150
163
|
specification_version: 4
|
151
164
|
summary: 'RelatonIec: retrieve IEC Standards for bibliographic use using the IecBibliographicItem
|