relaton-iana 1.13.0 → 1.14.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: b49d0c8b26b49087faa09c396eb7edf1ab022ca47d839df6bfcfb561bb0e7ed9
4
- data.tar.gz: af63f2c69e7e8d3aef16a633ff0bad87352519d2ca0f28d2be864f3d6ac6612a
3
+ metadata.gz: a9fa046f24a4997ea2ea0b7d4e5b5ae7c19393ef915776cc1e250112920e65fc
4
+ data.tar.gz: f03595906501b1b7e24dc5e993e63d06a600584e5944126738e1d2f9088551ae
5
5
  SHA512:
6
- metadata.gz: 6f75255c79c47aed5811deaf20d249c49c0b96dae3fe2c0347b1fcec80abd3b36be860712c0f960f2e08bcef1411867aab6a45772ced5ce2587457cbe3737134
7
- data.tar.gz: f4a2584fbb673b9edc47e3c929ef319319d5e4461cbe92efd9a2d366cab5d48a6845b7a7e44541c8cfa6d08113b9c7fc7c933b55ebc8e0c35dfd9ab4597692e4
6
+ metadata.gz: 5db184297758c4d09b76979bbe1ba281ad630a261b884ffd50a9adf66f7cd29004270f0d1ee6b38e5360906c112023907825489f7d7ae52924c37a6bba957721
7
+ data.tar.gz: c8f99fd5e3795d9bc41bf248e4e302ac739c1646fd0abc634fb09943dcf00fa507c8c398f4d12243c5dd4510404e06c8186182f4addcd37f849287d1da3c0714
@@ -5,7 +5,6 @@ name: rake
5
5
  on:
6
6
  push:
7
7
  branches: [ master, main ]
8
- tags: [ v* ]
9
8
  pull_request:
10
9
 
11
10
  jobs:
@@ -0,0 +1,22 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: release
4
+
5
+ on:
6
+ workflow_dispatch:
7
+ inputs:
8
+ next_version:
9
+ description: |
10
+ Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
11
+ required: true
12
+ default: 'skip'
13
+ push:
14
+ tags: [ v* ]
15
+
16
+ jobs:
17
+ release:
18
+ uses: relaton/support/.github/workflows/release.yml@master
19
+ with:
20
+ next_version: ${{ github.event.inputs.next_version }}
21
+ secrets:
22
+ rubygems-api-key: ${{ secrets.RELATON_CI_RUBYGEMS_API_KEY }}
data/README.adoc CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  RelatonIana is a Ruby gem that implements the https://github.com/metanorma/metanorma-model-iso#iso-bibliographic-item[IsoBibliographicItem model].
4
4
 
5
- You can use it to retrieve metadata of W3C Standards from https://w3.org, and access such metadata through the `BibliographicItem` object.
5
+ You can use it to retrieve metadata of W3C Standards from https://w3.org, and access such metadata through the `IanaBibliographicItem` object.
6
6
 
7
7
  == Installation
8
8
 
@@ -33,7 +33,7 @@ require 'relaton_iana'
33
33
  item = RelatonIana::IanaBibliography.get "IANA service-names-port-numbers"
34
34
  [relaton-iana] ("IANA service-names-port-numbers") fetching...
35
35
  [relaton-iana] ("IANA service-names-port-numbers") found IANA service-names-port-numbers
36
- => #<RelatonBib::BibliographicItem:0x00007f7c6cc024d0
36
+ => #<RelatonIana::IanaBibliographicItem:0x00007f7c6cc024d0
37
37
  ...
38
38
  ----
39
39
 
@@ -42,25 +42,13 @@ item = RelatonIana::IanaBibliography.get "IANA service-names-port-numbers"
42
42
  [source,ruby]
43
43
  ----
44
44
  item.to_xml
