relaton-iso 1.15.5 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +2 -1
- data/README.adoc +12 -1
- data/lib/relaton_iso/config.rb +4 -20
- data/lib/relaton_iso/hit.rb +2 -2
- data/lib/relaton_iso/hit_collection.rb +6 -2
- data/lib/relaton_iso/iso_bibliography.rb +20 -18
- data/lib/relaton_iso/scrapper.rb +0 -5
- data/lib/relaton_iso/util.rb +9 -0
- data/lib/relaton_iso/version.rb +1 -1
- data/lib/relaton_iso.rb +6 -2
- data/relaton_iso.gemspec +2 -4
- metadata +7 -35
- data/lib/relaton_iso/logger.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3ca89f9616730766487b295af824ea9b797aa863f0bbc248e21e8f26862e02c
|
4
|
+
data.tar.gz: 070dedc5d81dfeea1085da56872e960a021691193c0ad1b7b47c4a3c8704a2ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a62229e67a1547c934babfb52d77d1a2c51f0982840bca9a889499479cbdc0b2e7bcbc0291bfa0812afaf25eb5d13f6c760b073a5b6742b588275a922fcbe210
|
7
|
+
data.tar.gz: 46ef00eeef8fa1b4f55281ae7566fbee4f5ac743c8d90bb0053fd12255121ff5e994e47b16e441c019137e8962a3d4ce298f954b29dd08b219537ba3d8d70edd
|
@@ -7,7 +7,8 @@ on:
|
|
7
7
|
inputs:
|
8
8
|
next_version:
|
9
9
|
description: |
|
10
|
-
Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
|
10
|
+
Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
|
11
|
+
Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
|
11
12
|
required: true
|
12
13
|
default: 'skip'
|
13
14
|
repository_dispatch:
|
data/README.adoc
CHANGED
@@ -31,13 +31,24 @@ Or install it yourself as:
|
|
31
31
|
|
32
32
|
== Usage
|
33
33
|
|
34
|
-
===
|
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 `RelatonIso.configure` block.
|
35
37
|
|
36
38
|
[source,ruby]
|
37
39
|
----
|
38
40
|
require 'relaton_iso'
|
39
41
|
=> true
|
40
42
|
|
43
|
+
RelatonIso.configure do |config|
|
44
|
+
config.logger.level = Logger::DEBUG
|
45
|
+
end
|
46
|
+
----
|
47
|
+
|
48
|
+
=== Search for standards using keywords
|
49
|
+
|
50
|
+
[source,ruby]
|
51
|
+
----
|
41
52
|
hit_collection = RelatonIso::IsoBibliography.search("ISO 19115")
|
42
53
|
=> <RelatonIso::HitCollection:0x007fa5bc847038 @ref=19115 @fetched=false>
|
43
54
|
|
data/lib/relaton_iso/config.rb
CHANGED
@@ -1,26 +1,10 @@
|
|
1
1
|
module RelatonIso
|
2
2
|
module Config
|
3
|
-
|
4
|
-
yield configuration if block_given?
|
5
|
-
end
|
6
|
-
|
7
|
-
def configuration
|
8
|
-
@configuration ||= Configuration.new
|
9
|
-
end
|
10
|
-
|
11
|
-
extend self
|
3
|
+
include RelatonBib::Config
|
12
4
|
end
|
5
|
+
extend Config
|
13
6
|
|
14
|
-
class Configuration
|
15
|
-
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
@logger = ::Logger.new $stderr
|
19
|
-
@logger.level = ::Logger::WARN
|
20
|
-
@logger.progname = "relaton-iso"
|
21
|
-
@logger.formatter = proc do |_severity, _datetime, progname, msg|
|
22
|
-
"[#{progname}] #{msg}\n"
|
23
|
-
end
|
24
|
-
end
|
7
|
+
class Configuration < RelatonBib::Configuration
|
8
|
+
PROGNAME = "relaton-iso".freeze
|
25
9
|
end
|
26
10
|
end
|
data/lib/relaton_iso/hit.rb
CHANGED
@@ -43,8 +43,8 @@ module RelatonIso
|
|
43
43
|
def pubid
|
44
44
|
@pubid ||= Pubid::Iso::Identifier.parse_from_title(hit[:title])
|
45
45
|
rescue Pubid::Iso::Errors::WrongTypeError, Pubid::Iso::Errors::ParseError => e
|
46
|
-
|
47
|
-
|
46
|
+
Util.warn "unable to find an identifier in `#{hit[:title]}`."
|
47
|
+
Util.warn e.message
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -13,7 +13,11 @@ module RelatonIso
|
|
13
13
|
def initialize(text)
|
14
14
|
super
|
15
15
|
@from_gh = text.match?(/^ISO[\s\/](?:TC\s184\/SC\s?4|IEC\sDIR\s(?:\d|IEC|JTC))/)
|
16
|
+
end
|
17
|
+
|
18
|
+
def fetch
|
16
19
|
@array = from_gh ? fetch_github : fetch_iso
|
20
|
+
self
|
17
21
|
end
|
18
22
|
|
19
23
|
# @param lang [String, NilClass]
|
@@ -30,7 +34,7 @@ module RelatonIso
|
|
30
34
|
formattedref: RelatonBib::FormattedRef.new(content: hi.pubid.to_s),
|
31
35
|
)
|
32
36
|
all_parts_item.relation << RelatonBib::DocumentRelation.new(
|
33
|
-
type: "
|
37
|
+
type: "instanceOf", bibitem: isobib,
|
34
38
|
)
|
35
39
|
end
|
36
40
|
all_parts_item
|
@@ -65,7 +69,7 @@ module RelatonIso
|
|
65
69
|
#
|
66
70
|
def fetch_iso # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
67
71
|
config = Algolia::Search::Config.new(application_id: "JCL49WV5AR", api_key: "dd1b9e1ab383f4d4817d29cd5e96d3f0")
|
68
|
-
client = Algolia::Search::Client.new config, logger:
|
72
|
+
client = Algolia::Search::Client.new config, logger: RelatonIso.configuration.logger
|
69
73
|
index = client.init_index "all_en"
|
70
74
|
resp = index.search text, hitsPerPage: 100, filters: "category:standard"
|
71
75
|
|
@@ -12,7 +12,7 @@ module RelatonIso
|
|
12
12
|
# @param text [String]
|
13
13
|
# @return [RelatonIso::HitCollection]
|
14
14
|
def search(text)
|
15
|
-
HitCollection.new
|
15
|
+
HitCollection.new(text.gsub("\u2013", "-")).fetch
|
16
16
|
rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
|
17
17
|
EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
|
18
18
|
Net::ProtocolError, OpenSSL::SSL::SSLError, Errno::ETIMEDOUT,
|
@@ -38,10 +38,10 @@ module RelatonIso
|
|
38
38
|
query_pubid = Pubid::Iso::Identifier.parse(code)
|
39
39
|
query_pubid.year = year if year
|
40
40
|
query_pubid.part = nil if opts[:all_parts]
|
41
|
-
|
41
|
+
Util.warn "(#{query_pubid}) Fetching from ISO..."
|
42
42
|
|
43
43
|
hits, missed_year_ids = isobib_search_filter(query_pubid, opts)
|
44
|
-
tip_ids = look_up_with_any_types_stages(hits,
|
44
|
+
tip_ids = look_up_with_any_types_stages(hits, ref, opts)
|
45
45
|
|
46
46
|
ret = if !opts[:all_parts] || hits.size == 1
|
47
47
|
hits.any? && hits.first.fetch(opts[:lang])
|
@@ -54,7 +54,7 @@ module RelatonIso
|
|
54
54
|
response_docid = ret.docidentifier.first.id.sub(" (all parts)", "")
|
55
55
|
response_pubid = Pubid::Iso::Identifier.parse(response_docid)
|
56
56
|
|
57
|
-
|
57
|
+
Util.warn "(#{query_pubid}) Found `#{response_pubid}`."
|
58
58
|
|
59
59
|
get_all = (
|
60
60
|
(query_pubid.year && opts[:keep_year].nil?) ||
|
@@ -65,7 +65,7 @@ module RelatonIso
|
|
65
65
|
|
66
66
|
ret.to_most_recent_reference
|
67
67
|
rescue Pubid::Core::Errors::ParseError
|
68
|
-
|
68
|
+
Util.warn "(#{code}) is not recognized as a standards identifier."
|
69
69
|
nil
|
70
70
|
end
|
71
71
|
|
@@ -128,35 +128,37 @@ module RelatonIso
|
|
128
128
|
|
129
129
|
# @param pubid [Pubid::Iso::Identifier] PubID with no results
|
130
130
|
def fetch_ref_err(pubid, missed_year_ids, tip_ids) # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
|
131
|
-
|
131
|
+
Util.warn "(#{pubid}) Not found."
|
132
132
|
|
133
133
|
if missed_year_ids.any?
|
134
|
-
ids = missed_year_ids.map { |i| "
|
135
|
-
|
136
|
-
|
134
|
+
ids = missed_year_ids.map { |i| "`#{i}`" }.join(", ")
|
135
|
+
Util.warn "(#{pubid}) TIP: No match for edition year " \
|
136
|
+
"#{pubid.year}, but matches exist for #{ids}."
|
137
137
|
end
|
138
138
|
|
139
139
|
if tip_ids.any?
|
140
|
-
ids = tip_ids.map { |i| "
|
141
|
-
|
140
|
+
ids = tip_ids.map { |i| "`#{i}`" }.join(", ")
|
141
|
+
Util.warn "(#{pubid}) TIP: Matches exist for #{ids}."
|
142
142
|
end
|
143
143
|
|
144
144
|
if pubid.part
|
145
|
-
|
146
|
-
|
145
|
+
Util.warn "(#{pubid}) TIP: If it cannot be found, " \
|
146
|
+
"the document may no longer be published in parts."
|
147
147
|
else
|
148
|
-
|
149
|
-
|
150
|
-
|
148
|
+
Util.warn "(#{pubid}) TIP: If you wish to cite " \
|
149
|
+
"all document parts for the reference, use " \
|
150
|
+
"`#{pubid.to_s(format: :ref_undated)} (all parts)`."
|
151
151
|
end
|
152
152
|
|
153
153
|
nil
|
154
154
|
end
|
155
155
|
|
156
|
-
def look_up_with_any_types_stages(hits,
|
156
|
+
def look_up_with_any_types_stages(hits, ref, opts) # rubocop:disable Metrics/MethodLength
|
157
157
|
found_ids = []
|
158
|
-
return found_ids
|
158
|
+
return found_ids if hits.from_gh || hits.any? || !ref.match?(/^ISO[\/\s][A-Z]/)
|
159
159
|
|
160
|
+
ref_no_type_stage = ref.sub(/^ISO[\/\s][A-Z]+/, "ISO")
|
161
|
+
pubid = Pubid::Iso::Identifier.parse(ref_no_type_stage)
|
160
162
|
resp, = isobib_search_filter(pubid, opts, any_types_stages: true)
|
161
163
|
resp.map &:pubid
|
162
164
|
end
|
data/lib/relaton_iso/scrapper.rb
CHANGED
data/lib/relaton_iso/version.rb
CHANGED
data/lib/relaton_iso.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "nokogiri"
|
4
|
+
require "net/http"
|
3
5
|
require "logger"
|
4
6
|
require "pubid-iso"
|
5
|
-
require "
|
6
|
-
require "relaton_iso/logger"
|
7
|
+
require "relaton_iso_bib"
|
7
8
|
require "relaton_iso/version"
|
9
|
+
require "relaton_iso/config"
|
10
|
+
require "relaton_iso/util"
|
11
|
+
require "relaton_iso/hit"
|
8
12
|
require "relaton_iso/iso_bibliography"
|
9
13
|
require "relaton_iso/document_identifier"
|
data/relaton_iso.gemspec
CHANGED
@@ -27,8 +27,6 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
28
28
|
|
29
29
|
spec.add_dependency "algolia", "~> 2.3.0"
|
30
|
-
spec.add_dependency "pubid-
|
31
|
-
spec.add_dependency "
|
32
|
-
spec.add_dependency "relaton-bib", "~> 1.14.12"
|
33
|
-
spec.add_dependency "relaton-iso-bib", "~> 1.14.0"
|
30
|
+
spec.add_dependency "pubid-iso", "~> 0.6.0"
|
31
|
+
spec.add_dependency "relaton-iso-bib", "~> 1.16.0"
|
34
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.16.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: 2023-
|
11
|
+
date: 2023-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: algolia
|
@@ -24,62 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.3.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: pubid-core
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.8.5
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.8.5
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: pubid-iso
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.5.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: relaton-bib
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.14.12
|
33
|
+
version: 0.6.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:
|
40
|
+
version: 0.6.0
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: relaton-iso-bib
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
47
|
+
version: 1.16.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.
|
54
|
+
version: 1.16.0
|
83
55
|
description: 'RelatonIso: retrieve ISO Standards for bibliographic use using the IsoBibliographicItem
|
84
56
|
model'
|
85
57
|
email:
|
@@ -126,9 +98,9 @@ files:
|
|
126
98
|
- lib/relaton_iso/hit.rb
|
127
99
|
- lib/relaton_iso/hit_collection.rb
|
128
100
|
- lib/relaton_iso/iso_bibliography.rb
|
129
|
-
- lib/relaton_iso/logger.rb
|
130
101
|
- lib/relaton_iso/processor.rb
|
131
102
|
- lib/relaton_iso/scrapper.rb
|
103
|
+
- lib/relaton_iso/util.rb
|
132
104
|
- lib/relaton_iso/version.rb
|
133
105
|
- relaton_iso.gemspec
|
134
106
|
homepage: https://github.com/relaton/relaton-iso
|
data/lib/relaton_iso/logger.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module RelatonIso
|
2
|
-
module Logger
|
3
|
-
extend self
|
4
|
-
|
5
|
-
def method_missing(method, *args, &block)
|
6
|
-
Config.configuration.logger.send(method, *args, &block)
|
7
|
-
end
|
8
|
-
|
9
|
-
def respond_to_missing?(method_name, include_private = false)
|
10
|
-
Config.configuration.logger.respond_to?(method_name) || super
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|