relaton-ietf 1.0.0 → 1.1.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 +4 -4
- data/grammars/biblio.rng +88 -31
- data/grammars/isodoc.rng +23 -4
- data/grammars/isostandard.rng +9 -1
- data/lib/relaton_ietf/scrapper.rb +34 -17
- data/lib/relaton_ietf/version.rb +1 -1
- data/relaton_ietf.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f77df06fb1337cae0194f2b9efb8f93d17f573fad72693dd7b2e83a11409897
|
4
|
+
data.tar.gz: 84de7f674a172fed2b369c4233b4446bf641e45a72e6bbe16bc529a99226acff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68cf9fb90d6106a178a6bbe712c07b4bd574a8f5e00c34bd3474c1e1961d551afeec0ace6c502bb882eb96450ab639dbd354ca00585acef28355bb674d68d65f
|
7
|
+
data.tar.gz: 0d85bd98e4f3085e05fd11177e18ad8b21fd629d6408b88614da9475a3ae96e8341e128cf86ed2872a3e0c46bb7a7cf32507c37c778910e9e8855a2033b40d81
|
data/grammars/biblio.rng
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
<text/>
|
89
89
|
</element>
|
90
90
|
</define>
|
91
|
-
<define name="
|
91
|
+
<define name="LocalizedString1">
|
92
92
|
<optional>
|
93
93
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
94
94
|
<attribute name="language"/>
|
@@ -98,6 +98,16 @@
|
|
98
98
|
</optional>
|
99
99
|
<text/>
|
100
100
|
</define>
|
101
|
+
<define name="LocalizedString">
|
102
|
+
<choice>
|
103
|
+
<ref name="LocalizedString1"/>
|
104
|
+
<oneOrMore>
|
105
|
+
<element name="variant">
|
106
|
+
<ref name="LocalizedString1"/>
|
107
|
+
</element>
|
108
|
+
</oneOrMore>
|
109
|
+
</choice>
|
110
|
+
</define>
|
101
111
|
<!--
|
102
112
|
Unlike UML, change type to format: type is overloaded
|
103
113
|
Would be need if plain were default value and could omit the attribute
|
@@ -121,7 +131,7 @@
|
|
121
131
|
</optional>
|
122
132
|
<ref name="LocalizedStringOrXsAny"/>
|
123
133
|
</define>
|
124
|
-
<define name="
|
134
|
+
<define name="LocalizedStringOrXsAny1">
|
125
135
|
<optional>
|
126
136
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
127
137
|
<attribute name="language"/>
|
@@ -136,6 +146,16 @@
|
|
136
146
|
</choice>
|
137
147
|
</oneOrMore>
|
138
148
|
</define>
|
149
|
+
<define name="LocalizedStringOrXsAny">
|
150
|
+
<choice>
|
151
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
152
|
+
<oneOrMore>
|
153
|
+
<element name="variant">
|
154
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
155
|
+
</element>
|
156
|
+
</oneOrMore>
|
157
|
+
</choice>
|
158
|
+
</define>
|
139
159
|
<define name="contributor">
|
140
160
|
<element name="contributor">
|
141
161
|
<zeroOrMore>
|
@@ -641,9 +661,9 @@
|
|
641
661
|
<optional>
|
642
662
|
<ref name="status"/>
|
643
663
|
</optional>
|
644
|
-
<
|
664
|
+
<zeroOrMore>
|
645
665
|
<ref name="copyright"/>
|
646
|
-
</
|
666
|
+
</zeroOrMore>
|
647
667
|
<zeroOrMore>
|
648
668
|
<ref name="docrelation"/>
|
649
669
|
</zeroOrMore>
|
@@ -767,6 +787,8 @@
|
|
767
787
|
<value>unchanged</value>
|
768
788
|
<value>circulated</value>
|
769
789
|
<value>adapted</value>
|
790
|
+
<value>vote-started</value>
|
791
|
+
<value>vote-ended</value>
|
770
792
|
</choice>
|
771
793
|
</define>
|
772
794
|
<define name="bdate">
|
@@ -999,7 +1021,17 @@
|
|
999
1021
|
<optional>
|
1000
1022
|
<ref name="to"/>
|
1001
1023
|
</optional>
|
1002
|
-
<
|
1024
|
+
<oneOrMore>
|
1025
|
+
<ref name="owner"/>
|
1026
|
+
</oneOrMore>
|
1027
|
+
<optional>
|
1028
|
+
<ref name="copyright_scope"/>
|
1029
|
+
</optional>
|
1030
|
+
</element>
|
1031
|
+
</define>
|
1032
|
+
<define name="copyright_scope">
|
1033
|
+
<element name="scope">
|
1034
|
+
<text/>
|
1003
1035
|
</element>
|
1004
1036
|
</define>
|
1005
1037
|
<define name="from">
|
@@ -1019,38 +1051,63 @@
|
|
1019
1051
|
</define>
|
1020
1052
|
<define name="DocRelationType">
|
1021
1053
|
<choice>
|
1022
|
-
<value>obsoletes</value>
|
1023
|
-
<value>obsoletedBy</value>
|
1024
|
-
<value>supersedes</value>
|
1025
|
-
<value>supersededBy</value>
|
1026
|
-
<value>updates</value>
|
1027
|
-
<value>updatedBy</value>
|
1028
|
-
<value>complements</value>
|
1029
|
-
<value>derivedFrom</value>
|
1030
|
-
<value>translatedFrom</value>
|
1031
|
-
<value>hasTranslation</value>
|
1032
|
-
<value>adoptedFrom</value>
|
1033
|
-
<value>equivalent</value>
|
1034
|
-
<value>identical</value>
|
1035
|
-
<value>nonequivalent</value>
|
1036
|
-
<value>includedIn</value>
|
1037
1054
|
<value>includes</value>
|
1038
|
-
<value>
|
1039
|
-
<value>instanceOf</value>
|
1040
|
-
<value>partOf</value>
|
1055
|
+
<value>includedIn</value>
|
1041
1056
|
<value>hasPart</value>
|
1042
|
-
<value>
|
1043
|
-
<value>draftOf</value>
|
1057
|
+
<value>partOf</value>
|
1044
1058
|
<value>merges</value>
|
1059
|
+
<value>mergedInto</value>
|
1045
1060
|
<value>splits</value>
|
1046
|
-
<value>
|
1047
|
-
<value>
|
1048
|
-
<value>
|
1049
|
-
<value>
|
1050
|
-
<value>
|
1051
|
-
<value>
|
1061
|
+
<value>splitInto</value>
|
1062
|
+
<value>instance</value>
|
1063
|
+
<value>hasInstance</value>
|
1064
|
+
<value>exemplarOf</value>
|
1065
|
+
<value>hasExemplar</value>
|
1066
|
+
<value>manifestationOf</value>
|
1067
|
+
<value>hasManifestation</value>
|
1068
|
+
<value>reproductionOf</value>
|
1069
|
+
<value>hasReproduction</value>
|
1070
|
+
<value>reprintOf</value>
|
1071
|
+
<value>hasReprint</value>
|
1072
|
+
<value>expressionOf</value>
|
1073
|
+
<value>hasExpression</value>
|
1074
|
+
<value>translatedFrom</value>
|
1075
|
+
<value>hasTranslation</value>
|
1076
|
+
<value>arrangementOf</value>
|
1077
|
+
<value>hasArrangement</value>
|
1078
|
+
<value>abridgementOf</value>
|
1079
|
+
<value>hasAbridgement</value>
|
1080
|
+
<value>annotationOf</value>
|
1081
|
+
<value>hasAnnotation</value>
|
1082
|
+
<value>draftOf</value>
|
1083
|
+
<value>hasDraft</value>
|
1084
|
+
<value>editionOf</value>
|
1085
|
+
<value>hasEdition</value>
|
1086
|
+
<value>updates</value>
|
1087
|
+
<value>updatedBy</value>
|
1088
|
+
<value>derivedFrom</value>
|
1089
|
+
<value>derives</value>
|
1052
1090
|
<value>describes</value>
|
1053
1091
|
<value>describedBy</value>
|
1092
|
+
<value>catalogues</value>
|
1093
|
+
<value>cataloguedBy</value>
|
1094
|
+
<value>hasSuccessor</value>
|
1095
|
+
<value>successorOf</value>
|
1096
|
+
<value>adaptedFrom</value>
|
1097
|
+
<value>hasAdaptation</value>
|
1098
|
+
<value>adoptedFrom</value>
|
1099
|
+
<value>adoptedAs</value>
|
1100
|
+
<value>reviewOf</value>
|
1101
|
+
<value>hasReview</value>
|
1102
|
+
<value>commentaryOf</value>
|
1103
|
+
<value>hasCommentary</value>
|
1104
|
+
<value>related</value>
|
1105
|
+
<value>complements</value>
|
1106
|
+
<value>complementOf</value>
|
1107
|
+
<value>obsoletes</value>
|
1108
|
+
<value>obsoletedBy</value>
|
1109
|
+
<value>cited</value>
|
1110
|
+
<value>isCitedIn</value>
|
1054
1111
|
</choice>
|
1055
1112
|
</define>
|
1056
1113
|
<define name="docrelation">
|
data/grammars/isodoc.rng
CHANGED
@@ -53,6 +53,14 @@
|
|
53
53
|
<optional>
|
54
54
|
<attribute name="alt"/>
|
55
55
|
</optional>
|
56
|
+
<optional>
|
57
|
+
<attribute name="case">
|
58
|
+
<choice>
|
59
|
+
<value>capital</value>
|
60
|
+
<value>lowercase</value>
|
61
|
+
</choice>
|
62
|
+
</attribute>
|
63
|
+
</optional>
|
56
64
|
<text/>
|
57
65
|
</element>
|
58
66
|
</define>
|
@@ -129,6 +137,9 @@
|
|
129
137
|
</choice>
|
130
138
|
</attribute>
|
131
139
|
</optional>
|
140
|
+
<attribute name="normative">
|
141
|
+
<data type="boolean"/>
|
142
|
+
</attribute>
|
132
143
|
<optional>
|
133
144
|
<ref name="section-title"/>
|
134
145
|
</optional>
|
@@ -303,11 +314,11 @@
|
|
303
314
|
<ref name="paragraph"/>
|
304
315
|
</element>
|
305
316
|
</define>
|
306
|
-
<define name="TextElement" combine="choice">
|
307
|
-
<ref name="concept"/>
|
308
|
-
</define>
|
309
317
|
</include>
|
310
318
|
<!-- end overrides -->
|
319
|
+
<define name="TextElement" combine="choice">
|
320
|
+
<ref name="concept"/>
|
321
|
+
</define>
|
311
322
|
<define name="concept">
|
312
323
|
<element name="concept">
|
313
324
|
<optional>
|
@@ -899,7 +910,15 @@
|
|
899
910
|
<attribute name="id">
|
900
911
|
<data type="ID"/>
|
901
912
|
</attribute>
|
902
|
-
<
|
913
|
+
<oneOrMore>
|
914
|
+
<choice>
|
915
|
+
<ref name="paragraph"/>
|
916
|
+
<ref name="ul"/>
|
917
|
+
<ref name="ol"/>
|
918
|
+
<ref name="dl"/>
|
919
|
+
<ref name="formula"/>
|
920
|
+
</choice>
|
921
|
+
</oneOrMore>
|
903
922
|
</element>
|
904
923
|
</define>
|
905
924
|
<define name="termexample">
|
data/grammars/isostandard.rng
CHANGED
@@ -91,6 +91,12 @@
|
|
91
91
|
</define>
|
92
92
|
<define name="sections">
|
93
93
|
<element name="sections">
|
94
|
+
<zeroOrMore>
|
95
|
+
<choice>
|
96
|
+
<ref name="note"/>
|
97
|
+
<ref name="admonition"/>
|
98
|
+
</choice>
|
99
|
+
</zeroOrMore>
|
94
100
|
<ref name="clause"/>
|
95
101
|
<optional>
|
96
102
|
<choice>
|
@@ -263,6 +269,8 @@
|
|
263
269
|
<value>publicly-available-specification</value>
|
264
270
|
<value>international-workshop-agreement</value>
|
265
271
|
<value>guide</value>
|
272
|
+
<value>amendment</value>
|
273
|
+
<value>technical-corrigendum</value>
|
266
274
|
</choice>
|
267
275
|
</define>
|
268
276
|
<define name="structuredidentifier">
|
@@ -510,7 +518,7 @@
|
|
510
518
|
</attribute>
|
511
519
|
</optional>
|
512
520
|
<oneOrMore>
|
513
|
-
<ref name="
|
521
|
+
<ref name="BasicBlock"/>
|
514
522
|
</oneOrMore>
|
515
523
|
</element>
|
516
524
|
</define>
|
@@ -192,7 +192,8 @@ module RelatonIetf
|
|
192
192
|
|
193
193
|
# @return [Array<Hash{Symbol=>RelatonBib::Person,Symbol=>Array<String>}>]
|
194
194
|
def persons(reference)
|
195
|
-
reference.xpath("./front/author").
|
195
|
+
reference.xpath("./front/author[@surname]|./front/author[@fullname]").
|
196
|
+
map do |author|
|
196
197
|
entity = RelatonBib::Person.new(
|
197
198
|
name: full_name(author, reference),
|
198
199
|
affiliation: [affiliation(author)],
|
@@ -204,29 +205,33 @@ module RelatonIetf
|
|
204
205
|
|
205
206
|
# @return [Array<Hash{Symbol=>RelatonBib::Organization,Symbol=>Array<String>}>]
|
206
207
|
def organizations(reference)
|
207
|
-
|
208
|
-
|
208
|
+
publisher = { entity: new_org, role: [type: "publisher"] }
|
209
|
+
reference.xpath("./seriesinfo").reduce([publisher]) do |mem, si|
|
210
|
+
next mem unless si[:stream]
|
209
211
|
|
210
|
-
|
211
|
-
|
212
|
-
end.compact
|
212
|
+
mem << { entity: new_org(si[:stream]), role: [type: "author"] }
|
213
|
+
end
|
213
214
|
end
|
214
215
|
|
215
216
|
# @param author [Nokogiri::XML::Document]
|
216
217
|
# @param ref [Nokogiri::XML::Document]
|
217
218
|
# @return [RelatonBib::FullName]
|
218
219
|
def full_name(author, ref)
|
220
|
+
lang = language ref
|
219
221
|
RelatonBib::FullName.new(
|
220
|
-
completename: localized_string(author[:fullname],
|
221
|
-
initial: [localized_string(author[:initials],
|
222
|
-
surname:
|
222
|
+
completename: localized_string(author[:fullname], lang),
|
223
|
+
initial: [localized_string(author[:initials], lang)].compact,
|
224
|
+
surname: localized_string(author[:surname], lang),
|
223
225
|
)
|
224
226
|
end
|
225
227
|
|
226
228
|
# @param content [String]
|
229
|
+
# @param lang [String]
|
227
230
|
# @return [RelatonBib::LocalizedString]
|
228
|
-
def localized_string(content,
|
229
|
-
|
231
|
+
def localized_string(content, lang)
|
232
|
+
return unless content
|
233
|
+
|
234
|
+
RelatonBib::LocalizedString.new(content, lang)
|
230
235
|
end
|
231
236
|
|
232
237
|
# @param postal [Nokogiri::XML::Document]
|
@@ -267,13 +272,21 @@ module RelatonIetf
|
|
267
272
|
# @return [RelatonBib::Affiliation]
|
268
273
|
def affiliation(author)
|
269
274
|
organization = author.at("./organization")
|
270
|
-
org =
|
271
|
-
|
272
|
-
|
273
|
-
|
275
|
+
org = if organization.nil? || organization&.text&.empty?
|
276
|
+
new_org
|
277
|
+
else
|
278
|
+
new_org organization.text, organization[:abbrev]
|
279
|
+
end
|
274
280
|
RelatonBib::Affiliation.new organization: org
|
275
281
|
end
|
276
282
|
|
283
|
+
# @param name [String]
|
284
|
+
# @param abbr [String]
|
285
|
+
# @return [RelatonBib::Organization]
|
286
|
+
def new_org(name = "Internet Engineering Task Force", abbr = "IETF")
|
287
|
+
RelatonBib::Organization.new name: name, abbreviation: abbr
|
288
|
+
end
|
289
|
+
|
277
290
|
# @param author [Nokogiri::XML::Document]
|
278
291
|
# @return [Hash]
|
279
292
|
def contributor_role(author)
|
@@ -281,6 +294,7 @@ module RelatonIetf
|
|
281
294
|
end
|
282
295
|
|
283
296
|
def month(mon)
|
297
|
+
return 1 if !mon || mon.empty?
|
284
298
|
return mon if /^\d+$/ =~ mon
|
285
299
|
|
286
300
|
Date::MONTHNAMES.index(mon)
|
@@ -294,12 +308,14 @@ module RelatonIetf
|
|
294
308
|
def dates(reference)
|
295
309
|
return unless (date = reference.at "./front/date")
|
296
310
|
|
297
|
-
d = [date[:year], month(date[:month])
|
298
|
-
(date[:day] ||
|
311
|
+
d = [date[:year], month(date[:month]),
|
312
|
+
(date[:day] || 1)].compact.join "-"
|
299
313
|
date = Time.parse(d).strftime "%Y-%m-%d"
|
300
314
|
[RelatonBib::BibliographicDate.new(type: "published", on: date)]
|
301
315
|
end
|
302
316
|
|
317
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
318
|
+
|
303
319
|
#
|
304
320
|
# Extract document identifiers from reference
|
305
321
|
#
|
@@ -323,6 +339,7 @@ module RelatonIetf
|
|
323
339
|
RelatonBib::DocumentIdentifier.new(id: id, type: si[:name])
|
324
340
|
end.compact
|
325
341
|
end
|
342
|
+
# enable Metrics/MethodLength, Metrics/AbcSize
|
326
343
|
|
327
344
|
#
|
328
345
|
# Extract series form reference
|
data/lib/relaton_ietf/version.rb
CHANGED
data/relaton_ietf.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-ietf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.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: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
159
|
+
version: 1.1.0
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
166
|
+
version: 1.1.0
|
167
167
|
description: "RelatonIetf: retrieve IETF Standards for bibliographic use \nusing the
|
168
168
|
BibliographicItem model.\n\nFormerly known as rfcbib.\n"
|
169
169
|
email:
|