relaton-cen 1.10.1 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03e0f638df3f9960bfd28828b6118cfa415bbb453047d719e269e5f9cad200b7
4
- data.tar.gz: e1532e8304891b58fd530cb13241a8b40dcbddbb0342a8445826674e0481ddcf
3
+ metadata.gz: 8bd935ca1c16e6d5833d37fda0c26fc65a8b9b7d2752bc987d115e78809797f0
4
+ data.tar.gz: 81c0bc69fa1f1469d2c043172b8c7b764bc3d759d609a11591afcdfe785ecbd9
5
5
  SHA512:
6
- metadata.gz: 5a076794e2cdb3a07ce6daf2e9bcfb7f8af2a86c4c25bcef8409c6e37f030501b77f5cb94772d3aaefb44d45aac9ce1a618514e7b962481e4332293f7e5e3e61
7
- data.tar.gz: b3dfa7fb0adf82426f23efa8a17a875ff6f9902c4b32979206f570d1c72b820e2bcb6f6773ea702c890a5fbcf9f6ac34213bfa8249eaebfb1ef18cd74f748f19
6
+ metadata.gz: d8afe159ecfc2ac229f4dea196743889071a1302560f81546a5db4b43a9d2a78706d68ad29de13b9331b26381d0683061d74ddd2db4d70fa29ba32d40edf22a9
7
+ data.tar.gz: 28484d8a7910f37d6df799615a055cd86e8cb7aa6599bcd7e0d4a08e103c991737a1aea2b0943250cbb1ae06befb1b218e9e35a1068366dd9c22378467484a18
@@ -10,27 +10,4 @@ on:
10
10
 
11
11
  jobs:
12
12
  rake:
13
- name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
- runs-on: ${{ matrix.os }}
15
- continue-on-error: ${{ matrix.experimental }}
16
- strategy:
17
- fail-fast: false
18
- matrix:
19
- ruby: [ '3.0', '2.7', '2.6', '2.5' ]
20
- os: [ ubuntu-latest, windows-latest, macos-latest ]
21
- experimental: [ false ]
22
- steps:
23
- - uses: actions/checkout@v2
24
- with:
25
- submodules: true
26
-
27
- # https://github.com/ruby-debug/debase/issues/89#issuecomment-686827382
28
- - if: matrix.os == 'macos-latest' && matrix.ruby == '2.5'
29
- run: echo BUNDLE_BUILD__DEBASE="--with-cflags=\"-Wno-error=implicit-function-declaration\"" >> $GITHUB_ENV
30
-
31
- - uses: ruby/setup-ruby@v1
32
- with:
33
- ruby-version: ${{ matrix.ruby }}
34
- bundler-cache: true
35
-
36
- - run: bundle exec rake
13
+ uses: relaton/support/.github/workflows/rake.yml@master
data/grammars/biblio.rng CHANGED
@@ -527,7 +527,7 @@
527
527
  </define>
528
528
  <define name="LocalityType">
529
529
  <data type="string">
530
- <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>
530
+ <param name="pattern">section|clause|part|paragraph|chapter|page|title|line|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
531
531
  </data>
532
532
  </define>
533
533
  <define name="referenceFrom">
@@ -614,12 +614,103 @@
614
614
  <optional>
615
615
  <ref name="fetched"/>
616
616
  </optional>
617
- <choice>
618
- <oneOrMore>
619
- <ref name="btitle"/>
620
- </oneOrMore>
617
+ <optional>
621
618
  <ref name="formattedref"/>
