relaton-gb 1.0.0 → 1.3.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/.github/workflows/ubuntu.yml +1 -0
- data/.rubocop.yml +2 -2
- data/grammars/biblio.rng +89 -32
- data/grammars/isodoc.rng +450 -4
- data/grammars/isostandard.rng +12 -1
- data/lib/relaton_gb.rb +1 -1
- data/lib/relaton_gb/ccs.rb +12 -0
- data/lib/relaton_gb/gb_bibliographic_item.rb +10 -26
- data/lib/relaton_gb/gb_scrapper.rb +1 -1
- data/lib/relaton_gb/hash_converter.rb +9 -0
- data/lib/relaton_gb/hit.rb +1 -1
- data/lib/relaton_gb/hit_collection.rb +3 -2
- data/lib/relaton_gb/scrapper.rb +23 -24
- data/lib/relaton_gb/sec_scrapper.rb +5 -3
- data/lib/relaton_gb/t_scrapper.rb +11 -16
- data/lib/relaton_gb/version.rb +1 -1
- data/lib/relaton_gb/xml_parser.rb +7 -15
- data/relaton_gb.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272eba99fd1d47cd23a6cd3c6bef9e9f4ee9da3b92f67609a36125829ca3177c
|
4
|
+
data.tar.gz: ea2242879a194e9660662407fb35dd5cb7024b5b107c93b5c88fea24a67539b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c94507bc12aed5456d3a4cc886f1fec4285e06b2446a75098c7842ddb018526ea619557fbda8641b41fd22a43ea0bea9167d71902085295071fc2de2a7eb402
|
7
|
+
data.tar.gz: 4cfa54290c430b6a10156017862e0730b29f743f673bb265226c5e628747592f2f0465f648c63c4a21a26ce2e2eb1c280eb8466c9c6c9de2d53443dfa0cc8a97
|
data/.rubocop.yml
CHANGED
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>
|
@@ -512,7 +532,7 @@
|
|
512
532
|
</define>
|
513
533
|
<define name="LocalityType">
|
514
534
|
<data type="string">
|
515
|
-
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|locality:[a-zA-Z0-9_]+</param>
|
535
|
+
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
516
536
|
</data>
|
517
537
|
</define>
|
518
538
|
<define name="referenceFrom">
|
@@ -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,9 +53,96 @@
|
|
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>
|
67
|
+
<define name="ul">
|
68
|
+
<element name="ul">
|
69
|
+
<attribute name="id">
|
70
|
+
<data type="ID"/>
|
71
|
+
</attribute>
|
72
|
+
<optional>
|
73
|
+
<attribute name="keep-with-next">
|
74
|
+
<data type="boolean"/>
|
75
|
+
</attribute>
|
76
|
+
</optional>
|
77
|
+
<optional>
|
78
|
+
<attribute name="keep-lines-together">
|
79
|
+
<data type="boolean"/>
|
80
|
+
</attribute>
|
81
|
+
</optional>
|
82
|
+
<oneOrMore>
|
83
|
+
<ref name="li"/>
|
84
|
+
</oneOrMore>
|
85
|
+
<zeroOrMore>
|
86
|
+
<ref name="note"/>
|
87
|
+
</zeroOrMore>
|
88
|
+
</element>
|
89
|
+
</define>
|
90
|
+
<define name="ol">
|
91
|
+
<element name="ol">
|
92
|
+
<attribute name="id">
|
93
|
+
<data type="ID"/>
|
94
|
+
</attribute>
|
95
|
+
<optional>
|
96
|
+
<attribute name="keep-with-next">
|
97
|
+
<data type="boolean"/>
|
98
|
+
</attribute>
|
99
|
+
</optional>
|
100
|
+
<optional>
|
101
|
+
<attribute name="keep-lines-together">
|
102
|
+
<data type="boolean"/>
|
103
|
+
</attribute>
|
104
|
+
</optional>
|
105
|
+
<attribute name="type">
|
106
|
+
<choice>
|
107
|
+
<value>roman</value>
|
108
|
+
<value>alphabet</value>
|
109
|
+
<value>arabic</value>
|
110
|
+
<value>roman_upper</value>
|
111
|
+
<value>alphabet_upper</value>
|
112
|
+
</choice>
|
113
|
+
</attribute>
|
114
|
+
<oneOrMore>
|
115
|
+
<ref name="li"/>
|
116
|
+
</oneOrMore>
|
117
|
+
<zeroOrMore>
|
118
|
+
<ref name="note"/>
|
119
|
+
</zeroOrMore>
|
120
|
+
</element>
|
121
|
+
</define>
|
122
|
+
<define name="dl">
|
123
|
+
<element name="dl">
|
124
|
+
<attribute name="id">
|
125
|
+
<data type="ID"/>
|
126
|
+
</attribute>
|
127
|
+
<optional>
|
128
|
+
<attribute name="keep-with-next">
|
129
|
+
<data type="boolean"/>
|
130
|
+
</attribute>
|
131
|
+
</optional>
|
132
|
+
<optional>
|
133
|
+
<attribute name="keep-lines-together">
|
134
|
+
<data type="boolean"/>
|
135
|
+
</attribute>
|
136
|
+
</optional>
|
137
|
+
<oneOrMore>
|
138
|
+
<ref name="dt"/>
|
139
|
+
<ref name="dd"/>
|
140
|
+
</oneOrMore>
|
141
|
+
<zeroOrMore>
|
142
|
+
<ref name="note"/>
|
143
|
+
</zeroOrMore>
|
144
|
+
</element>
|
145
|
+
</define>
|
59
146
|
<define name="example">
|
60
147
|
<element name="example">
|
61
148
|
<attribute name="id">
|
@@ -69,6 +156,19 @@
|
|
69
156
|
<optional>
|
70
157
|
<attribute name="subsequence"/>
|
71
158
|
</optional>
|
159
|
+
<optional>
|
160
|
+
<attribute name="number"/>
|
161
|
+
</optional>
|
162
|
+
<optional>
|
163
|
+
<attribute name="keep-with-next">
|
164
|
+
<data type="boolean"/>
|
165
|
+
</attribute>
|
166
|
+
</optional>
|
167
|
+
<optional>
|
168
|
+
<attribute name="keep-lines-together">
|
169
|
+
<data type="boolean"/>
|
170
|
+
</attribute>
|
171
|
+
</optional>
|
72
172
|
<optional>
|
73
173
|
<ref name="tname"/>
|
74
174
|
</optional>
|
@@ -89,6 +189,296 @@
|
|
89
189
|
</zeroOrMore>
|
90
190
|
</element>
|
91
191
|
</define>
|
192
|
+
<define name="table">
|
193
|
+
<element name="table">
|
194
|
+
<attribute name="id">
|
195
|
+
<data type="ID"/>
|
196
|
+
</attribute>
|
197
|
+
<optional>
|
198
|
+
<attribute name="unnumbered">
|
199
|
+
<data type="boolean"/>
|
200
|
+
</attribute>
|
201
|
+
</optional>
|
202
|
+
<optional>
|
203
|
+
<attribute name="number"/>
|
204
|
+
</optional>
|
205
|
+
<optional>
|
206
|
+
<attribute name="subsequence"/>
|
207
|
+
</optional>
|
208
|
+
<optional>
|
209
|
+
<attribute name="alt"/>
|
210
|
+
</optional>
|
211
|
+
<optional>
|
212
|
+
<attribute name="summary"/>
|
213
|
+
</optional>
|
214
|
+
<optional>
|
215
|
+
<attribute name="uri">
|
216
|
+
<data type="anyURI"/>
|
217
|
+
</attribute>
|
218
|
+
</optional>
|
219
|
+
<optional>
|
220
|
+
<attribute name="keep-with-next">
|
221
|
+
<data type="boolean"/>
|
222
|
+
</attribute>
|
223
|
+
</optional>
|
224
|
+
<optional>
|
225
|
+
<attribute name="keep-lines-together">
|
226
|
+
<data type="boolean"/>
|
227
|
+
</attribute>
|
228
|
+
</optional>
|
229
|
+
<optional>
|
230
|
+
<ref name="tname"/>
|
231
|
+
</optional>
|
232
|
+
<optional>
|
233
|
+
<ref name="thead"/>
|
234
|
+
</optional>
|
235
|
+
<ref name="tbody"/>
|
236
|
+
<optional>
|
237
|
+
<ref name="tfoot"/>
|
238
|
+
</optional>
|
239
|
+
<zeroOrMore>
|
240
|
+
<ref name="table-note"/>
|
241
|
+
</zeroOrMore>
|
242
|
+
<optional>
|
243
|
+
<ref name="dl"/>
|
244
|
+
</optional>
|
245
|
+
</element>
|
246
|
+
</define>
|
247
|
+
<define name="figure">
|
248
|
+
<element name="figure">
|
249
|
+
<attribute name="id">
|
250
|
+
<data type="ID"/>
|
251
|
+
</attribute>
|
252
|
+
<optional>
|
253
|
+
<attribute name="unnumbered">
|
254
|
+
<data type="boolean"/>
|
255
|
+
</attribute>
|
256
|
+
</optional>
|
257
|
+
<optional>
|
258
|
+
<attribute name="number"/>
|
259
|
+
</optional>
|
260
|
+
<optional>
|
261
|
+
<attribute name="subsequence"/>
|
262
|
+
</optional>
|
263
|
+
<optional>
|
264
|
+
<attribute name="keep-with-next">
|
265
|
+
<data type="boolean"/>
|
266
|
+
</attribute>
|
267
|
+
</optional>
|
268
|
+
<optional>
|
269
|
+
<attribute name="keep-lines-together">
|
270
|
+
<data type="boolean"/>
|
271
|
+
</attribute>
|
272
|
+
</optional>
|
273
|
+
<optional>
|
274
|
+
<attribute name="class"/>
|
275
|
+
</optional>
|
276
|
+
<optional>
|
277
|
+
<ref name="source"/>
|
278
|
+
</optional>
|
279
|
+
<optional>
|
280
|
+
<ref name="tname"/>
|
281
|
+
</optional>
|
282
|
+
<choice>
|
283
|
+
<ref name="image"/>
|
284
|
+
<ref name="video"/>
|
285
|
+
<ref name="audio"/>
|
286
|
+
<ref name="pre"/>
|
287
|
+
<oneOrMore>
|
288
|
+
<ref name="paragraph-with-footnote"/>
|
289
|
+
</oneOrMore>
|
290
|
+
<zeroOrMore>
|
291
|
+
<ref name="figure"/>
|
292
|
+
</zeroOrMore>
|
293
|
+
</choice>
|
294
|
+
<zeroOrMore>
|
295
|
+
<ref name="fn"/>
|
296
|
+
</zeroOrMore>
|
297
|
+
<optional>
|
298
|
+
<ref name="dl"/>
|
299
|
+
</optional>
|
300
|
+
<zeroOrMore>
|
301
|
+
<ref name="note"/>
|
302
|
+
</zeroOrMore>
|
303
|
+
</element>
|
304
|
+
</define>
|
305
|
+
<define name="sourcecode">
|
306
|
+
<element name="sourcecode">
|
307
|
+
<attribute name="id">
|
308
|
+
<data type="ID"/>
|
309
|
+
</attribute>
|
310
|
+
<optional>
|
311
|
+
<attribute name="unnumbered">
|
312
|
+
<data type="boolean"/>
|
313
|
+
</attribute>
|
314
|
+
</optional>
|
315
|
+
<optional>
|
316
|
+
<attribute name="number"/>
|
317
|
+
</optional>
|
318
|
+
<optional>
|
319
|
+
<attribute name="subsequence"/>
|
320
|
+
</optional>
|
321
|
+
<optional>
|
322
|
+
<attribute name="keep-with-next">
|
323
|
+
<data type="boolean"/>
|
324
|
+
</attribute>
|
325
|
+
</optional>
|
326
|
+
<optional>
|
327
|
+
<attribute name="keep-lines-together">
|
328
|
+
<data type="boolean"/>
|
329
|
+
</attribute>
|
330
|
+
</optional>
|
331
|
+
<optional>
|
332
|
+
<attribute name="lang"/>
|
333
|
+
</optional>
|
334
|
+
<optional>
|
335
|
+
<ref name="tname"/>
|
336
|
+
</optional>
|
337
|
+
<oneOrMore>
|
338
|
+
<choice>
|
339
|
+
<text/>
|
340
|
+
<ref name="callout"/>
|
341
|
+
</choice>
|
342
|
+
</oneOrMore>
|
343
|
+
<zeroOrMore>
|
344
|
+
<ref name="annotation"/>
|
345
|
+
</zeroOrMore>
|
346
|
+
<zeroOrMore>
|
347
|
+
<ref name="note"/>
|
348
|
+
</zeroOrMore>
|
349
|
+
</element>
|
350
|
+
</define>
|
351
|
+
<define name="formula">
|
352
|
+
<element name="formula">
|
353
|
+
<attribute name="id">
|
354
|
+
<data type="ID"/>
|
355
|
+
</attribute>
|
356
|
+
<optional>
|
357
|
+
<attribute name="unnumbered">
|
358
|
+
<data type="boolean"/>
|
359
|
+
</attribute>
|
360
|
+
</optional>
|
361
|
+
<optional>
|
362
|
+
<attribute name="number"/>
|
363
|
+
</optional>
|
364
|
+
<optional>
|
365
|
+
<attribute name="subsequence"/>
|
366
|
+
</optional>
|
367
|
+
<optional>
|
368
|
+
<attribute name="keep-with-next">
|
369
|
+
<data type="boolean"/>
|
370
|
+
</attribute>
|
371
|
+
</optional>
|
372
|
+
<optional>
|
373
|
+
<attribute name="keep-lines-together">
|
374
|
+
<data type="boolean"/>
|
375
|
+
</attribute>
|
376
|
+
</optional>
|
377
|
+
<optional>
|
378
|
+
<attribute name="inequality">
|
379
|
+
<data type="boolean"/>
|
380
|
+
</attribute>
|
381
|
+
</optional>
|
382
|
+
<ref name="stem"/>
|
383
|
+
<optional>
|
384
|
+
<ref name="dl"/>
|
385
|
+
</optional>
|
386
|
+
<zeroOrMore>
|
387
|
+
<ref name="note"/>
|
388
|
+
</zeroOrMore>
|
389
|
+
</element>
|
390
|
+
</define>
|
391
|
+
<define name="ParagraphType">
|
392
|
+
<attribute name="id">
|
393
|
+
<data type="ID"/>
|
394
|
+
</attribute>
|
395
|
+
<optional>
|
396
|
+
<attribute name="align">
|
397
|
+
<ref name="Alignments"/>
|
398
|
+
</attribute>
|
399
|
+
</optional>
|
400
|
+
<optional>
|
401
|
+
<attribute name="keep-with-next">
|
402
|
+
<data type="boolean"/>
|
403
|
+
</attribute>
|
404
|
+
</optional>
|
405
|
+
<optional>
|
406
|
+
<attribute name="keep-lines-together">
|
407
|
+
<data type="boolean"/>
|
408
|
+
</attribute>
|
409
|
+
</optional>
|
410
|
+
<zeroOrMore>
|
411
|
+
<ref name="TextElement"/>
|
412
|
+
</zeroOrMore>
|
413
|
+
<zeroOrMore>
|
414
|
+
<ref name="note"/>
|
415
|
+
</zeroOrMore>
|
416
|
+
</define>
|
417
|
+
<define name="paragraph-with-footnote">
|
418
|
+
<element name="p">
|
419
|
+
<attribute name="id">
|
420
|
+
<data type="ID"/>
|
421
|
+
</attribute>
|
422
|
+
<optional>
|
423
|
+
<attribute name="align">
|
424
|
+
<ref name="Alignments"/>
|
425
|
+
</attribute>
|
426
|
+
</optional>
|
427
|
+
<optional>
|
428
|
+
<attribute name="keep-with-next">
|
429
|
+
<data type="boolean"/>
|
430
|
+
</attribute>
|
431
|
+
</optional>
|
432
|
+
<optional>
|
433
|
+
<attribute name="keep-lines-together">
|
434
|
+
<data type="boolean"/>
|
435
|
+
</attribute>
|
436
|
+
</optional>
|
437
|
+
<zeroOrMore>
|
438
|
+
<choice>
|
439
|
+
<ref name="TextElement"/>
|
440
|
+
<ref name="fn"/>
|
441
|
+
</choice>
|
442
|
+
</zeroOrMore>
|
443
|
+
<zeroOrMore>
|
444
|
+
<ref name="note"/>
|
445
|
+
</zeroOrMore>
|
446
|
+
</element>
|
447
|
+
</define>
|
448
|
+
<define name="quote">
|
449
|
+
<element name="quote">
|
450
|
+
<attribute name="id">
|
451
|
+
<data type="ID"/>
|
452
|
+
</attribute>
|
453
|
+
<optional>
|
454
|
+
<attribute name="alignment">
|
455
|
+
<ref name="Alignments"/>
|
456
|
+
</attribute>
|
457
|
+
</optional>
|
458
|
+
<optional>
|
459
|
+
<attribute name="keep-with-next">
|
460
|
+
<data type="boolean"/>
|
461
|
+
</attribute>
|
462
|
+
</optional>
|
463
|
+
<optional>
|
464
|
+
<attribute name="keep-lines-together">
|
465
|
+
<data type="boolean"/>
|
466
|
+
</attribute>
|
467
|
+
</optional>
|
468
|
+
<optional>
|
469
|
+
<ref name="quote-source"/>
|
470
|
+
</optional>
|
471
|
+
<optional>
|
472
|
+
<ref name="quote-author"/>
|
473
|
+
</optional>
|
474
|
+
<oneOrMore>
|
475
|
+
<ref name="paragraph-with-footnote"/>
|
476
|
+
</oneOrMore>
|
477
|
+
<zeroOrMore>
|
478
|
+
<ref name="note"/>
|
479
|
+
</zeroOrMore>
|
480
|
+
</element>
|
481
|
+
</define>
|
92
482
|
<define name="BibDataExtensionType">
|
93
483
|
<ref name="doctype"/>
|
94
484
|
<optional>
|
@@ -129,6 +519,9 @@
|
|
129
519
|
</choice>
|
130
520
|
</attribute>
|
131
521
|
</optional>
|
522
|
+
<attribute name="normative">
|
523
|
+
<data type="boolean"/>
|
524
|
+
</attribute>
|
132
525
|
<optional>
|
133
526
|
<ref name="section-title"/>
|
134
527
|
</optional>
|
@@ -154,6 +547,30 @@
|
|
154
547
|
<attribute name="id">
|
155
548
|
<data type="ID"/>
|
156
549
|
</attribute>
|
550
|
+
<optional>
|
551
|
+
<attribute name="unnumbered">
|
552
|
+
<data type="boolean"/>
|
553
|
+
</attribute>
|
554
|
+
</optional>
|
555
|
+
<optional>
|
556
|
+
<attribute name="number"/>
|
557
|
+
</optional>
|
558
|
+
<optional>
|
559
|
+
<attribute name="subsequence"/>
|
560
|
+
</optional>
|
561
|
+
<optional>
|
562
|
+
<attribute name="keep-with-next">
|
563
|
+
<data type="boolean"/>
|
564
|
+
</attribute>
|
565
|
+
</optional>
|
566
|
+
<optional>
|
567
|
+
<attribute name="keep-lines-together">
|
568
|
+
<data type="boolean"/>
|
569
|
+
</attribute>
|
570
|
+
</optional>
|
571
|
+
<optional>
|
572
|
+
<attribute name="type"/>
|
573
|
+
</optional>
|
157
574
|
<oneOrMore>
|
158
575
|
<choice>
|
159
576
|
<ref name="paragraph"/>
|
@@ -303,11 +720,11 @@
|
|
303
720
|
<ref name="paragraph"/>
|
304
721
|
</element>
|
305
722
|
</define>
|
306
|
-
<define name="TextElement" combine="choice">
|
307
|
-
<ref name="concept"/>
|
308
|
-
</define>
|
309
723
|
</include>
|
310
724
|
<!-- end overrides -->
|
725
|
+
<define name="TextElement" combine="choice">
|
726
|
+
<ref name="concept"/>
|
727
|
+
</define>
|
311
728
|
<define name="concept">
|
312
729
|
<element name="concept">
|
313
730
|
<optional>
|
@@ -899,7 +1316,36 @@
|
|
899
1316
|
<attribute name="id">
|
900
1317
|
<data type="ID"/>
|
901
1318
|
</attribute>
|
902
|
-
<
|
1319
|
+
<optional>
|
1320
|
+
<attribute name="unnumbered">
|
1321
|
+
<data type="boolean"/>
|
1322
|
+
</attribute>
|
1323
|
+
</optional>
|
1324
|
+
<optional>
|
1325
|
+
<attribute name="number"/>
|
1326
|
+
</optional>
|
1327
|
+
<optional>
|
1328
|
+
<attribute name="subsequence"/>
|
1329
|
+
</optional>
|
1330
|
+
<optional>
|
1331
|
+
<attribute name="keep-with-next">
|
1332
|
+
<data type="boolean"/>
|
1333
|
+
</attribute>
|
1334
|
+
</optional>
|
1335
|
+
<optional>
|
1336
|
+
<attribute name="keep-lines-together">
|
1337
|
+
<data type="boolean"/>
|
1338
|
+
</attribute>
|
1339
|
+
</optional>
|
1340
|
+
<oneOrMore>
|
1341
|
+
<choice>
|
1342
|
+
<ref name="paragraph"/>
|
1343
|
+
<ref name="ul"/>
|
1344
|
+
<ref name="ol"/>
|
1345
|
+
<ref name="dl"/>
|
1346
|
+
<ref name="formula"/>
|
1347
|
+
</choice>
|
1348
|
+
</oneOrMore>
|
903
1349
|
</element>
|
904
1350
|
</define>
|
905
1351
|
<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">
|
@@ -354,6 +362,9 @@
|
|
354
362
|
<data type="boolean"/>
|
355
363
|
</attribute>
|
356
364
|
</optional>
|
365
|
+
<optional>
|
366
|
+
<attribute name="number"/>
|
367
|
+
</optional>
|
357
368
|
<optional>
|
358
369
|
<attribute name="subsequence"/>
|
359
370
|
</optional>
|
@@ -510,7 +521,7 @@
|
|
510
521
|
</attribute>
|
511
522
|
</optional>
|
512
523
|
<oneOrMore>
|
513
|
-
<ref name="
|
524
|
+
<ref name="BasicBlock"/>
|
514
525
|
</oneOrMore>
|
515
526
|
</element>
|
516
527
|
</define>
|
data/lib/relaton_gb.rb
CHANGED
data/lib/relaton_gb/ccs.rb
CHANGED
@@ -4,5 +4,17 @@ module Cnccs
|
|
4
4
|
def to_hash
|
5
5
|
{ "code" => code }
|
6
6
|
end
|
7
|
+
|
8
|
+
# @param prefix [String]
|
9
|
+
# @param count [Integer]
|
10
|
+
# @return [String]
|
11
|
+
def to_aciibib(prefix = "", count = 1)
|
12
|
+
pref = prefix.empty? ? prefix : prefix + "."
|
13
|
+
pref += "ccs"
|
14
|
+
out = count > 1 ? "#{pref}::\n" : ""
|
15
|
+
out += "#{pref}.code:: #{code}\n" if code
|
16
|
+
out += "#{pref}.description:: #{description}\n" if description
|
17
|
+
out
|
18
|
+
end
|
7
19
|
end
|
8
20
|
end
|
@@ -35,6 +35,7 @@ module RelatonGb
|
|
35
35
|
@ccs = args[:ccs].map { |c| c.is_a?(Cnccs::Ccs) ? c : Cnccs.fetch(c) }
|
36
36
|
@gbtype = GbStandardType.new args[:gbtype]
|
37
37
|
@gbplannumber = args[:gbplannumber] || structuredidentifier&.project_number
|
38
|
+
# @doctype = args[:doctype]
|
38
39
|
end
|
39
40
|
|
40
41
|
# @param builder [Nokogiri::XML::Builder]
|
@@ -59,11 +60,17 @@ module RelatonGb
|
|
59
60
|
hash
|
60
61
|
end
|
61
62
|
|
63
|
+
# @param prefix [String]
|
64
|
+
# @return [String]
|
65
|
+
def to_asciibib(prefix = "")
|
66
|
+
out = super
|
67
|
+
ccs.each { |c| out += c.to_aciibib prefix, ccs.size }
|
68
|
+
out
|
69
|
+
end
|
70
|
+
|
62
71
|
# @return [String]
|
63
72
|
def inspect
|
64
|
-
"<#{self.class}:#{format('
|
65
|
-
# "@fullIdentifier=\"#{@fetch&.shortref}\" "\
|
66
|
-
# "@title=\"#{title}\">"
|
73
|
+
"<#{self.class}:#{format('%<id>#.14x', id: object_id << 1)}>"
|
67
74
|
end
|
68
75
|
|
69
76
|
# @return [String]
|
@@ -76,34 +83,11 @@ module RelatonGb
|
|
76
83
|
|
77
84
|
id ||= @docidentifier.reject { |i| i.type == "DOI" }[0]
|
78
85
|
idstr = id.id
|
79
|
-
# if id.part_number&.size&.positive?
|
80
|
-
# idstr = idstr + "-#{id.part_number}"
|
81
|
-
# end
|
82
86
|
idstr.gsub(/\s/, "").strip
|
83
87
|
end
|
84
88
|
|
85
89
|
private
|
86
90
|
|
87
|
-
# Overraides IsoBibliographicItem method.
|
88
|
-
# @param language [Array<String>]
|
89
|
-
# @raise ArgumentError
|
90
|
-
def check_language(language)
|
91
|
-
language.each do |lang|
|
92
|
-
unless %w[en zh].include? lang
|
93
|
-
raise ArgumentError, "invalid language: #{lang}"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
# Overraides IsoBibliographicItem method.
|
99
|
-
# @param script [Array<String>]
|
100
|
-
# @raise ArgumentError
|
101
|
-
def check_script(script)
|
102
|
-
script.each do |scr|
|
103
|
-
raise ArgumentError, "invalid script: #{scr}" unless %w[Latn Hans].include? scr
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
91
|
# @param builder [Nokogiri::XML::Builder]
|
108
92
|
def render_gbxml(builder)
|
109
93
|
gbtype.to_xml builder
|
@@ -16,7 +16,7 @@ module RelatonGb
|
|
16
16
|
# @return [RelatonGb::HitCollection]
|
17
17
|
def scrape_page(text)
|
18
18
|
search_html = OpenURI.open_uri(
|
19
|
-
"http://openstd.samr.gov.cn/bzgk/gb/std_list?p.p2=" + text
|
19
|
+
"http://openstd.samr.gov.cn/bzgk/gb/std_list?p.p2=" + text,
|
20
20
|
)
|
21
21
|
result = Nokogiri::HTML search_html
|
22
22
|
hits = result.xpath(
|
@@ -17,6 +17,15 @@ module RelatonGb
|
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
|
+
#
|
21
|
+
# Ovverides superclass's method
|
22
|
+
#
|
23
|
+
# @param item [Hash]
|
24
|
+
# @retirn [RelatonGb::GbBibliographicItem]
|
25
|
+
def bib_item(item)
|
26
|
+
GbBibliographicItem.new(item)
|
27
|
+
end
|
28
|
+
|
20
29
|
def ccs_hash_to_bib(ret)
|
21
30
|
ret[:ccs] = array(ret[:ccs]).map do |ccs|
|
22
31
|
ccs[:code] ? Cnccs.fetch(ccs[:code]) : Cnccs.fetch(ccs)
|
data/lib/relaton_gb/hit.rb
CHANGED
@@ -38,7 +38,7 @@ module RelatonGb
|
|
38
38
|
|
39
39
|
# @return [String]
|
40
40
|
def inspect
|
41
|
-
"<#{self.class}:#{format('
|
41
|
+
"<#{self.class}:#{format('%<id>#.14x', id: object_id << 1)} "\
|
42
42
|
"@fullIdentifier=\"#{@fetch&.shortref}\" "\
|
43
43
|
"@docref=\"#{docref}\">"
|
44
44
|
end
|
@@ -5,10 +5,11 @@ module RelatonGb
|
|
5
5
|
class HitCollection < RelatonBib::HitCollection
|
6
6
|
# @param hits [Array<Hash>]
|
7
7
|
# @param hit_pages [Integer]
|
8
|
-
# @param scrapper [RelatonGb::GbScrapper, RelatonGb::SecScrapper,
|
8
|
+
# @param scrapper [RelatonGb::GbScrapper, RelatonGb::SecScrapper,
|
9
|
+
# RelatonGb::TScrapper]
|
9
10
|
def initialize(hits = [])
|
10
11
|
@array = hits
|
11
|
-
@fetched
|
12
|
+
@fetched = false
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
data/lib/relaton_gb/scrapper.rb
CHANGED
@@ -55,32 +55,37 @@ module RelatonGb
|
|
55
55
|
# @param docref [Strings]
|
56
56
|
# @return [Array<Hash>]
|
57
57
|
def get_contributors(doc, docref)
|
58
|
-
gb_en = GbAgencies::Agencies.new("en", {}, "")
|
59
|
-
gb_zh = GbAgencies::Agencies.new("zh", {}, "")
|
60
58
|
name = docref.match(/^[^\s]+/).to_s
|
61
59
|
name.sub!(%r{/[TZ]$}, "") unless name =~ /^GB/
|
62
60
|
gbtype = get_gbtype(doc, docref)
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
orgs = %w[en zh].map { |l| org(l, name, gbtype) }.compact
|
62
|
+
return [] unless orgs.any?
|
63
|
+
|
64
|
+
entity = RelatonBib::Organization.new name: orgs
|
67
65
|
[{ entity: entity, role: [type: "publisher"] }]
|
68
66
|
end
|
69
67
|
|
68
|
+
# @param lang [String]
|
69
|
+
# @param name [String]
|
70
|
+
# @param gbtype [Hash]
|
71
|
+
# @return [Hash]
|
72
|
+
def org(lang, name, gbtype)
|
73
|
+
ag = GbAgencies::Agencies.new(lang, {}, "")
|
74
|
+
content = ag.standard_agency1(gbtype[:scope], name, gbtype[:mandate])
|
75
|
+
return unless content
|
76
|
+
|
77
|
+
{ language: lang, content: content }
|
78
|
+
end
|
79
|
+
|
70
80
|
# @param doc [Nokogiri::HTML::Document]
|
71
|
-
# @return [Array<
|
72
|
-
# * :title_intro [String]
|
73
|
-
# * :title_main [String]
|
74
|
-
# * :language [String]
|
75
|
-
# * :script [String]
|
81
|
+
# @return [Array<RelatonBib::TypedTitleString>]
|
76
82
|
def get_titles(doc)
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
titles
|
83
|
+
tzh = doc.at("//td[contains(text(), '中文标准名称')]/b").text
|
84
|
+
titles = RelatonBib::TypedTitleString.from_string tzh, "zh", "Hans"
|
85
|
+
ten = doc.at("//td[contains(text(), '英文标准名称')]").text.match(/[\w\s]+/).to_s
|
86
|
+
return titles if ten.empty?
|
87
|
+
|
88
|
+
titles + RelatonBib::TypedTitleString.from_string(ten, "en", "Latn")
|
84
89
|
end
|
85
90
|
|
86
91
|
def get_type
|
@@ -113,12 +118,6 @@ module RelatonGb
|
|
113
118
|
mandate: get_mandate(ref), topic: "other" }
|
114
119
|
end
|
115
120
|
|
116
|
-
# @param doc [Nokogiri::HTML::Document]
|
117
|
-
# @return [String]
|
118
|
-
# def get_ref(doc)
|
119
|
-
# doc.xpath('//dt[text()="标准号"]/following-sibling::dd[1]').text
|
120
|
-
# end
|
121
|
-
|
122
121
|
# @param doc [Nokogiri::HTML::Document]
|
123
122
|
# @return [Array<String>]
|
124
123
|
def get_ccs(doc)
|
@@ -58,13 +58,15 @@ module RelatonGb
|
|
58
58
|
# * :language [String]
|
59
59
|
# * :script [String]
|
60
60
|
def get_titles(doc)
|
61
|
-
titles = [{ title_main: doc.at("//h4").text.delete("\r\n\t"),
|
62
|
-
|
61
|
+
# titles = [{ title_main: doc.at("//h4").text.delete("\r\n\t"),
|
62
|
+
# title_intro: nil, language: "zh", script: "Hans" }]
|
63
|
+
tzh = doc.at("//h4").text.delete("\r\n\t")
|
64
|
+
RelatonBib::TypedTitleString.from_string tzh, "zh", "Hans"
|
63
65
|
# title_main = doc.at("//td[contains(text(), '英文标准名称')]").text.match(/[\w\s]+/).to_s
|
64
66
|
# unless title_main.empty?
|
65
67
|
# titles << { title_main: title_main, title_intro: nil, language: "en", script: "Latn" }
|
66
68
|
# end
|
67
|
-
titles
|
69
|
+
# titles
|
68
70
|
end
|
69
71
|
|
70
72
|
# @param _doc [Nokogiri::HTML::Document]
|
@@ -21,7 +21,7 @@ module RelatonGb
|
|
21
21
|
def scrape_page(text)
|
22
22
|
search_html = OpenURI.open_uri(
|
23
23
|
"http://www.ttbz.org.cn/Home/Standard?searchType=2&key=" +
|
24
|
-
CGI.escape(text.tr("-", [8212].pack("U")))
|
24
|
+
CGI.escape(text.tr("-", [8212].pack("U")))
|
25
25
|
).read
|
26
26
|
header = Nokogiri::HTML search_html
|
27
27
|
xpath = '//table[contains(@class, "standard_list_table")]/tr/td/a'
|
@@ -84,26 +84,21 @@ module RelatonGb
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def get_titles(doc)
|
87
|
-
|
88
|
-
titles =
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
96
|
-
titles
|
87
|
+
xpz = '//td[contains(.,"中文标题")]/following-sibling::td[1]'
|
88
|
+
titles = RelatonBib::TypedTitleString.from_string doc.at(xpz)
|
89
|
+
.text, "zh", "Hans"
|
90
|
+
xpe = '//td[contains(.,"英文标题")]/following-sibling::td[1]'
|
91
|
+
ten = doc.xpath(xpe).text
|
92
|
+
return titles if ten.empty?
|
93
|
+
|
94
|
+
titles + RelatonBib::TypedTitleString.from_string(ten, "en", "Latn")
|
97
95
|
end
|
98
96
|
|
99
97
|
def gbtype
|
100
|
-
{ scope: "social-group", prefix: "T", mandate: "mandatory",
|
98
|
+
{ scope: "social-group", prefix: "T", mandate: "mandatory",
|
99
|
+
topic: "other" }
|
101
100
|
end
|
102
101
|
|
103
|
-
# def get_group_code(ref)
|
104
|
-
# ref.match(%r{(?<=\/)[^\s]})
|
105
|
-
# end
|
106
|
-
|
107
102
|
def get_ccs(doc)
|
108
103
|
[doc.xpath('//td[contains(.,"中国标准分类号")]/following-sibling::td[1]')
|
109
104
|
.text.gsub(/[\r\n]/, "").strip.match(/^[^\s]+/).to_s]
|
data/lib/relaton_gb/version.rb
CHANGED
@@ -3,18 +3,15 @@ require "nokogiri"
|
|
3
3
|
module RelatonGb
|
4
4
|
class XMLParser < RelatonIsoBib::XMLParser
|
5
5
|
class << self
|
6
|
-
def from_xml(xml)
|
7
|
-
doc = Nokogiri::XML(xml)
|
8
|
-
gbitem = doc.at "/bibitem|/bibdata"
|
9
|
-
if gbitem
|
10
|
-
GbBibliographicItem.new item_data(gbitem)
|
11
|
-
else
|
12
|
-
warn "[relato-gb] can't find bibitem or bibdata element in the XML"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
6
|
private
|
17
7
|
|
8
|
+
# override RelatonBib::BibliographicItem.bib_item method
|
9
|
+
# @param item_hash [Hash]
|
10
|
+
# @return [RelatonGb::GbBibliographicItem]
|
11
|
+
def bib_item(item_hash)
|
12
|
+
GbBibliographicItem.new item_hash
|
13
|
+
end
|
14
|
+
|
18
15
|
def item_data(gbitem)
|
19
16
|
data = super
|
20
17
|
data[:committee] = fetch_committee gbitem
|
@@ -24,11 +21,6 @@ module RelatonGb
|
|
24
21
|
data
|
25
22
|
end
|
26
23
|
|
27
|
-
# Overrade get_id from RelatonIsoBib::XMLParser
|
28
|
-
# def get_id(did)
|
29
|
-
# did.text.match(/^(?<project>.*?\d+)(?<hyphen>-)?(?(<hyphen>)(?<year>\d*))/)
|
30
|
-
# end
|
31
|
-
|
32
24
|
def fetch_committee(doc)
|
33
25
|
committee = doc.at "./ext/gbcommittee"
|
34
26
|
return nil unless committee
|
data/relaton_gb.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-gb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.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-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -182,16 +182,16 @@ dependencies:
|
|
182
182
|
name: relaton-iso-bib
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 1.
|
187
|
+
version: 1.3.0
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 1.
|
194
|
+
version: 1.3.0
|
195
195
|
description: 'RelatonGb: retrieve Chinese GB Standards for bibliographic use using
|
196
196
|
the BibliographicItem model.'
|
197
197
|
email:
|