45
- => "<bibitem id="IANAservice-names-port-numbers" type="standard">
46
- <fetched>2021-11-24</fetched>
47
- <title format="text/plain">Service Name and Transport Protocol Port Number Registry</title>
48
- <uri type="src">http://www.iana.org/assignments/service-names-port-numbers</uri>
49
- <docidentifier type="IANA">IANA service-names-port-numbers</docidentifier>
50
- <docnumber>service-names-port-numbers</docnumber>
51
- <date type="updated">
52
- <on>2021-11-12</on>
53
- </date>
54
- <contributor>
55
- <role type="publisher"/>
56
- <organization>
57
- <name>Internet Assigned Numbers Authority</name>
58
- <abbreviation>IANA</abbreviation>
59
- </organization>
60
- </contributor>
61
- <language>en</language>
62
- <script>Latn</script>
63
- </bibitem>"
45
+ => "<bibitem id="IANAservice-names-port-numbers" type="standard" schema-version="v1.2.1">
46
+ <fetched>2022-12-03</fetched>
47
+ <title format="text/plain">Service Name and Transport Protocol Port Number Registry</title>
48
+ <uri type="src">http://www.iana.org/assignments/service-names-port-numbers</uri>
49
+ <docidentifier type="IANA" primary="true">IANA service-names-port-numbers</docidentifier>
50
+ ...
51
+ </bibitem>"
64
52
  ----
65
53
 
66
54
  === Typed links
@@ -79,38 +67,38 @@ item.link.first.content
79
67
  === Create bibliographic item from XML
80
68
  [source,ruby]
81
69
  ----
82
- RelatonBib::XMLParser.from_xml File.read('spec/fixtures/service-names-port-numbers.xml')
83
- => #<RelatonBib::BibliographicItem:0x00007f7c6b837248
70
+ RelatonIana::XMLParser.from_xml File.read('spec/fixtures/auto-response-parameters.xml')
71
+ => #<RelatonIana::IanaBibliographicItem:0x00007fa5da1bd118
84
72
  ...
85
73
  ----
86
74
 
87
75
  === Create bibliographic item from YAML
88
76
  [source,ruby]
89
77
  ----