622
- </choice>
619
+ </optional>
620
+ <oneOrMore>
621
+ <ref name="btitle"/>
622
+ </oneOrMore>
623
+ <zeroOrMore>
624
+ <ref name="bsource"/>
625
+ </zeroOrMore>
626
+ <oneOrMore>
627
+ <ref name="docidentifier"/>
628
+ </oneOrMore>
629
+ <optional>
630
+ <ref name="docnumber"/>
631
+ </optional>
632
+ <zeroOrMore>
633
+ <ref name="bdate"/>
634
+ </zeroOrMore>
635
+ <zeroOrMore>
636
+ <ref name="contributor"/>
637
+ </zeroOrMore>
638
+ <optional>
639
+ <ref name="edition"/>
640
+ </optional>
641
+ <zeroOrMore>
642
+ <ref name="version"/>
643
+ </zeroOrMore>
644
+ <zeroOrMore>
645
+ <ref name="biblionote"/>
646
+ </zeroOrMore>
647
+ <zeroOrMore>
648
+ <ref name="language"/>
649
+ </zeroOrMore>
650
+ <zeroOrMore>
651
+ <ref name="script"/>
652
+ </zeroOrMore>
653
+ <zeroOrMore>
654
+ <ref name="bibabstract"/>
655
+ </zeroOrMore>
656
+ <optional>
657
+ <ref name="status"/>
658
+ </optional>
659
+ <zeroOrMore>
660
+ <ref name="copyright"/>
661
+ </zeroOrMore>
662
+ <zeroOrMore>
663
+ <ref name="docrelation"/>
664
+ </zeroOrMore>
665
+ <zeroOrMore>
666
+ <ref name="series"/>
667
+ </zeroOrMore>
668
+ <optional>
669
+ <ref name="medium"/>
670
+ </optional>
671
+ <zeroOrMore>
672
+ <ref name="bplace"/>
673
+ </zeroOrMore>
674
+ <zeroOrMore>
675
+ <ref name="bprice"/>
676
+ </zeroOrMore>
677
+ <zeroOrMore>
678
+ <ref name="extent"/>
679
+ </zeroOrMore>
680
+ <optional>
681
+ <ref name="bibliographic_size"/>
682
+ </optional>
683
+ <zeroOrMore>
684
+ <ref name="accesslocation"/>
685
+ </zeroOrMore>
686
+ <zeroOrMore>
687
+ <ref name="license"/>
688
+ </zeroOrMore>
689
+ <zeroOrMore>
690
+ <ref name="bclassification"/>
691
+ </zeroOrMore>
692
+ <zeroOrMore>
693
+ <ref name="bkeyword"/>
694
+ </zeroOrMore>
695
+ <optional>
696
+ <ref name="validity"/>
697
+ </optional>
698
+ </define>
699
+ <define name="ReducedBibliographicItem">
700
+ <optional>
701
+ <attribute name="type">
702
+ <ref name="BibItemType"/>
703
+ </attribute>
704
+ </optional>
705
+ <optional>
706
+ <ref name="fetched"/>
707
+ </optional>
708
+ <optional>
709
+ <ref name="formattedref"/>
710
+ </optional>
711
+ <zeroOrMore>
712
+ <ref name="btitle"/>
713
+ </zeroOrMore>
623
714
  <zeroOrMore>
624
715
  <ref name="bsource"/>
625
716
  </zeroOrMore>
@@ -638,9 +729,9 @@
638
729
  <optional>
639
730
  <ref name="edition"/>
640
731
  </optional>
641
- <optional>
732
+ <zeroOrMore>
642
733
  <ref name="version"/>
643
- </optional>
734
+ </zeroOrMore>
644
735
  <zeroOrMore>
645
736
  <ref name="biblionote"/>
646
737
  </zeroOrMore>
@@ -677,6 +768,9 @@
677
768
  <zeroOrMore>
678
769
  <ref name="extent"/>
679
770
  </zeroOrMore>
771
+ <optional>
772
+ <ref name="bibliographic_size"/>
773
+ </optional>
680
774
  <zeroOrMore>
681
775
  <ref name="accesslocation"/>
682
776
  </zeroOrMore>
@@ -830,6 +924,12 @@
830
924
  <data type="boolean"/>
831
925
  </attribute>
832
926
  </optional>
