relaton-bib 1.9.11 → 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 +21 -11
- data/lib/relaton_bib/bibxml_parser.rb +18 -9
- 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
|
@@ -766,7 +766,8 @@ module RelatonBib
|
|
766
766
|
# @param [Nokogiri::XML::Builder] builder
|
767
767
|
#
|
768
768
|
def render_bibxml(builder)
|
769
|
-
target = link.detect { |l| l.type == "src" } ||
|
769
|
+
target = link.detect { |l| l.type == "src" } ||
|
770
|
+
link.detect { |l| l.type == "doi" }
|
770
771
|
bxml = if docnumber&.match(/^BCP/) || docidentifier[0].id.include?("BCP")
|
771
772
|
render_bibxml_refgroup(builder)
|
772
773
|
else
|
@@ -781,7 +782,7 @@ module RelatonBib
|
|
781
782
|
# @param [Nokogiri::XML::Builder] builder
|
782
783
|
#
|
783
784
|
def render_bibxml_refgroup(builder)
|
784
|
-
builder.referencegroup(
|
785
|
+
builder.referencegroup(**ref_attrs) do |b|
|
785
786
|
relation.each do |r|
|
786
787
|
r.bibitem.to_bibxml(b) if r.type == "includes"
|
787
788
|
end
|
@@ -794,7 +795,7 @@ module RelatonBib
|
|
794
795
|
# @param [Nokogiri::XML::Builder] builder
|
795
796
|
#
|
796
797
|
def render_bibxml_ref(builder)
|
797
|
-
builder.reference(
|
798
|
+
builder.reference(**ref_attrs) do |xml|
|
798
799
|
xml.front do
|
799
800
|
xml.title title[0].title.content if title.any?
|
800
801
|
render_seriesinfo xml
|
@@ -807,18 +808,27 @@ module RelatonBib
|
|
807
808
|
end
|
808
809
|
end
|
809
810
|
|
810
|
-
def
|
811
|
-
|
812
|
-
|
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)
|
813
815
|
|
814
|
-
|
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?
|
820
|
+
|
821
|
+
docidentifier.first&.tap do |di|
|
822
|
+
return { anchor: di.id }
|
823
|
+
end
|
816
824
|
end
|
817
825
|
|
826
|
+
# def id_to_ref_attr(id)
|
827
|
+
# id.sub(/^(RFC|BCP)\s/, '\1').sub(/^(\d?[A-Z]+)\s/, '\1.')
|
828
|
+
# end
|
829
|
+
|
818
830
|
def render_keyword(builder)
|
819
|
-
keyword.each
|
820
|
-
builder.keyword kw.content
|
821
|
-
end
|
831
|
+
keyword.each { |kw| builder.keyword kw.content }
|
822
832
|
end
|
823
833
|
|
824
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,7 +147,8 @@ module RelatonBib
|
|
139
147
|
# @return [Array<RelatonBib::FormattedString>]
|
140
148
|
def abstracts(ref)
|
141
149
|
ref.xpath("./front/abstract").map do |a|
|
142
|
-
c = a.children.to_s.gsub(/\s*(<\/?)t(>)\s*/, '\1p\2')
|
150
|
+
c = a.children.to_s.gsub(/\s*(<\/?)t(>)\s*/, '\1p\2')
|
151
|
+
.gsub(/[\t\n]/, " ").squeeze " "
|
143
152
|
FormattedString.new(content: c, language: language(ref), script: "Latn",
|
144
153
|
format: "text/html")
|
145
154
|
end
|
@@ -244,7 +253,7 @@ module RelatonBib
|
|
244
253
|
# @rerurn [RelatonBib::Address]
|
245
254
|
def address(postal) # rubocop:disable Metrics/CyclomaticComplexity
|
246
255
|
street = [
|
247
|
-
(postal.at("./postalLine") || postal.at("./street"))&.text
|
256
|
+
(postal.at("./postalLine") || postal.at("./street"))&.text,
|
248
257
|
].compact
|
249
258
|
Address.new(
|
250
259
|
street: street,
|
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
|