relaton-bib 1.9.8 → 1.9.12
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 +4 -4
- data/lib/relaton_bib/bibliographic_item.rb +51 -15
- data/lib/relaton_bib/bibxml_parser.rb +20 -12
- data/lib/relaton_bib/person.rb +3 -3
- data/lib/relaton_bib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 791772f93f6ec77db4778d4b983bd5b8238342ce83e3b1ebc7ab57f249a13d20
|
|
4
|
+
data.tar.gz: fffd96ca42623382338182a6cb6532fde99c18ebddfd516808f49eb493d31cd6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b5440de1b9a0555946b6be63f5c557d9f91b54c247d5876e5f8aaf4e74bfefa1f91d526a1453c99a401e2d82e03ed07af66e2f950a4e0f51d844e9ba0738c427
|
|
7
|
+
data.tar.gz: 8addf5e0b704189efdb1a6f871553c79ef23d1c38c324e728d9e72151a9c7317029340f3b0f4ad25b394a6acfcee679532c3f323a37aab0b0946bb33ce88461a
|
|
@@ -331,7 +331,7 @@ module RelatonBib
|
|
|
331
331
|
#
|
|
332
332
|
# @param [Nokogiri::XML::Builder, nil] builder
|
|
333
333
|
#
|
|
334
|
-
# @return [String]
|
|
334
|
+
# @return [String, Nokogiri::XML::Builder::NodeBuilder] XML
|
|
335
335
|
#
|
|
336
336
|
def to_bibxml(builder = nil)
|
|
337
337
|
if builder
|
|
@@ -339,8 +339,8 @@ module RelatonBib
|
|
|
339
339
|
else
|
|
340
340
|
Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
|
|
341
341
|
render_bibxml xml
|
|
342
|
-
end
|
|
343
|
-
end
|
|
342
|
+
end.doc.root.to_xml
|
|
343
|
+
end
|
|
344
344
|
end
|
|
345
345
|
|
|
346
346
|
# @return [Hash]
|
|
@@ -761,13 +761,41 @@ module RelatonBib
|
|
|
761
761
|
# rubocop:enable Style/NestedParenthesizedCalls, Metrics/BlockLength
|
|
762
762
|
|
|
763
763
|
#
|
|
764
|
-
# Render BibXML (RFC)
|
|
764
|
+
# Render BibXML (RFC, BCP)
|
|
765
765
|
#
|
|
766
766
|
# @param [Nokogiri::XML::Builder] builder
|
|
767
767
|
#
|
|
768
768
|
def render_bibxml(builder)
|
|
769
|
-
target = link.detect { |l| l.type == "src" } ||
|
|
770
|
-
|
|
769
|
+
target = link.detect { |l| l.type == "src" } ||
|
|
770
|
+
link.detect { |l| l.type == "doi" }
|
|
771
|
+
bxml = if docnumber&.match(/^BCP/) || docidentifier[0].id.include?("BCP")
|
|
772
|
+
render_bibxml_refgroup(builder)
|
|
773
|
+
else
|
|
774
|
+
render_bibxml_ref(builder)
|
|
775
|
+
end
|
|
776
|
+
bxml[:target] = target.content.to_s if target
|
|
777
|
+
end
|
|
778
|
+
|
|
779
|
+
#
|
|
780
|
+
# Render BibXML (BCP)
|
|
781
|
+
#
|
|
782
|
+
# @param [Nokogiri::XML::Builder] builder
|
|
783
|
+
#
|
|
784
|
+
def render_bibxml_refgroup(builder)
|
|
785
|
+
builder.referencegroup(**ref_attrs) do |b|
|
|
786
|
+
relation.each do |r|
|
|
787
|
+
r.bibitem.to_bibxml(b) if r.type == "includes"
|
|
788
|
+
end
|
|
789
|
+
end
|
|
790
|
+
end
|
|
791
|
+
|
|
792
|
+
#
|
|
793
|
+
# Render BibXML (RFC)
|
|
794
|
+
#
|
|
795
|
+
# @param [Nokogiri::XML::Builder] builder
|
|
796
|
+
#
|
|
797
|
+
def render_bibxml_ref(builder)
|
|
798
|
+
builder.reference(**ref_attrs) do |xml|
|
|
771
799
|
xml.front do
|
|
772
800
|
xml.title title[0].title.content if title.any?
|
|
773
801
|
render_seriesinfo xml
|
|
@@ -778,21 +806,29 @@ module RelatonBib
|
|
|
778
806
|
render_abstract xml
|
|
779
807
|
end
|
|
780
808
|
end
|
|
781
|
-
bxml[:target] = target.content.to_s if target
|
|
782
809
|
end
|
|
783
810
|
|
|
784
|
-
def
|
|
785
|
-
|
|
786
|
-
|
|
811
|
+
def ref_attrs
|
|
812
|
+
discopes = %w[anchor docName number]
|
|
813
|
+
attrs = docidentifier.each_with_object({}) do |di, h|
|
|
814
|
+
next unless discopes.include?(di.scope)
|
|
815
|
+
|
|
816
|
+
h[di.scope.to_sym] = di.id
|
|
817
|
+
end
|
|
818
|
+
# did = docidentifier.detect { |di| di.type == "rfc-anchor" }
|
|
819
|
+
return attrs if attrs.any?
|
|
787
820
|
|
|
788
|
-
|
|
789
|
-
|
|
821
|
+
docidentifier.first&.tap do |di|
|
|
822
|
+
return { anchor: di.id }
|
|
823
|
+
end
|
|
790
824
|
end
|
|
791
825
|
|
|
826
|
+
# def id_to_ref_attr(id)
|
|
827
|
+
# id.sub(/^(RFC|BCP)\s/, '\1').sub(/^(\d?[A-Z]+)\s/, '\1.')
|
|
828
|
+
# end
|
|
829
|
+
|
|
792
830
|
def render_keyword(builder)
|
|
793
|
-
keyword.each
|
|
794
|
-
builder.keyword kw.content
|
|
795
|
-
end
|
|
831
|
+
keyword.each { |kw| builder.keyword kw.content }
|
|
796
832
|
end
|
|
797
833
|
|
|
798
834
|
def render_workgroup(builder)
|
|
@@ -45,7 +45,7 @@ module RelatonBib
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
# @param attrs [Hash]
|
|
48
|
-
# @return [RelatonBib::
|
|
48
|
+
# @return [RelatonBib::BibliographicItem]
|
|
49
49
|
def bib_item(**attrs)
|
|
50
50
|
# attrs[:place] = ["Fremont, CA"]
|
|
51
51
|
BibliographicItem.new(**attrs)
|
|
@@ -70,13 +70,21 @@ module RelatonBib
|
|
|
70
70
|
sfid = reference.at("./seriesInfo[@name='#{self::FLAVOR}']",
|
|
71
71
|
"./front/seriesInfo[@name='#{self::FLAVOR}']")
|
|
72
72
|
if sfid
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
type = sfid[:name]
|
|
74
|
+
id = sfid[:value]
|
|
75
|
+
scope = "series"
|
|
76
|
+
else # if self::FLAVOR
|
|
77
|
+
id, scope = if reference[:anchor] then [reference[:anchor], "anchor"]
|
|
78
|
+
elsif reference[:docName] then [reference[:docName], "docName"]
|
|
79
|
+
elsif reference[:number] then [reference[:number], "number"]
|
|
80
|
+
end
|
|
81
|
+
id&.match(/^(3GPP|W3C|[A-Z]{2,})(?:\.(?=[A-Z])|(?=\d))/)
|
|
82
|
+
type = self::FLAVOR || ($~ && $~[1])
|
|
79
83
|
end
|
|
84
|
+
ret << DocumentIdentifier.new(type: type, id: id, scope: scope) if id
|
|
85
|
+
# if (id = reference[:anchor])
|
|
86
|
+
# ret << DocumentIdentifier.new(type: "rfc-anchor", id: id)
|
|
87
|
+
# end
|
|
80
88
|
ret + reference.xpath("./seriesInfo", "./front/seriesInfo").map do |si|
|
|
81
89
|
next unless SERIESINFONAMES.include? si[:name]
|
|
82
90
|
|
|
@@ -139,10 +147,10 @@ module RelatonBib
|
|
|
139
147
|
# @return [Array<RelatonBib::FormattedString>]
|
|
140
148
|
def abstracts(ref)
|
|
141
149
|
ref.xpath("./front/abstract").map do |a|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
c = a.children.to_s.gsub(/\s*(<\/?)t(>)\s*/, '\1p\2')
|
|
151
|
+
.gsub(/[\t\n]/, " ").squeeze " "
|
|
152
|
+
FormattedString.new(content: c, language: language(ref), script: "Latn",
|
|
153
|
+
format: "text/html")
|
|
146
154
|
end
|
|
147
155
|
end
|
|
148
156
|
|
|
@@ -245,7 +253,7 @@ module RelatonBib
|
|
|
245
253
|
# @rerurn [RelatonBib::Address]
|
|
246
254
|
def address(postal) # rubocop:disable Metrics/CyclomaticComplexity
|
|
247
255
|
street = [
|
|
248
|
-
(postal.at("./postalLine") || postal.at("./street"))&.text
|
|
256
|
+
(postal.at("./postalLine") || postal.at("./street"))&.text,
|
|
249
257
|
].compact
|
|
250
258
|
Address.new(
|
|
251
259
|
street: street,
|
data/lib/relaton_bib/person.rb
CHANGED
|
@@ -189,8 +189,8 @@ module RelatonBib
|
|
|
189
189
|
# @option opts [String, Symbol] :lang language
|
|
190
190
|
def to_xml(**opts)
|
|
191
191
|
opts[:builder].person do |builder|
|
|
192
|
-
name.to_xml
|
|
193
|
-
affiliation.each { |a| a.to_xml
|
|
192
|
+
name.to_xml(**opts)
|
|
193
|
+
affiliation.each { |a| a.to_xml(**opts) }
|
|
194
194
|
identifier.each { |id| id.to_xml builder }
|
|
195
195
|
contact.each { |contact| contact.to_xml builder }
|
|
196
196
|
end
|
|
@@ -210,7 +210,7 @@ module RelatonBib
|
|
|
210
210
|
# @count [Integer] number of persons
|
|
211
211
|
# @return [String]
|
|
212
212
|
def to_asciibib(prefix = "", count = 1) # rubocop:disable Metrics/AbcSize
|
|
213
|
-
pref = prefix.sub
|
|
213
|
+
pref = prefix.sub(/\*$/, "person")
|
|
214
214
|
out = count > 1 ? "#{pref}::\n" : ""
|
|
215
215
|
out += name.to_asciibib pref
|
|
216
216
|
affiliation.each { |af| out += af.to_asciibib pref, affiliation.size }
|
data/lib/relaton_bib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-bib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.
|
|
4
|
+
version: 1.9.12
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-12-
|
|
11
|
+
date: 2021-12-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: byebug
|