927
+ <optional>
928
+ <attribute name="language"/>
929
+ </optional>
930
+ <optional>
931
+ <attribute name="script"/>
932
+ </optional>
833
933
  <text/>
834
934
  </element>
835
935
  </define>
@@ -848,17 +948,46 @@
848
948
  </define>
849
949
  <define name="bplace">
850
950
  <element name="place">
851
- <optional>
852
- <attribute name="uri">
853
- <data type="anyURI"/>
854
- </attribute>
855
- </optional>
856
- <optional>
857
- <attribute name="region"/>
858
- </optional>
951
+ <choice>
952
+ <text/>
953
+ <group>
954
+ <ref name="bibliocity"/>
955
+ <zeroOrMore>
956
+ <ref name="biblioregion"/>
957
+ </zeroOrMore>
958
+ <zeroOrMore>
959
+ <ref name="bibliocountry"/>
960
+ </zeroOrMore>
961
+ </group>
962
+ </choice>
963
+ </element>
964
+ </define>
965
+ <define name="bibliocity">
966
+ <element name="city">
859
967
  <text/>
860
968
  </element>
861
969
  </define>
970
+ <define name="biblioregion">
971
+ <element name="region">
972
+ <ref name="RegionType"/>
973
+ </element>
974
+ </define>
975
+ <define name="bibliocountry">
976
+ <element name="country">
977
+ <ref name="RegionType"/>
978
+ </element>
979
+ </define>
980
+ <define name="RegionType">
981
+ <optional>
982
+ <attribute name="iso"/>
983
+ </optional>
984
+ <optional>
985
+ <attribute name="recommended">
986
+ <data type="boolean"/>
987
+ </attribute>
988
+ </optional>
989
+ <text/>
990
+ </define>
862
991
  <define name="bprice">
863
992
  <element name="price">
864
993
  <attribute name="currency"/>
@@ -922,9 +1051,29 @@
922
1051
  <text/>
923
1052
  </element>
924
1053
  </define>
1054
+ <define name="sizevalue">
1055
+ <element name="value">
1056
+ <attribute name="type"/>
1057
+ <text/>
1058
+ </element>
1059
+ </define>
1060
+ <define name="bibliographic_size">
1061
+ <element name="size">
1062
+ <oneOrMore>
1063
+ <ref name="sizevalue"/>
1064
+ </oneOrMore>
1065
+ </element>
1066
+ </define>
925
1067
  <define name="extent">
926
1068
  <element name="extent">
927
- <ref name="BibItemLocality"/>
1069
+ <choice>
1070
+ <zeroOrMore>
1071
+ <ref name="locality"/>
1072
+ </zeroOrMore>
1073
+ <zeroOrMore>
1074
+ <ref name="localityStack"/>
1075
+ </zeroOrMore>
1076
+ </choice>
928
1077
  </element>
929
1078
  </define>
930
1079
  <define name="series">
@@ -934,36 +1083,34 @@
934
1083
  <ref name="SeriesType"/>
935
1084
  </attribute>
936
1085
  </optional>
937
- <choice>
1086
+ <optional>
938
1087
  <ref name="formattedref"/>
