relaton-bipm 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/macos.yml +32 -0
- data/.github/workflows/ubuntu.yml +32 -0
- data/.github/workflows/windows.yml +35 -0
- data/.gitignore +14 -0
- data/.rspec +3 -0
- data/.rubocop.yml +10 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +40 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/grammars/basicdoc.rng +986 -0
- data/grammars/biblio.rng +1237 -0
- data/grammars/isodoc.rng +1613 -0
- data/grammars/reqt.rng +165 -0
- data/lib/relaton_bipm.rb +24 -0
- data/lib/relaton_bipm/bibliographic_date.rb +5 -0
- data/lib/relaton_bipm/bipm_bibliographic_item.rb +69 -0
- data/lib/relaton_bipm/bipm_bibliography.rb +43 -0
- data/lib/relaton_bipm/comment_periond.rb +41 -0
- data/lib/relaton_bipm/document_relation.rb +5 -0
- data/lib/relaton_bipm/document_status.rb +31 -0
- data/lib/relaton_bipm/hash_converter.rb +73 -0
- data/lib/relaton_bipm/processor.rb +41 -0
- data/lib/relaton_bipm/project_team.rb +48 -0
- data/lib/relaton_bipm/version.rb +3 -0
- data/lib/relaton_bipm/xml_parser.rb +86 -0
- data/relaton_bipm.gemspec +46 -0
- metadata +217 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require "relaton/processor"
|
2
|
+
|
3
|
+
module RelatonBipm
|
4
|
+
class Processor < Relaton::Processor
|
5
|
+
attr_reader :idtype
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@short = :relaton_bipm
|
9
|
+
@prefix = "BIPM"
|
10
|
+
@defaultprefix = %r{^BIPM\s}
|
11
|
+
@idtype = "BIPM"
|
12
|
+
end
|
13
|
+
|
14
|
+
# @param code [String]
|
15
|
+
# @param date [String, NilClass] year
|
16
|
+
# @param opts [Hash]
|
17
|
+
# @return [RelatonBipm::BipmBibliographicItem]
|
18
|
+
def get(code, date, opts)
|
19
|
+
::RelatonBipm::BipmBibliography.get(code, date, opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param xml [String]
|
23
|
+
# @return [RelatonBipm::BipmBibliographicItem]
|
24
|
+
def from_xml(xml)
|
25
|
+
::RelatonBipm::XMLParser.from_xml xml
|
26
|
+
end
|
27
|
+
|
28
|
+
# @param hash [Hash]
|
29
|
+
# @return [RelatonBipm::BipmBibliographicItem]
|
30
|
+
def hash_to_bib(hash)
|
31
|
+
item_hash = ::RelatonBipm::HashConverter.hash_to_bib(hash)
|
32
|
+
::RelatonBipm::BipmBibliographicItem.new item_hash
|
33
|
+
end
|
34
|
+
|
35
|
+
# Returns hash of XML grammar
|
36
|
+
# @return [String]
|
37
|
+
def grammar_hash
|
38
|
+
@grammar_hash ||= ::RelatonBipm.grammar_hash
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module RelatonBipm
|
2
|
+
class ProjectTeam
|
3
|
+
COMMITTEES = %w[cgpm cipm bipm ccauv ccem ccl ccm ccpr ccqm ccri cct cctf
|
4
|
+
ccu ccl-cctfwg jcgm jcrb jctlm inetqi].freeze
|
5
|
+
|
6
|
+
# @return [String]
|
7
|
+
attr_reader :committee
|
8
|
+
|
9
|
+
# @return [RelatonBib::FormattedString]
|
10
|
+
attr_reader :workgroup
|
11
|
+
|
12
|
+
# @param committee [String]
|
13
|
+
# @param workgroup [RelatonBib::FormattedString]
|
14
|
+
def initialize(committee:, workgroup:)
|
15
|
+
unless COMMITTEES.include? committee
|
16
|
+
warn "[relaton-bipm] Warning: invalid committee: #{committee}. "\
|
17
|
+
"It should be one of: #{COMMITTEES}"
|
18
|
+
end
|
19
|
+
@committee = committee
|
20
|
+
@workgroup = workgroup
|
21
|
+
end
|
22
|
+
|
23
|
+
# @param builder [Nokogiri::XML::Builder]
|
24
|
+
def to_xml(builder)
|
25
|
+
builder.send "project-group" do |b|
|
26
|
+
b.committee committee
|
27
|
+
b.workgroup { workgroup.to_xml b }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [Hash]
|
32
|
+
def to_hash
|
33
|
+
{ "committee" => committee, "workgroup" => workgroup.to_hash }
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param prefix [String]
|
37
|
+
# 2param count [Integer]
|
38
|
+
# @return [String]
|
39
|
+
def to_asciibib(prefix = "", count = 1)
|
40
|
+
pref = prefix.empty? ? prefix : prefix + "."
|
41
|
+
pref += "project_group"
|
42
|
+
out = count > 1 ? "#{pref}::\n" : ""
|
43
|
+
out += "#{pref}.committee:: #{committee}\n"
|
44
|
+
out += workgroup.to_asciibib prefix
|
45
|
+
out
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module RelatonBipm
|
2
|
+
class XMLParser < RelatonBib::XMLParser
|
3
|
+
class << self
|
4
|
+
private
|
5
|
+
|
6
|
+
# Override RelatonBib::XMLParser.item_data method.
|
7
|
+
# @param item [Nokogiri::XML::Element]
|
8
|
+
# @returtn [Hash]
|
9
|
+
def item_data(item)
|
10
|
+
data = super
|
11
|
+
ext = item.at "./ext"
|
12
|
+
return data unless ext
|
13
|
+
|
14
|
+
data[:project_group] = fetch_project_group ext
|
15
|
+
data[:commentperiod] = fetch_commentperiond ext
|
16
|
+
data
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param item_hash [Hash]
|
20
|
+
# @return [RelatonBipm::BipmBibliographicItem]
|
21
|
+
def bib_item(item_hash)
|
22
|
+
BipmBibliographicItem.new item_hash
|
23
|
+
end
|
24
|
+
|
25
|
+
def fetch_project_group(ext)
|
26
|
+
ext.xpath("./project-group").map do |pg|
|
27
|
+
wg = pg.at "workgroup"
|
28
|
+
workgroup = RelatonBib::FormattedString.new(
|
29
|
+
content: wg.text, language: wg[:language], script: wg[:script],
|
30
|
+
format: wg[:format]
|
31
|
+
)
|
32
|
+
ProjectTeam.new(committee: pg.at("committee").text,
|
33
|
+
workgroup: workgroup)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param item [Nokogiri::XML::Element]
|
38
|
+
# @return [Array<RelatonBib::FormattedString>]
|
39
|
+
def fetch_titles(item)
|
40
|
+
item.xpath("./title").map do |t|
|
41
|
+
RelatonBib::FormattedString.new(
|
42
|
+
content: t.text, language: t[:language], script: t[:script],
|
43
|
+
format: t[:format]
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def fetch_dates(item) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
49
|
+
item.xpath("./date").reduce([]) do |a, d|
|
50
|
+
type = d[:type].to_s.empty? ? "published" : d[:type]
|
51
|
+
if (on = d.at("on"))
|
52
|
+
a << BibliographicDate.new(type: type, on: on.text,
|
53
|
+
to: d.at("to")&.text)
|
54
|
+
elsif (from = d.at("from"))
|
55
|
+
a << BibliographicDate.new(type: type, from: from.text,
|
56
|
+
to: d.at("to")&.text)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# @param item [Nokogiri::XML::Element]
|
62
|
+
# @param klass [RelatonBipm::DocumentRelation.class]
|
63
|
+
# @return [Array<RelatonBib::DocumentRelation>]
|
64
|
+
def fetch_relations(item, klass = DocumentRelation)
|
65
|
+
super
|
66
|
+
end
|
67
|
+
|
68
|
+
# @param item [Nokogiri::XML::Element]
|
69
|
+
# @return [RelatonBipm::DocumentStatus]
|
70
|
+
def fetch_status(item)
|
71
|
+
status = item.at("./status")
|
72
|
+
return unless status
|
73
|
+
|
74
|
+
DocumentStatus.new status.text
|
75
|
+
end
|
76
|
+
|
77
|
+
# @param ext [Nokogiri::XML::Element]
|
78
|
+
# @return [RelatonIho::CommentPeriod, nil]
|
79
|
+
def fetch_commentperiond(ext)
|
80
|
+
return unless ext && (cp = ext.at "commentperiod")
|
81
|
+
|
82
|
+
CommentPeriond.new from: cp.at("from")&.text, to: cp.at("to")&.text
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative "lib/relaton_bipm/version"
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
4
|
+
spec.name = "relaton-bipm"
|
5
|
+
spec.version = RelatonBipm::VERSION
|
6
|
+
spec.authors = ["Ribose Inc."]
|
7
|
+
spec.email = ["open.source@ribose.com"]
|
8
|
+
|
9
|
+
spec.summary = "RelatonBipm: retrieve BIPM Standards for "\
|
10
|
+
"bibliographic use using the BibliographicItem model"
|
11
|
+
spec.description = "RelatonBipm: retrieve BIPM Standards for "\
|
12
|
+
"bibliographic use using the BibliographicItem model"
|
13
|
+
spec.homepage = "https://github.com/relaton/relaton-bipm"
|
14
|
+
spec.license = "BSD-2-Clause"
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
16
|
+
|
17
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
18
|
+
|
19
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
+
spec.metadata["source_code_uri"] = "https://github.com/relaton/relaton-bipm"
|
21
|
+
# spec.metadata["changelog_uri"] = "Put your gem's CHANGELOG.md URL here."
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added
|
25
|
+
# into git.
|
26
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
28
|
+
f.match(%r{^(test|spec|features)/})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
spec.bindir = "exe"
|
32
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ["lib"]
|
34
|
+
|
35
|
+
spec.add_development_dependency "byebug"
|
36
|
+
spec.add_development_dependency "debase"
|
37
|
+
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
38
|
+
spec.add_development_dependency "pry-byebug"
|
39
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
40
|
+
spec.add_development_dependency "ruby-debug-ide"
|
41
|
+
spec.add_development_dependency "simplecov"
|
42
|
+
spec.add_development_dependency "vcr"
|
43
|
+
spec.add_development_dependency "webmock"
|
44
|
+
|
45
|
+
spec.add_dependency "relaton-bib", ">= 1.4.1"
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,217 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: relaton-bipm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ribose Inc.
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-09-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: byebug
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: debase
|
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: equivalent-xml
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-byebug
|
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: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ruby-debug-ide
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: vcr
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webmock
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: relaton-bib
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.4.1
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.4.1
|
153
|
+
description: 'RelatonBipm: retrieve BIPM Standards for bibliographic use using the
|
154
|
+
BibliographicItem model'
|
155
|
+
email:
|
156
|
+
- open.source@ribose.com
|
157
|
+
executables: []
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- ".github/workflows/macos.yml"
|
162
|
+
- ".github/workflows/ubuntu.yml"
|
163
|
+
- ".github/workflows/windows.yml"
|
164
|
+
- ".gitignore"
|
165
|
+
- ".rspec"
|
166
|
+
- ".rubocop.yml"
|
167
|
+
- Gemfile
|
168
|
+
- LICENSE.txt
|
169
|
+
- README.md
|
170
|
+
- Rakefile
|
171
|
+
- bin/console
|
172
|
+
- bin/rspec
|
173
|
+
- bin/setup
|
174
|
+
- grammars/basicdoc.rng
|
175
|
+
- grammars/biblio.rng
|
176
|
+
- grammars/isodoc.rng
|
177
|
+
- grammars/reqt.rng
|
178
|
+
- lib/relaton_bipm.rb
|
179
|
+
- lib/relaton_bipm/bibliographic_date.rb
|
180
|
+
- lib/relaton_bipm/bipm_bibliographic_item.rb
|
181
|
+
- lib/relaton_bipm/bipm_bibliography.rb
|
182
|
+
- lib/relaton_bipm/comment_periond.rb
|
183
|
+
- lib/relaton_bipm/document_relation.rb
|
184
|
+
- lib/relaton_bipm/document_status.rb
|
185
|
+
- lib/relaton_bipm/hash_converter.rb
|
186
|
+
- lib/relaton_bipm/processor.rb
|
187
|
+
- lib/relaton_bipm/project_team.rb
|
188
|
+
- lib/relaton_bipm/version.rb
|
189
|
+
- lib/relaton_bipm/xml_parser.rb
|
190
|
+
- relaton_bipm.gemspec
|
191
|
+
homepage: https://github.com/relaton/relaton-bipm
|
192
|
+
licenses:
|
193
|
+
- BSD-2-Clause
|
194
|
+
metadata:
|
195
|
+
homepage_uri: https://github.com/relaton/relaton-bipm
|
196
|
+
source_code_uri: https://github.com/relaton/relaton-bipm
|
197
|
+
post_install_message:
|
198
|
+
rdoc_options: []
|
199
|
+
require_paths:
|
200
|
+
- lib
|
201
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 2.4.0
|
206
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0'
|
211
|
+
requirements: []
|
212
|
+
rubygems_version: 3.0.6
|
213
|
+
signing_key:
|
214
|
+
specification_version: 4
|
215
|
+
summary: 'RelatonBipm: retrieve BIPM Standards for bibliographic use using the BibliographicItem
|
216
|
+
model'
|
217
|
+
test_files: []
|