berkeley_library-tind 0.4.0 → 0.5.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/build.yml +1 -1
- data/.idea/inspectionProfiles/Project_Default.xml +18 -0
- data/.idea/tind.iml +91 -91
- data/.ruby-version +1 -1
- data/CHANGES.md +33 -1
- data/README.md +15 -1
- data/berkeley_library-tind.gemspec +3 -2
- data/lib/berkeley_library/tind/api/api.rb +17 -11
- data/lib/berkeley_library/tind/api/collection.rb +1 -1
- data/lib/berkeley_library/tind/api/search.rb +2 -2
- data/lib/berkeley_library/tind/export/exporter.rb +1 -1
- data/lib/berkeley_library/tind/export/table.rb +1 -1
- data/lib/berkeley_library/tind/export/table_metrics.rb +1 -1
- data/lib/berkeley_library/tind/marc/xml_builder.rb +62 -0
- data/lib/berkeley_library/tind/marc/xml_reader.rb +32 -19
- data/lib/berkeley_library/tind/marc/xml_writer.rb +152 -0
- data/lib/berkeley_library/tind/module_info.rb +1 -1
- data/lib/berkeley_library/util/files.rb +39 -0
- data/lib/berkeley_library/util/ods/spreadsheet.rb +1 -1
- data/lib/berkeley_library/util/ods/xml/element_node.rb +1 -1
- data/spec/berkeley_library/tind/export/export_spec.rb +3 -1
- data/spec/berkeley_library/tind/export/table_spec.rb +2 -0
- data/spec/berkeley_library/tind/marc/xml_reader_spec.rb +42 -1
- data/spec/berkeley_library/tind/marc/xml_writer_spec.rb +156 -0
- data/spec/data/new-records.xml +46 -0
- metadata +36 -39
- data/Jenkinsfile +0 -18
- data/lib/berkeley_library/util/arrays.rb +0 -178
- data/lib/berkeley_library/util/logging.rb +0 -1
- data/lib/berkeley_library/util/paths.rb +0 -111
- data/lib/berkeley_library/util/stringios.rb +0 -30
- data/lib/berkeley_library/util/strings.rb +0 -42
- data/lib/berkeley_library/util/sys_exits.rb +0 -15
- data/lib/berkeley_library/util/times.rb +0 -22
- data/lib/berkeley_library/util/uris/appender.rb +0 -162
- data/lib/berkeley_library/util/uris/requester.rb +0 -62
- data/lib/berkeley_library/util/uris/validator.rb +0 -32
- data/lib/berkeley_library/util/uris.rb +0 -44
- data/spec/berkeley_library/util/arrays_spec.rb +0 -340
- data/spec/berkeley_library/util/paths_spec.rb +0 -90
- data/spec/berkeley_library/util/stringios_spec.rb +0 -34
- data/spec/berkeley_library/util/strings_spec.rb +0 -27
- data/spec/berkeley_library/util/times_spec.rb +0 -39
- data/spec/berkeley_library/util/uris_spec.rb +0 -118
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e7d25497211920f8416b44cef0c1571f0655ff92c3e3ff69405ce9659c9df3e
|
4
|
+
data.tar.gz: 915b8fdc55e4f5d7a48bc7ef3befd2ec4d9e3f3081eedc41980b04dd073fff5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 187ede68d2a48c906ee37fa01555489e877d1ef4c941189fae5ba683d79a6ca7704e1903077bab6ef9e3e70f8cb1670dee5755aed85a241c538f0e380542879c
|
7
|
+
data.tar.gz: 361ec4a2b88f4f97e53ad1eb25554b97e7cef94222b828de2f27bfc9037df02e412884adf36b31bbf9aed4671a0f62c0ad0910a94225ae18c4efd1758ccf9b43
|
data/.github/workflows/build.yml
CHANGED
@@ -10,6 +10,24 @@
|
|
10
10
|
<inspection_tool class="LanguageDetectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
11
11
|
<inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="false" />
|
12
12
|
<inspection_tool class="RubyCaseWithoutElseBlockInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
13
|
+
<inspection_tool class="RubyMismatchedArgumentType" enabled="true" level="WARNING" enabled_by_default="true">
|
14
|
+
<option name="myCheckNilability" value="false" />
|
15
|
+
</inspection_tool>
|
16
|
+
<inspection_tool class="RubyMismatchedConstantType" enabled="true" level="WARNING" enabled_by_default="true">
|
17
|
+
<option name="myCheckNilability" value="false" />
|
18
|
+
</inspection_tool>
|
19
|
+
<inspection_tool class="RubyMismatchedGlobalVariableType" enabled="true" level="WARNING" enabled_by_default="true">
|
20
|
+
<option name="myCheckNilability" value="false" />
|
21
|
+
</inspection_tool>
|
22
|
+
<inspection_tool class="RubyMismatchedParameterType" enabled="true" level="WARNING" enabled_by_default="true">
|
23
|
+
<option name="myCheckNilability" value="false" />
|
24
|
+
</inspection_tool>
|
25
|
+
<inspection_tool class="RubyMismatchedReturnType" enabled="true" level="WARNING" enabled_by_default="true">
|
26
|
+
<option name="myCheckNilability" value="false" />
|
27
|
+
</inspection_tool>
|
28
|
+
<inspection_tool class="RubyMismatchedVariableType" enabled="true" level="WARNING" enabled_by_default="true">
|
29
|
+
<option name="myCheckNilability" value="false" />
|
30
|
+
</inspection_tool>
|
13
31
|
<inspection_tool class="RubyStringKeysInHashInspection" enabled="true" level="INFORMATION" enabled_by_default="true" />
|
14
32
|
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
15
33
|
<option name="processCode" value="true" />
|
data/.idea/tind.iml
CHANGED
@@ -6,98 +6,98 @@
|
|
6
6
|
<component name="NewModuleRootManager">
|
7
7
|
<content url="file://$MODULE_DIR$">
|
8
8
|
<sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
|
9
|
-
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
10
|
-
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
11
9
|
</content>
|
12
|
-
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.
|
10
|
+
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.5" jdkType="RUBY_SDK" />
|
13
11
|
<orderEntry type="sourceFolder" forTests="false" />
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="actionpack (v6.1.4.
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="actionview (v6.1.4.
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.4.
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="amazing_print (v1.
|
19
|
-
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.
|
20
|
-
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-marc (v0.
|
22
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
23
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
24
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
25
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
27
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
28
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
29
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
30
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
31
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
33
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
34
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
35
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
36
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
37
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
38
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
39
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
40
|
-
<orderEntry type="library" scope="PROVIDED" name="http-
|
41
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
42
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
43
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
44
|
-
<orderEntry type="library" scope="PROVIDED" name="lograge (v0.11.2, RVM: ruby-2.7.
|
45
|
-
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.
|
46
|
-
<orderEntry type="library" scope="PROVIDED" name="marc (v1.1.1, RVM: ruby-2.7.
|
47
|
-
<orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, RVM: ruby-2.7.
|
48
|
-
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.
|
49
|
-
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.
|
50
|
-
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.
|
51
|
-
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.
|
52
|
-
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.
|
53
|
-
<orderEntry type="library" scope="PROVIDED" name="oj (v3.13.
|
54
|
-
<orderEntry type="library" scope="PROVIDED" name="ougai (v1.9.1, RVM: ruby-2.7.
|
55
|
-
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.
|
56
|
-
<orderEntry type="library" scope="PROVIDED" name="parser (v3.0.
|
57
|
-
<orderEntry type="library" scope="PROVIDED" name="parslet (v2.0.0, RVM: ruby-2.7.
|
58
|
-
<orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.6, RVM: ruby-2.7.
|
59
|
-
<orderEntry type="library" scope="PROVIDED" name="racc (v1.
|
60
|
-
<orderEntry type="library" scope="PROVIDED" name="rack (v2.2.3, RVM: ruby-2.7.
|
61
|
-
<orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, RVM: ruby-2.7.
|
62
|
-
<orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.7.
|
63
|
-
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.4.
|
64
|
-
<orderEntry type="library" scope="PROVIDED" name="railties (v6.1.4.
|
65
|
-
<orderEntry type="library" scope="PROVIDED" name="rainbow (v3.
|
66
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.
|
67
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
68
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
69
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
70
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
71
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
72
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
73
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
74
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
75
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.
|
76
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-
|
77
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-
|
78
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
79
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
80
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop (
|
81
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop-
|
82
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
83
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
84
|
-
<orderEntry type="library" scope="PROVIDED" name="ruby-
|
85
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
86
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
87
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
88
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
89
|
-
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.
|
90
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
91
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
92
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
93
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
94
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
95
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
96
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
97
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
98
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
99
|
-
|
100
|
-
|
12
|
+
<orderEntry type="library" scope="PROVIDED" name="actionpack (v6.1.4.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
13
|
+
<orderEntry type="library" scope="PROVIDED" name="actionview (v6.1.4.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.4.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="amazing_print (v1.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
17
|
+
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
19
|
+
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-marc (v0.3.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="berkeley_library-util (v0.1.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
22
|
+
<orderEntry type="library" scope="PROVIDED" name="bundle-audit (v0.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
23
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.31, RVM: ruby-2.7.5) [gem]" level="application" />
|
24
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler-audit (v0.9.0.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
25
|
+
<orderEntry type="library" scope="PROVIDED" name="ci_reporter (v2.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
26
|
+
<orderEntry type="library" scope="PROVIDED" name="ci_reporter_rspec (v1.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
27
|
+
<orderEntry type="library" scope="PROVIDED" name="colorize (v0.8.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
28
|
+
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.9, RVM: ruby-2.7.5) [gem]" level="application" />
|
29
|
+
<orderEntry type="library" scope="PROVIDED" name="crack (v0.4.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="crass (v1.0.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
31
|
+
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
32
|
+
<orderEntry type="library" scope="PROVIDED" name="docile (v1.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
33
|
+
<orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, RVM: ruby-2.7.5) [gem]" level="application" />
|
34
|
+
<orderEntry type="library" scope="PROVIDED" name="dotenv (v2.7.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
35
|
+
<orderEntry type="library" scope="PROVIDED" name="equivalent-xml (v0.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
36
|
+
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.10.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
37
|
+
<orderEntry type="library" scope="PROVIDED" name="hashdiff (v1.0.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
38
|
+
<orderEntry type="library" scope="PROVIDED" name="http-accept (v1.7.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
39
|
+
<orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
40
|
+
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.10.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
41
|
+
<orderEntry type="library" scope="PROVIDED" name="ice_nine (v0.11.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
42
|
+
<orderEntry type="library" scope="PROVIDED" name="lograge (v0.11.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
43
|
+
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.14.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
44
|
+
<orderEntry type="library" scope="PROVIDED" name="marc (v1.1.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
45
|
+
<orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
46
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.4.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
47
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2022.0105, RVM: ruby-2.7.5) [gem]" level="application" />
|
48
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.15.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
49
|
+
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
50
|
+
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.13.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
51
|
+
<orderEntry type="library" scope="PROVIDED" name="oj (v3.13.11, RVM: ruby-2.7.5) [gem]" level="application" />
|
52
|
+
<orderEntry type="library" scope="PROVIDED" name="ougai (v1.9.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
53
|
+
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.21.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
54
|
+
<orderEntry type="library" scope="PROVIDED" name="parser (v3.1.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
55
|
+
<orderEntry type="library" scope="PROVIDED" name="parslet (v2.0.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
57
|
+
<orderEntry type="library" scope="PROVIDED" name="racc (v1.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
58
|
+
<orderEntry type="library" scope="PROVIDED" name="rack (v2.2.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
59
|
+
<orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
60
|
+
<orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
61
|
+
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.4.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
62
|
+
<orderEntry type="library" scope="PROVIDED" name="railties (v6.1.4.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
63
|
+
<orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
64
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.5) [gem]" level="application" />
|
65
|
+
<orderEntry type="library" scope="PROVIDED" name="rchardet (v1.8.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
66
|
+
<orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.2.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
67
|
+
<orderEntry type="library" scope="PROVIDED" name="request_store (v1.5.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
68
|
+
<orderEntry type="library" scope="PROVIDED" name="rest-client (v2.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
69
|
+
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.5) [gem]" level="application" />
|
70
|
+
<orderEntry type="library" scope="PROVIDED" name="roo (v2.8.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
71
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
72
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
73
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
74
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
75
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
76
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop (v1.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
77
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.15.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
78
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop-rake (v0.6.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
79
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop-rspec (v2.4.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
80
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-marc-spec (v0.1.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
81
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-prof (v0.17.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
82
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
83
|
+
<orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
84
|
+
<orderEntry type="library" scope="PROVIDED" name="scrub_rb (v1.0.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
85
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.21.2, RVM: ruby-2.7.5) [gem]" level="application" />
|
86
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.12.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
87
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-rcov (v0.2.3, RVM: ruby-2.7.5) [gem]" level="application" />
|
88
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
89
|
+
<orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.5) [gem]" level="application" />
|
90
|
+
<orderEntry type="library" scope="PROVIDED" name="typesafe_enum (v0.3.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
91
|
+
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
92
|
+
<orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
93
|
+
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.8, RVM: ruby-2.7.5) [gem]" level="application" />
|
94
|
+
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.1.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
95
|
+
<orderEntry type="library" scope="PROVIDED" name="webmock (v3.14.0, RVM: ruby-2.7.5) [gem]" level="application" />
|
96
|
+
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.5.4, RVM: ruby-2.7.5) [gem]" level="application" />
|
97
|
+
</component>
|
98
|
+
<component name="RModuleSettingsStorage">
|
99
|
+
<LOAD_PATH number="2" string0="$MODULE_DIR$/lib" string1="$MODULE_DIR$/spec" />
|
100
|
+
<I18N_FOLDERS number="0" />
|
101
101
|
</component>
|
102
102
|
<component name="RakeTasksCache">
|
103
103
|
<option name="myRootTask">
|
@@ -110,7 +110,7 @@
|
|
110
110
|
</RakeTaskImpl>
|
111
111
|
<RakeTaskImpl description="Run all specs in spec directory, with coverage" fullCommand="coverage" id="coverage" />
|
112
112
|
<RakeTaskImpl description="Run tests, check test coverage, check code style, check for vulnerabilities, build gem" fullCommand="default" id="default" />
|
113
|
-
<RakeTaskImpl description="Build berkeley_library-tind.gemspec as berkeley_library-tind-0.4.
|
113
|
+
<RakeTaskImpl description="Build berkeley_library-tind.gemspec as berkeley_library-tind-0.4.3.gem" fullCommand="gem" id="gem" />
|
114
114
|
<RakeTaskImpl description="Run RuboCop with auto-correct, and output results to console" fullCommand="ra" id="ra" />
|
115
115
|
<RakeTaskImpl description="Run rubocop with HTML output" fullCommand="rubocop" id="rubocop" />
|
116
116
|
<RakeTaskImpl id="rubocop">
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.7
|
1
|
+
2.7.5
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
# 0.5.0 (2022-01-17)
|
2
|
+
|
3
|
+
- Adds a class `BerkeleyLibrary::TIND::MARC::XMLWriter` to write MARCXML in the format expected by the TIND batch uploader:
|
4
|
+
|
5
|
+
- MARC leader is written to control field 000 as required by TIND
|
6
|
+
- control fields (including the leader) use `\` (0x5c), not space (0x32), for unspecified positional
|
7
|
+
values
|
8
|
+
|
9
|
+
In addition, a `nil` or empty MARC leader is not written at all.
|
10
|
+
- Modifies `BerkeleyLibrary::TIND::MARC::XMLReader` to take into account the same peculiarities:
|
11
|
+
control field 000 is read into the leader of the MARC record, and slashes in control field values
|
12
|
+
(including the leader) are replaced with spaces.
|
13
|
+
|
14
|
+
# 0.4.3 (2022-01-26)
|
15
|
+
|
16
|
+
- Pins `berkeley_library-marc` to version 0.3.x (0.3.1 or higher).
|
17
|
+
- `BerkeleyLibrary::TIND::XMLReader#new` and `#read`: Fix issue with options/kwargs
|
18
|
+
cross-compatibility between Ruby 2.7 and 3.x
|
19
|
+
- Adjusts `BerkeleyLibrary::TIND::MARC::XMLReader` to take advantage of proper `freeze:`
|
20
|
+
option implementation in `berkeley_library-marc` 3.x.
|
21
|
+
|
22
|
+
# 0.4.2 (2021-09-23)
|
23
|
+
|
24
|
+
- Extract `BerkeleyLibrary::Util` module to [separate gem](https://github.com/BerkeleyLibrary/util)
|
25
|
+
|
26
|
+
# 0.4.1 (2021-08-26)
|
27
|
+
|
28
|
+
- Add explicit double splat to prevent
|
29
|
+
`BerkeleyLibrary::TIND::Search.perform_single_search` from raising
|
30
|
+
`ArgumentError` on Ruby 3+ due to positional / keyword ambiguity
|
31
|
+
|
1
32
|
# 0.4.0 (2021-08-19)
|
2
33
|
|
3
34
|
- Rename to `BerkeleyLibrary::TIND` in prep for move to GitHub
|
@@ -18,7 +49,8 @@
|
|
18
49
|
# 0.3.0 (2021-05-11)
|
19
50
|
|
20
51
|
- Extracts `MARCExtensions` into a separate gem,
|
21
|
-
[`ucblit-marc`](https://git.lib.berkeley.edu/lap/ucblit-marc
|
52
|
+
[`ucblit-marc`](https://git.lib.berkeley.edu/lap/ucblit-marc).
|
53
|
+
- *Note:* As of August 2021 this is now [berkeley_library-marc](https://rubygems.org/gems/berkeley_library-marc).
|
22
54
|
|
23
55
|
# 0.2.4 (2021-05-06)
|
24
56
|
|
data/README.md
CHANGED
@@ -1,10 +1,24 @@
|
|
1
1
|
# BerkeleyLibrary::TIND
|
2
2
|
|
3
3
|
[](https://github.com/BerkeleyLibrary/tind/actions/workflows/build.yml)
|
4
|
-
[](https://
|
4
|
+
[](https://rubygems.org/gems/berkeley_library-tind)
|
5
5
|
|
6
6
|
Utility gem for working with the TIND DA digital archive.
|
7
7
|
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
In your Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'berkeley_library-tind'
|
14
|
+
```
|
15
|
+
|
16
|
+
In your code:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
require 'berkeley_library/tind'
|
20
|
+
```
|
21
|
+
|
8
22
|
## Configuration
|
9
23
|
|
10
24
|
To access the TIND API, you will need to set:
|
@@ -24,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.required_ruby_version = ruby_version
|
25
25
|
|
26
26
|
spec.add_dependency 'berkeley_library-logging', '~> 0.2'
|
27
|
-
spec.add_dependency 'berkeley_library-marc', '~> 0.
|
27
|
+
spec.add_dependency 'berkeley_library-marc', '~> 0.3.0', '>= 0.3.1'
|
28
|
+
spec.add_dependency 'berkeley_library-util', '~> 0.1'
|
28
29
|
spec.add_dependency 'ice_nine', '~> 0.11'
|
29
30
|
spec.add_dependency 'marc', '~> 1.0'
|
30
31
|
spec.add_dependency 'rchardet', '~> 1.8'
|
@@ -36,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
36
37
|
spec.add_development_dependency 'ci_reporter_rspec', '~> 1.0'
|
37
38
|
spec.add_development_dependency 'colorize', '~> 0.8'
|
38
39
|
spec.add_development_dependency 'dotenv', '~> 2.7'
|
39
|
-
spec.add_development_dependency '
|
40
|
+
spec.add_development_dependency 'equivalent-xml', '~> 0.6'
|
40
41
|
spec.add_development_dependency 'rake', '~> 13.0'
|
41
42
|
spec.add_development_dependency 'roo', '~> 2.8'
|
42
43
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
@@ -2,7 +2,7 @@ require 'stringio'
|
|
2
2
|
require 'open-uri'
|
3
3
|
|
4
4
|
require 'berkeley_library/util/uris'
|
5
|
-
require 'berkeley_library/
|
5
|
+
require 'berkeley_library/logging'
|
6
6
|
require 'berkeley_library/tind/config'
|
7
7
|
require 'berkeley_library/tind/api/api_exception'
|
8
8
|
|
@@ -105,16 +105,22 @@ module BerkeleyLibrary
|
|
105
105
|
private
|
106
106
|
|
107
107
|
def do_get(endpoint_uri, params)
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
108
|
+
headers = auth_headers(endpoint_uri, params)
|
109
|
+
URIs.get(endpoint_uri, params: params, headers: headers)
|
110
|
+
rescue RestClient::RequestFailed => e
|
111
|
+
raise APIException.wrap(e, url: endpoint_uri, params: params)
|
112
|
+
end
|
113
|
+
|
114
|
+
def auth_headers(endpoint_uri, params)
|
115
|
+
key = ensure_api_key(endpoint_uri, params)
|
116
|
+
{
|
117
|
+
'Authorization' => "Token #{key}",
|
118
|
+
'User-Agent' => user_agent
|
119
|
+
}
|
120
|
+
end
|
121
|
+
|
122
|
+
def ensure_api_key(endpoint_uri, params)
|
123
|
+
api_key.tap { |k| raise APIKeyNotSet.new(endpoint_uri, params) if Config.blank?(k) }
|
118
124
|
end
|
119
125
|
|
120
126
|
# TODO: make real body streaming work
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'berkeley_library/
|
1
|
+
require 'berkeley_library/logging'
|
2
2
|
require 'berkeley_library/tind/marc/xml_reader'
|
3
3
|
require 'berkeley_library/tind/api/date_range'
|
4
4
|
require 'berkeley_library/tind/api/format'
|
@@ -66,7 +66,7 @@ module BerkeleyLibrary
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def perform_single_search(params, freeze, &block)
|
69
|
-
API.get(:search, params) do |body|
|
69
|
+
API.get(:search, **params) do |body|
|
70
70
|
process_body(body, freeze, &block)
|
71
71
|
ensure
|
72
72
|
body.close
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module BerkeleyLibrary
|
4
|
+
module TIND
|
5
|
+
module MARC
|
6
|
+
class XMLBuilder
|
7
|
+
attr_reader :marc_record
|
8
|
+
|
9
|
+
def initialize(marc_record)
|
10
|
+
@marc_record = marc_record
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
builder.doc.root.tap(&:unlink)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def builder
|
20
|
+
Nokogiri::XML::Builder.new do |xml|
|
21
|
+
xml.record do
|
22
|
+
add_leader(xml)
|
23
|
+
marc_record.each_control_field { |cf| add_control_field(xml, cf) }
|
24
|
+
marc_record.each_data_field { |df| add_data_field(xml, df) }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_leader(xml)
|
30
|
+
leader = marc_record.leader
|
31
|
+
return if leader.nil? || leader == ''
|
32
|
+
|
33
|
+
# TIND uses <controlfield tag="000"/> instead of <leader/>
|
34
|
+
leader_as_cf = ::MARC::ControlField.new('000', clean_leader(leader))
|
35
|
+
add_control_field(xml, leader_as_cf)
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_data_field(xml, df)
|
39
|
+
xml.datafield(tag: df.tag, ind1: df.indicator1, ind2: df.indicator2) do
|
40
|
+
df.subfields.each do |sf|
|
41
|
+
xml.subfield(sf.value, code: sf.code)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def add_control_field(xml, cf)
|
47
|
+
# TIND uses \ (0x5c), not space (0x32), for unspecified values in positional fields
|
48
|
+
value = cf.value&.gsub(' ', '\\')
|
49
|
+
xml.controlfield(value, tag: cf.tag)
|
50
|
+
end
|
51
|
+
|
52
|
+
def clean_leader(leader)
|
53
|
+
leader.gsub(/[^\w|^\s]/, 'Z').tap do |ldr|
|
54
|
+
ldr[20..23] = '4500' unless ldr[20..23] == '4500'
|
55
|
+
ldr[6..6] = 'Z' if ldr[6..6] == ' '
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|