939
- <group>
940
- <ref name="btitle"/>
941
- <optional>
942
- <ref name="bplace"/>
943
- </optional>
944
- <optional>
945
- <ref name="seriesorganization"/>
946
- </optional>
947
- <optional>
948
- <ref name="abbreviation"/>
949
- </optional>
950
- <optional>
951
- <ref name="seriesfrom"/>
952
- </optional>
953
- <optional>
954
- <ref name="seriesto"/>
955
- </optional>
956
- <optional>
957
- <ref name="seriesnumber"/>
958
- </optional>
959
- <optional>
960
- <ref name="seriespartnumber"/>
961
- </optional>
962
- <optional>
963
- <ref name="seriesrun"/>
964
- </optional>
965
- </group>
966
- </choice>
1088
+ </optional>
1089
+ <ref name="btitle"/>
1090
+ <optional>
1091
+ <ref name="bplace"/>
1092
+ </optional>
1093
+ <optional>
1094
+ <ref name="seriesorganization"/>
1095
+ </optional>
1096
+ <optional>
1097
+ <ref name="abbreviation"/>
1098
+ </optional>
1099
+ <optional>
1100
+ <ref name="seriesfrom"/>
1101
+ </optional>
1102
+ <optional>
1103
+ <ref name="seriesto"/>
1104
+ </optional>
1105
+ <optional>
1106
+ <ref name="seriesnumber"/>
1107
+ </optional>
1108
+ <optional>
1109
+ <ref name="seriespartnumber"/>
1110
+ </optional>
1111
+ <optional>
1112
+ <ref name="seriesrun"/>
1113
+ </optional>
967
1114
  </element>
968
1115
  </define>
969
1116
  <define name="SeriesType">
@@ -1122,7 +1269,7 @@
1122
1269
  </element>
1123
1270
  </optional>
1124
1271
  <element name="bibitem">
1125
- <ref name="BibliographicItem"/>
1272
+ <ref name="ReducedBibliographicItem"/>
1126
1273
  </element>
1127
1274
  <choice>
1128
1275
  <zeroOrMore>
@@ -1147,9 +1294,9 @@
1147
1294
  <optional>
1148
1295
  <ref name="revision-date"/>
1149
1296
  </optional>
1150
- <zeroOrMore>
1297
+ <optional>
1151
1298
  <ref name="draft"/>
1152
- </zeroOrMore>
1299
+ </optional>
1153
1300
  </element>
1154
1301
  </define>
1155
1302
  <define name="vedition">
data/grammars/isodoc.rng CHANGED
@@ -32,6 +32,43 @@
32
32
  <ref name="DocumentType"/>
33
33
  </element>
34
34
  </define>
35
+ <define name="admonition">
36
+ <element name="admonition">
37
+ <attribute name="type">
38
+ <ref name="AdmonitionType"/>
39
+ </attribute>
40
+ <optional>
41
+ <attribute name="class"/>
42
+ </optional>
43
+ <attribute name="id">
44
+ <data type="ID"/>
45
+ </attribute>
46
+ <optional>
47
+ <attribute name="uri">
48
+ <data type="anyURI"/>
49
+ </attribute>
50
+ </optional>
51
+ <optional>
52
+ <attribute name="coverpage">
53
+ <data type="boolean"/>
54
+ </attribute>
55
+ </optional>
56
+ <optional>
57
+ <attribute name="notag">
58
+ <data type="boolean"/>
59
+ </attribute>
60
+ </optional>
61
+ <optional>
62
+ <ref name="tname"/>
63
+ </optional>
64
+ <zeroOrMore>
65
+ <ref name="paragraph-with-footnote"/>
66
+ </zeroOrMore>
67
+ <zeroOrMore>
68
+ <ref name="note"/>
69
+ </zeroOrMore>
70
+ </element>
71
+ </define>
35
72
  <define name="index">
36
73
  <element name="index">
37
74
  <optional>
@@ -79,6 +116,11 @@
79
116
  <data type="boolean"/>
80
117
  </attribute>
81
118
  </optional>
119
+ <optional>
120
+ <attribute name="suppress_identifier">
121
+ <data type="boolean"/>
122
+ </attribute>
123
+ </optional>
82
124
  <ref name="BibliographicItem"/>
83
125
  </element>
84
126
  </define>
@@ -152,9 +194,7 @@
152
194
  <data type="boolean"/>
153
195
  </attribute>
154
196
  </optional>
155
- <oneOrMore>
156
- <ref name="PureTextElement"/>
157
- </oneOrMore>
197
+ <ref name="XrefBody"/>
158
198
  </element>
159
199
  </define>
160
200
  <define name="erefType">