90
- hash = YAML.load_file 'spec/fixtures/service-names-port-numbers.yaml'
91
- => {"id"=>"IANAservice-names-port-numbers",
92
- "title"=>{"content"=>"Service Name and Transport Protocol Port Number Registry", "format"=>"text/plain"},
78
+ YAML.load_file 'spec/fixtures/auto-response-parameters.yaml'
79
+ => {"schema-version"=>"v1.2.1",
80
+ "id"=>"IANAauto-response-parameters",
93
81
  ...
94
82
 
95
83
  bib_hash = RelatonIana::HashConverter.hash_to_bib hash
96
- => {:id=>"IANAservice-names-port-numbers",
97
- :title=>{:content=>"Service Name and Transport Protocol Port Number Registry", :format=>"text/plain"},
84
+ => {:"schema-version"=>"v1.2.1",
85
+ :id=>"IANAauto-response-parameters",
98
86
  ...
99
87
 
100
- RelatonBib::BibliographicItem.new **bib_hash
101
- => #<RelatonBib::BibliographicItem:0x007f9381ec6a00
88
+ RelatonIana::IanaBibliographicItem.new **bib_hash
89
+ => #<RelatonIana::IanaBibliographicItem:0x007f9381ec6a00
102
90
  ...
103
91
  ----
104
92
 
105
93
  === Fetch data
106
94
 
107
- There is a IANA dataset https://github.com/ietf-ribose/iana-registries which can be converted into RelatonXML/BibXML/BibYAML formats.
95
+ There is an IANA dataset https://github.com/ietf-ribose/iana-registries which can be converted into RelatonXML/BibXML/BibYAML formats.
108
96
 
109
- The method `RelatonIana::DataFetcher.fetch(output: "data", format: "yaml")` converts all the documents from the dataset and save them to the `./data` folder in YAML format.
97
+ The method `RelatonIana::DataFetcher.fetch(output: "data", format: "yaml")` converts all the documents from the dataset and saves them to the `./data` folder in YAML format.
110
98
  Arguments:
111
99
 
112
100
  - `output` - folder to save documents (default './data').
113
- - `format` - format in which the documents are saved. Possimle formats are: `yaml`, `xml`, `bibxml` (default `yaml`).
101
+ - `format` - the format in which the documents are saved. Possible formats are: `yaml`, `xml`, `bibxml` (default `yaml`).
114
102
 
115
103
  [source,ruby]
116
104
  ----
@@ -121,9 +109,9 @@ Done in: 155 sec.
121
109
  => nil
122
110
  ----
123
111
 
124
- This method uses GitHub search API to fetch the documents. The search API has a https://docs.github.com/en/rest/reference/search#rate-limit[rate limitaion] of 30 requests per minute for authenticated users and 10 requests per minute for unauthenticated users. Usually, the rate limit is not reached because the search API is used only for the files list fetching. But if you run the method multiple times in a short period, it is possible that the rate limit will be reached. In this case, the method will wait until the rate limit is reset.
112
+ This method uses GitHub search API to fetch the documents. The search API has a https://docs.github.com/en/rest/reference/search#rate-limit[rate limitaion] of 30 requests per minute for authenticated users and 10 requests per minute for unauthenticated users. Usually, the rate limit is not reached because the search API is used only for the file list fetching. But if you run the method multiple times in a short period, the rate limit may be reached. In this case, the method will wait until the rate limit is reset.
125
113
 
126
- You can use pesonal access token to increase the rate limit. To do this, add your pesonal access token to the `GITHUB_TOKEN` environment variable.
114
+ You can use a personal access token to increase the rate limit. To do this, add your personal access token to the `GITHUB_TOKEN` environment variable.
127
115
 
128
116
  == Development
129
117
 
@@ -1,10 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <include href="biblio.rng">
4
- <start>
5
- <ref name="document"/>
6
- </start>
7
- </include>
8
3
  <define name="document">
9
4
  <element name="document">
10
5
  <optional>
@@ -688,6 +683,9 @@
688
683
  </define>
689
684
  <define name="underline">
690
685
  <element name="underline">
686
+ <optional>
687
+ <attribute name="style"/>
688
+ </optional>
691
689
  <zeroOrMore>
692
690
  <ref name="PureTextElement"/>
693
691
  </zeroOrMore>
@@ -1125,26 +1123,4 @@
1125
1123
  </zeroOrMore>
1126
1124
  </element>
1127
1125
  </define>
1128
- <define name="ext">
1129
- <element name="ext">
1130
- <ref name="BibDataExtensionType"/>
1131
- </element>
1132
- </define>
1133
- <define name="BibDataExtensionType">
1134
- <ref name="doctype"/>
1135
- </define>
1136
- <define name="doctype">
1137
- <element name="doctype">
1138
- <ref name="DocumentType"/>
1139
- </element>
1140
- </define>
1141
- <define name="DocumentType">
1142
- <value>document</value>
1143
- </define>
1144
- <define name="BibData">
1145
- <ref name="BibliographicItem"/>
1146
- <optional>
1147
- <ref name="ext"/>
1148
- </optional>
1149
- </define>
1150
1126
  </grammar>
@@ -0,0 +1,164 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3
+ <!--
4
+ Add-ons to biblio.rnc for standoc model: defines the extension point BibDataExtensionType
5
+ of relaton
6
+
7
+ Specialisations as for biblio.rnc. Extension point can be redefined completely for a flavour of standoc
8
+ (SDO); but other elements in Bibdata can only be extended (more specialised vocabularies for Bibdata)
9
+ -->
10
+ <include href="biblio.rng">
11
+ <define name="BibData">
12
+ <ref name="BibliographicItem"/>
13
+ <optional>
14
+ <ref name="ext"/>
15
+ </optional>
16
+ </define>
17
+ </include>
18
+ <define name="ext">
19
+ <element name="ext">
20
+ <ref name="BibDataExtensionType"/>
21
+ </element>
22
+ </define>
23
+ <define name="BibDataExtensionType">
24
+ <optional>
25
+ <attribute name="schema-version"/>
26
+ </optional>
27
+ <ref name="doctype"/>
28
+ <optional>
29
+ <ref name="docsubtype"/>
30
+ </optional>
31
+ <optional>
32
+ <ref name="editorialgroup"/>
33
+ </optional>
34
+ <zeroOrMore>
35
+ <ref name="ics"/>
36
+ </zeroOrMore>
37
+ <zeroOrMore>
38
+ <ref name="structuredidentifier"/>
39
+ </zeroOrMore>
40
+ </define>
41
+ <define name="doctype">
42
+ <element name="doctype">
43
+ <optional>
44
+ <attribute name="abbreviation"/>
45
+ </optional>
46
+ <ref name="DocumentType"/>
47
+ </element>
48
+ </define>
49
+ <define name="DocumentType">
50
+ <text/>
51
+ </define>
52
+ <define name="docsubtype">
53
+ <element name="subdoctype">
54
+ <ref name="DocumentSubtype"/>
55
+ </element>
56
+ </define>
57
+ <define name="DocumentSubtype">
58
+ <text/>
59
+ </define>
60
+ <define name="editorialgroup">
61
+ <element name="editorialgroup">
62
+ <oneOrMore>
63
+ <ref name="technical-committee"/>
64
+ </oneOrMore>
65
+ </element>
66
+ </define>
67
+ <define name="technical-committee">
68
+ <element name="technical-committee">
69
+ <ref name="IsoWorkgroup"/>
70
+ </element>
71
+ </define>
72
+ <define name="IsoWorkgroup">
73
+ <optional>
74
+ <attribute name="number"/>
75
+ </optional>
76
+ <optional>
77
+ <attribute name="type"/>
78
+ </optional>
79
+ <optional>
80
+ <attribute name="identifier"/>
81
+ </optional>
82
+ <optional>
83
+ <attribute name="prefix"/>
84
+ </optional>
85
+ <text/>
86
+ </define>
87
+ <define name="ics">
88
+ <element name="ics">
89
+ <element name="code">
90
+ <text/>
91
+ </element>
92
+ <optional>
93
+ <element name="text">
94
+ <text/>
95
+ </element>
96
+ </optional>
97
+ </element>
98
+ </define>
99
+ <define name="structuredidentifier">
100
+ <element name="structuredidentifier">
101
+ <optional>
102
+ <attribute name="type"/>
103
+ </optional>
104
+ <oneOrMore>
105
+ <element name="agency">
106
+ <text/>
107
+ </element>
108
+ </oneOrMore>
109
+ <optional>
110
+ <element name="class">
111
+ <text/>
112
+ </element>
113
+ </optional>
114
+ <element name="docnumber">
115
+ <text/>
116
+ </element>
117
+ <optional>
118
+ <element name="partnumber">
119
+ <text/>
120
+ </element>
121
+ </optional>
122
+ <optional>
123
+ <element name="edition">
124
+ <text/>
125
+ </element>
126
+ </optional>
127
+ <optional>
128
+ <element name="version">
129
+ <text/>
130
+ </element>
131
+ </optional>
132
+ <optional>
133
+ <element name="supplementtype">
134
+ <text/>
135
+ </element>
136
+ </optional>
137
+ <optional>
138
+ <element name="supplementnumber">
139
+ <text/>
140
+ </element>
141
+ </optional>
142
+ <optional>
143
+ <element name="amendment">
144
+ <text/>
145
+ </element>
146
+ </optional>
147
+ <optional>
148
+ <element name="corrigendum">
149
+ <text/>
150
+ </element>
151
+ </optional>
152
+ <optional>
153
+ <element name="language">
154
+ <text/>
155
+ </element>
156
+ </optional>
157
+ <optional>
158
+ <element name="year">
159
+ <text/>
160
+ </element>
161
+ </optional>
162
+ </element>
163
+ </define>
164
+ </grammar>
data/grammars/biblio.rng CHANGED
@@ -33,9 +33,10 @@
33
33
  <param name="pattern">([\+\-]?\d{4})((-?)((0[1-9]|1[0-2])((-?)([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6]))))?</param>
34
34
  </data>
35
35
  </define>
36
- <start>
37
- <ref name="bibitem"/>
38
- </start>
36
+ <!-- start = bibitem -->
37
+ <define name="BibData">
38
+ <ref name="BibliographicItem"/>
39
+ </define>
39
40
  <define name="status">
40
41
  <element name="status">
41
42
  <ref name="stage"/>
@@ -73,8 +74,14 @@
73
74
  <text/>
74
75
  </element>
75
76
  </define>
76
- <define name="script">
77
+ <define name="locale">
77
78
  <a:documentation>ISO-639</a:documentation>
79
+ <element name="locale">
80
+ <text/>
81
+ </element>
82
+ </define>
83
+ <define name="script">
84
+ <a:documentation>ISO-3166</a:documentation>
78
85
  <element name="script">
79
86
  <text/>
80
87
  </element>
@@ -93,6 +100,9 @@
93
100
  <!-- multiple languages and scripts possible: comma delimit them if so -->
94
101
  <attribute name="language"/>
95
102
  </optional>
103
+ <optional>
104
+ <attribute name="locale"/>
105
+ </optional>
96
106
  <optional>
97
107
  <attribute name="script"/>
98
108
  </optional>
@@ -136,6 +146,9 @@
136
146
  <!-- multiple languages and scripts possible: comma delimit them if so -->
137
147
  <attribute name="language"/>
138
148
  </optional>
149
+ <optional>
150
+ <attribute name="locale"/>
151
+ </optional>
139
152
  <optional>
140
153
  <attribute name="script"/>
141
154
  </optional>
@@ -158,27 +171,30 @@
158
171
  </define>
159
172
  <define name="contributor">
160
173
  <element name="contributor">
161
- <zeroOrMore>
174
+ <oneOrMore>
162
175
  <ref name="role"/>
163
- </zeroOrMore>
176
+ </oneOrMore>
164
177
  <ref name="ContributorInfo"/>
165
178
  </element>
166
179
  </define>
167
180
  <define name="role">
168
181
  <element name="role">
169
- <optional>
170
- <attribute name="type">
171
- <choice>
172
- <value>author</value>
173
- <value>performer</value>
174
- <value>publisher</value>
175
- <value>editor</value>
176
- <value>adapter</value>
177
- <value>translator</value>
178
- <value>distributor</value>
179
- </choice>
180
- </attribute>
181
- </optional>
182
+ <attribute name="type">
183
+ <choice>
184
+ <value>author</value>
185
+ <value>performer</value>
186
+ <value>publisher</value>
187
+ <value>editor</value>
188
+ <value>adapter</value>
189
+ <value>translator</value>
190
+ <value>distributor</value>
191
+ <value>realizer</value>
192
+ <value>owner</value>
193
+ <value>authorizer</value>
194
+ <value>enabler</value>
195
+ <value>subject</value>
196
+ </choice>
197
+ </attribute>
182
198
  <zeroOrMore>
183
199
  <ref name="roledescription"/>
184
200
  </zeroOrMore>
@@ -500,6 +516,17 @@
500
516
  </define>
501
517
  <define name="localityStack">
502
518
  <element name="localityStack">
519
+ <optional>
520
+ <attribute name="connective">
521
+ <choice>
522
+ <value>and</value>
523
+ <value>or</value>
524
+ <value>from</value>
525
+ <value>to</value>
526
+ <value/>
527
+ </choice>
528
+ </attribute>
529
+ </optional>
503
530
  <zeroOrMore>
504
531
  <ref name="locality"/>
505
532
  </zeroOrMore>
@@ -512,6 +539,17 @@
512
539
  </define>
513
540
  <define name="sourceLocalityStack">
514
541
  <element name="sourceLocalityStack">
542
+ <optional>
543
+ <attribute name="connective">
544
+ <choice>
545
+ <value>and</value>
546
+ <value>or</value>
547
+ <value>from</value>
548
+ <value>to</value>
549
+ <value/>
550
+ </choice>
551
+ </attribute>
552
+ </optional>
515
553
  <zeroOrMore>
516
554
  <ref name="sourceLocality"/>
517
555
  </zeroOrMore>
@@ -614,6 +652,9 @@
614
652
  <ref name="BibItemType"/>
615
653
  </attribute>
616
654
  </optional>
655
+ <optional>
656
+ <attribute name="schema-version"/>
657
+ </optional>
617
658
  <optional>
618
659
  <ref name="fetched"/>
619
660
  </optional>
@@ -650,6 +691,9 @@
650
691
  <zeroOrMore>
651
692
  <ref name="language"/>
652
693
  </zeroOrMore>
694
+ <zeroOrMore>
695
+ <ref name="locale"/>
696
+ </zeroOrMore>
653
697
  <zeroOrMore>
654
698
  <ref name="script"/>
655
699
  </zeroOrMore>
@@ -705,6 +749,9 @@
705
749
  <ref name="BibItemType"/>
706
750
  </attribute>
707
751
  </optional>
752
+ <optional>
753
+ <attribute name="schema-version"/>
754
+ </optional>
708
755
  <optional>
709
756
  <ref name="fetched"/>
710
757
  </optional>
@@ -741,6 +788,9 @@
741
788
  <zeroOrMore>
742
789
  <ref name="language"/>
743
790
  </zeroOrMore>
791
+ <zeroOrMore>
792
+ <ref name="locale"/>
793
+ </zeroOrMore>
744
794
  <zeroOrMore>
745
795
  <ref name="script"/>
746
796
  </zeroOrMore>
@@ -854,6 +904,15 @@
854
904
  <optional>
855
905
  <attribute name="type"/>
856
906
  </optional>
907
+ <optional>
908
+ <attribute name="language"/>
909
+ </optional>
910
+ <optional>
911
+ <attribute name="locale"/>
912
+ </optional>
913
+ <optional>
914
+ <attribute name="script"/>
915
+ </optional>
857
916
  <data type="anyURI"/>
858
917
  </define>
859
918
  <define name="DateType">
@@ -882,6 +941,7 @@
882
941
  <value>vote-started</value>
883
942
  <value>vote-ended</value>
884
943
  <value>announced</value>
944
+ <value>stable-until</value>
885
945
  </choice>
886
946
  </define>
887
947
  <define name="bdate">
@@ -930,6 +990,9 @@
930
990
  <optional>
931
991
  <attribute name="language"/>
932
992
  </optional>
993
+ <optional>
994
+ <attribute name="locale"/>
995
+ </optional>
933
996
  <optional>
934
997
  <attribute name="script"/>
935
998
  </optional>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3
+ <include href="basicdoc.rng"/>
4
+ <include href="relaton-iana.rng"/>
5
+ <start>
6
+ <choice>
7
+ <ref name="bibitem"/>
8
+ <ref name="bibdata"/>
9
+ </choice>
10
+ </start>
11
+ </grammar>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3
+ <include href="biblio-standoc.rng"/>
4
+ </grammar>
@@ -92,7 +92,7 @@ module RelatonIana
92
92
  #
93
93
  # Save document to file
94
94
  #
95
- # @param [RelatonW3c::W3cBibliographicItem, nil] bib bibliographic item
95
+ # @param [RelatonIana::IanaBibliographicItem, nil] bib bibliographic item
96
96
  #
97
97
  def save_doc(bib) # rubocop:disable Metrics/MethodLength
98
98
  return unless bib
@@ -114,7 +114,7 @@ module RelatonIana
114
114
  #
115
115
  # Generate file name
116
116
  #
117
- # @param [RelatonW3c::W3cBibliographicItem] bib bibliographic item
117
+ # @param [RelatonIana::IanaBibliographicItem] bib bibliographic item
118
118
  #
119
119
  # @return [String] file name
120
120
  #
@@ -0,0 +1,9 @@
1
+ module RelatonIana
2
+ class HashConverter < RelatonBib::HashConverter
3
+ # @param item_hash [Hash]
4
+ # @return [RelatonIana::IanaBibliographicItem]
5
+ def self.bib_item(item_hash)
6
+ IanaBibliographicItem.new(**item_hash)
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,13 @@
1
1
  module RelatonIana
2
2
  # IANA Bibliographic Item
3
3
  class IanaBibliographicItem < RelatonBib::BibliographicItem
4
+ #
5
+ # Fetch flavor schema version
6
+ #
7
+ # @return [String] flavor schema version
8
+ #
9
+ def ext_schema
10
+ @ext_schema ||= schema_versions["relaton-model-iana"]
11
+ end
4
12
  end
5
13
  end
@@ -6,7 +6,7 @@ module RelatonIana
6
6
  SOURCE = "https://raw.githubusercontent.com/relaton/relaton-data-iana/main/data/"
7
7
 
8
8
  # @param text [String]
9
- # @return [RelatonBib::BibliographicItem]
9
+ # @return [RelatonIana::IanaBibliographicItem]
10
10
  def search(text) # rubocop:disable Metrics/MethodLength
11
11
  file = text.sub(/^IANA\s/, "").gsub(/[\s,:\/]/, "_").downcase
12
12
  url = "#{SOURCE}#{file}.yaml"
@@ -14,7 +14,8 @@ module RelatonIana
14
14
  return unless resp.code == "200"
15
15
 
16
16
  hash = YAML.safe_load resp.body
17
- RelatonBib::BibliographicItem.from_hash hash
17
+ hash["fetched"] = Date.today.to_s
18
+ IanaBibliographicItem.from_hash hash
18
19
  rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
19
20
  EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
20
21
  Net::ProtocolError, Errno::ETIMEDOUT => e
@@ -24,7 +25,7 @@ module RelatonIana
24
25
  # @param ref [String] the W3C standard Code to look up
25
26
  # @param year [String, NilClass] not used
26
27
  # @param opts [Hash] options
27
- # @return [RelatonBib::BibliographicItem]
28
+ # @return [RelatonIana::IanaBibliographicItem]
28
29
  def get(ref, _year = nil, _opts = {})
29
30
  warn "[relaton-iana] (\"#{ref}\") fetching..."
30
31
  result = search(ref)