@@ -188,6 +228,42 @@
188
228
  <ref name="PureTextElement"/>
189
229
  </oneOrMore>
190
230
  </define>
231
+ <define name="localityStack">
232
+ <element name="localityStack">
233
+ <optional>
234
+ <attribute name="connective">
235
+ <choice>
236
+ <value>and</value>
237
+ <value>or</value>
238
+ <value>from</value>
239
+ <value>to</value>
240
+ <value/>
241
+ </choice>
242
+ </attribute>
243
+ </optional>
244
+ <zeroOrMore>
245
+ <ref name="locality"/>
246
+ </zeroOrMore>
247
+ </element>
248
+ </define>
249
+ <define name="sourceLocalityStack">
250
+ <element name="sourceLocalityStack">
251
+ <optional>
252
+ <attribute name="connective">
253
+ <choice>
254
+ <value>and</value>
255
+ <value>or</value>
256
+ <value>from</value>
257
+ <value>to</value>
258
+ <value/>
259
+ </choice>
260
+ </attribute>
261
+ </optional>
262
+ <zeroOrMore>
263
+ <ref name="sourceLocality"/>
264
+ </zeroOrMore>
265
+ </element>
266
+ </define>
191
267
  <define name="ul">
192
268
  <element name="ul">
193
269
  <attribute name="id">
@@ -211,6 +287,9 @@
211
287
  <ref name="MultilingualRenderingType"/>
212
288
  </attribute>
213
289
  </optional>
290
+ <optional>
291
+ <ref name="tname"/>
292
+ </optional>
214
293
  <oneOrMore>
215
294
  <ref name="ul_li"/>
216
295
  </oneOrMore>
@@ -253,6 +332,9 @@
253
332
  </choice>
254
333
  </attribute>
255
334
  </optional>
335
+ <optional>
336
+ <ref name="tname"/>
337
+ </optional>
256
338
  <oneOrMore>
257
339
  <ref name="li"/>
258
340
  </oneOrMore>
@@ -289,6 +371,9 @@
289
371
  <ref name="MultilingualRenderingType"/>
290
372
  </attribute>
291
373
  </optional>
374
+ <optional>
375
+ <ref name="tname"/>
376
+ </optional>
292
377
  <oneOrMore>
293
378
  <ref name="dt"/>
294
379
  <ref name="dd"/>
@@ -623,6 +708,9 @@
623
708
  <optional>
624
709
  <attribute name="tag"/>
625
710
  </optional>
711
+ <optional>
712
+ <attribute name="type"/>
713
+ </optional>
626
714
  <optional>
627
715
  <attribute name="multilingual-rendering">
628
716
  <ref name="MultilingualRenderingType"/>
@@ -658,6 +746,9 @@
658
746
  <optional>
659
747
  <attribute name="tag"/>
660
748
  </optional>
749
+ <optional>
750
+ <attribute name="type"/>
751
+ </optional>
661
752
  <optional>
662
753
  <attribute name="multilingual-rendering">
663
754
  <ref name="MultilingualRenderingType"/>
@@ -817,6 +908,16 @@
817
908
  <ref name="MultilingualRenderingType"/>
818
909
  </attribute>
819
910
  </optional>
911
+ <optional>
912
+ <attribute name="coverpage">
913
+ <data type="boolean"/>
914
+ </attribute>
915
+ </optional>
916
+ <optional>
917
+ <attribute name="notag">
918
+ <data type="boolean"/>
919
+ </attribute>
920
+ </optional>
820
921
  <oneOrMore>
821
922
  <choice>
822
923
  <ref name="paragraph"/>
@@ -1098,6 +1199,16 @@
1098
1199
  </define>
1099
1200
  </include>
1100
1201
  <!-- end overrides -->
1202
+ <define name="image" combine="choice">
1203
+ <element name="svg">
1204
+ <oneOrMore>
1205
+ <choice>
1206
+ <text/>
1207
+ <ref name="AnyElement"/>
1208
+ </choice>
1209
+ </oneOrMore>
1210
+ </element>
1211
+ </define>
1101
1212
  <define name="MultilingualRenderingType">
1102
1213
  <choice>
1103
1214
  <value>common</value>
@@ -1134,6 +1245,7 @@
1134
1245
  <ref name="concept"/>
1135
1246
  <ref name="add"/>
1136
1247
  <ref name="del"/>
1248
+ <ref name="span"/>
1137
1249
  </choice>
1138
1250
  </define>
1139
1251
  <define name="add">
@@ -1160,6 +1272,14 @@
1160
1272
  </choice>
1161
1273
  </element>
1162
1274
  </define>
1275
+ <define name="span">
1276
+ <element name="span">
1277
+ <attribute name="class"/>
1278
+ <oneOrMore>
1279
+ <ref name="TextElement"/>
1280
+ </oneOrMore>
1281
+ </element>
1282
+ </define>
1163
1283
  <define name="concept">
1164
1284
  <element name="concept">
1165
1285
  <optional>
@@ -1950,6 +2070,7 @@
1950
2070
  <value>compare</value>
1951
2071
  <value>contrast</value>
1952
2072
  <value>see</value>
2073
+ <value>seealso</value>
1953
2074
  </choice>
1954
2075
  </define>
1955
2076
  <define name="deprecates">
@@ -2631,4 +2752,30 @@
2631
2752
  </zeroOrMore>
2632
2753
  </element>
2633
2754
  </define>
2755
+ <define name="XrefBody">
2756
+ <zeroOrMore>
2757
+ <ref name="XrefTarget"/>
2758
+ </zeroOrMore>
2759
+ <oneOrMore>
2760
+ <ref name="PureTextElement"/>
2761
+ </oneOrMore>
2762
+ </define>
2763
+ <define name="XrefTarget">
2764
+ <element name="location">
2765
+ <attribute name="target">
2766
+ <data type="string">
2767
+ <param name="pattern">\i\c*|\c+#\c+</param>
2768
+ </data>
2769
+ </attribute>
2770
+ <attribute name="connective">
2771
+ <choice>
2772
+ <value>and</value>
2773
+ <value>or</value>
2774
+ <value>from</value>
2775
+ <value>to</value>
2776
+ <value/>
2777
+ </choice>
2778
+ </attribute>
2779
+ </element>
2780
+ </define>
2634
2781
  </grammar>
@@ -45,6 +45,9 @@
45
45
  <ref name="horizontal"/>
46
46
  </optional>
47
47
  <ref name="editorialgroup"/>
48
+ <optional>
49
+ <ref name="approvalgroup"/>
50
+ </optional>
48
51
  <zeroOrMore>
49
52
  <ref name="ics"/>
50
53
  </zeroOrMore>
@@ -249,6 +252,7 @@
249
252
  <value>warning</value>
250
253
  <value>important</value>
251
254
  <value>safety precautions</value>
255
+ <value>editorial</value>
252
256
  </choice>
253
257
  </define>
254
258
  <define name="preface">
@@ -308,18 +312,7 @@
308
312
  </define>
309
313
  <define name="editorialgroup">
310
314
  <element name="editorialgroup">
311
- <oneOrMore>
312
- <ref name="technical-committee"/>
313
- </oneOrMore>
314
- <zeroOrMore>
315
- <ref name="subcommittee"/>
316
- </zeroOrMore>
317
- <zeroOrMore>
318
- <ref name="workgroup"/>
319
- </zeroOrMore>
320
- <optional>
321
- <ref name="secretariat"/>
322
- </optional>
315
+ <ref name="ISOProjectGroup"/>
323
316
  </element>
324
317
  </define>
325
318
  <define name="Content-Section">
@@ -367,6 +360,33 @@
367
360
  </define>
368
361
  </include>
369
362
  <!-- end overrides -->
363
+ <define name="ISOProjectGroup">
364
+ <zeroOrMore>
365
+ <ref name="agency"/>
366
+ </zeroOrMore>
367
+ <oneOrMore>
368
+ <ref name="technical-committee"/>
369
+ </oneOrMore>
370
+ <zeroOrMore>
371
+ <ref name="subcommittee"/>
372
+ </zeroOrMore>
373
+ <zeroOrMore>
374
+ <ref name="workgroup"/>
375
+ </zeroOrMore>
376
+ <optional>
377
+ <ref name="secretariat"/>
378
+ </optional>
379
+ </define>
380
+ <define name="approvalgroup">
381
+ <element name="approvalgroup">
382
+ <ref name="ISOProjectGroup"/>
383
+ </element>
384
+ </define>
385
+ <define name="agency">
386
+ <element name="agency">
387
+ <text/>
388
+ </element>
389
+ </define>
370
390
  <!--
371
391
  We display the Normative References between scope and terms; but to keep the
372
392
  grammar simple, we keep the references together
@@ -14,8 +14,8 @@ module RelatonCen
14
14
  # @param text [String]
15
15
  # @return [RelatonCen::HitCollection]
16
16
  def search(text, year = nil)
17
- /^C?EN\s(?<code>.+)/ =~ text
18
- HitCollection.new code, year
17
+ # /^C?EN\s(?<code>.+)/ =~ text
18
+ HitCollection.new text, year
19
19
  rescue Mechanize::ResponseCodeError => e
20
20
  raise RelatonBib::RequestError, e.message
21
21
  end
@@ -25,12 +25,26 @@ module RelatonCen
25
25
  # @param opts [Hash] options; restricted to :all_parts if all-parts
26
26
  # reference is required
27
27
  # @return [RelatonBib::BibliographicItem, nil]
28
- def get(code, year = nil, opts = {}) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
29
- code1, year1 = code.split ":"
30
- code = code1
31
- year ||= year1
28
+ def get(code, year = nil, opts = {})
29
+ code_parts = code_to_parts code
30
+ year ||= code_parts[:year] if code_parts
32
31
 
33
- bib_get1(code, year, opts)
32
+ bib_get(code, year, opts)
33
+ end
34
+
35
+ #
36
+ # Decopmposes a CEN standard code into its parts.
37
+ #
38
+ # @param [String] code the CEN standard code to decompose
39
+ #
40
+ # @return [MatchData] the decomposition of the code
41
+ #
42
+ def code_to_parts(code)
43
+ %r{^
44
+ (?<code>[^:-]+)(?:-(?<part>\d+))?
45
+ (?::(?<year>\d{4}))?
46
+ (?:\+(?<amd>[A-Z]\d+)(?:(?<amy>\d{4}))?)?
47
+ }x.match code
34
48
  end
35
49
 
36
50
  private
@@ -38,10 +52,10 @@ module RelatonCen
38
52
  def fetch_ref_err(code, year, missed_years) # rubocop:disable Metrics/MethodLength
39
53
  id = year ? "#{code}:#{year}" : code
40
54
  warn "[relaton-cen] WARNING: no match found online for #{id}. "\
41
- "The code must be exactly like it is on the standards website."
55
+ "The code must be exactly like it is on the standards website."
42
56
  unless missed_years.empty?
43
57
  warn "[relaton-cen] (There was no match for #{year}, though there "\
44
- "were matches found for #{missed_years.join(', ')}.)"
58
+ "were matches found for #{missed_years.join(', ')}.)"
45
59
  end
46
60
  # if /\d-\d/.match? code
47
61
  # warn "[relaton-cen] The provided document part may not exist, or "\
@@ -58,12 +72,15 @@ module RelatonCen
58
72
  # @param code [String]
59
73
  # @return [RelatonCen::HitCollection]
60
74
  def search_filter(code) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
61
- %r{^C?EN\s(?<code1>[^-:]+)(?:-(?<part1>\d+))?} =~ code
75
+ parts = code_to_parts code
62
76
  warn "[relaton-cen] (\"#{code}\") fetching..."
63
77
  result = search(code)
64
78
  result.select do |i|
65
- %r{^(?<code2>[^:-]+)(?:-(?<part2>\d+))?} =~ i.hit[:code]
66
- code2.include?(code1) && (!part1 || part1 = part2)
79
+ pts = code_to_parts i.hit[:code]
80
+ parts[:code] == pts[:code] &&
81
+ (!parts[:part] || parts[:part] == pts[:part]) &&
82
+ (!parts[:year] || parts[:year] == pts[:year]) &&
83
+ parts[:amd] == pts[:amd] && (!parts[:amy] || parts[:amy] == pts[:amy])
67
84
  end
68
85
  end
69
86
 
@@ -87,7 +104,7 @@ module RelatonCen
87
104
  { years: missed_years }
88
105
  end
89
106
 
90
- def bib_get1(code, year, _opts)
107
+ def bib_get(code, year, _opts)
91
108
  result = search_filter(code) || return
92
109
  ret = isobib_results_filter(result, year)
93
110
  if ret[:ret]
@@ -29,10 +29,10 @@ module RelatonCen
29
29
 
30
30
  val = case f[:value]
31
31
  when "LANGUAGE_LIST" then 0
32
- when "STAND_REF" then ref
32
+ when "STAND_REF" then CGI.escape(ref)
33
33
  else
34
34
  case f[:name]
35
- when "p_request" then "S1-S2-S3-S4-S5-S6-CEN-CLC-"
35
+ when "p_request" then "S1-S2-S3-S4-S5-S6-S7-CEN-CLC-"
36
36
  when "f10" then ""
37
37
  else f[:value]
38
38
  end
@@ -44,10 +44,24 @@ module RelatonCen
44
44
  end.compact.join("&")
45
45
  resp = agent.post form[:action], req_body
46
46
  @array = hits resp
47
+ sort
47
48
  end
48
49
 
49
50
  private
50
51
 
52
+ def sort
53
+ @array.sort! do |a, b|
54
+ ap = CenBibliography.code_to_parts a.hit[:code]
55
+ bp = CenBibliography.code_to_parts b.hit[:code]
56
+ s = ap[:code] <=> bp[:code]
57
+ s = ap[:part].to_s <=> bp[:part].to_s if s.zero?
58
+ s = bp[:year].to_s <=> ap[:year].to_s if s.zero?
59
+ s = ap[:amd].to_s <=> bp[:amd].to_s if s.zero?
60
+ s = ap[:amy].to_s <=> bp[:amy].to_s if s.zero?
61
+ s
62
+ end
63
+ end
64
+
51
65
  # @param resp [Mechanize::Page]
52
66
  # @return [Array<RelatonCen::Hit>]
53
67
  def hits(resp)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonCen
4
- VERSION = "1.10.1"
4
+ VERSION = "1.12.0"
5
5
  end
data/relaton_cen.gemspec CHANGED
@@ -42,7 +42,7 @@ Gem::Specification.new do |spec|
42
42
  spec.add_development_dependency "webmock"
43
43
 
44
44
  spec.add_dependency "mechanize"
45
- spec.add_dependency "relaton-iso-bib", "~> 1.10.1"
45
+ spec.add_dependency "relaton-iso-bib", "~> 1.12.0"
46
46
 
47
47
  # For more information and examples about making a new gem, checkout our
48
48
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-cen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.1
4
+ version: 1.12.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: 2022-02-09 00:00:00.000000000 Z
11
+ date: 2022-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equivalent-xml
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.10.1
159
+ version: 1.12.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.10.1
166
+ version: 1.12.0
167
167
  description: 'RelatonCen: retrieve Cenelec Standards for bibliographic use using the
168
168
  IsoBibliographicItem model'
169
169
  email: