ds-convert 0.1.1
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 +7 -0
- data/README.md +294 -0
- data/Rakefile +12 -0
- data/config/settings.yml +150 -0
- data/exe/ds-convert +149 -0
- data/exe/ds-recon +275 -0
- data/exe/ds-validate-csv +40 -0
- data/exe/marc-mrc-to-xml.rb +80 -0
- data/lib/ds/cli.rb +102 -0
- data/lib/ds/constants.rb +166 -0
- data/lib/ds/converter/converter.rb +124 -0
- data/lib/ds/converter/writer.rb +50 -0
- data/lib/ds/converter.rb +7 -0
- data/lib/ds/csv_util.rb +43 -0
- data/lib/ds/data/berkeley-arks.txt +4000 -0
- data/lib/ds/data/getty-aat-centuries.csv +71 -0
- data/lib/ds/data/iiif_manifests.csv +122 -0
- data/lib/ds/data/legacy-iiif-manifests.csv +77 -0
- data/lib/ds/ds_error.rb +1 -0
- data/lib/ds/extractor/base_record_locator.rb +24 -0
- data/lib/ds/extractor/base_term.rb +79 -0
- data/lib/ds/extractor/csv_record_locator.rb +13 -0
- data/lib/ds/extractor/ds_csv_extractor.rb +695 -0
- data/lib/ds/extractor/ds_mets_xml_extractor.rb +1114 -0
- data/lib/ds/extractor/genre.rb +45 -0
- data/lib/ds/extractor/language.rb +31 -0
- data/lib/ds/extractor/marc_xml_extractor.rb +1172 -0
- data/lib/ds/extractor/material.rb +12 -0
- data/lib/ds/extractor/name.rb +50 -0
- data/lib/ds/extractor/place.rb +11 -0
- data/lib/ds/extractor/subject.rb +58 -0
- data/lib/ds/extractor/tei_xml_extractor.rb +687 -0
- data/lib/ds/extractor/title.rb +52 -0
- data/lib/ds/extractor/xml_record_locator.rb +38 -0
- data/lib/ds/extractor.rb +24 -0
- data/lib/ds/institutions.rb +55 -0
- data/lib/ds/manifest/base_id_validator.rb +76 -0
- data/lib/ds/manifest/constants.rb +67 -0
- data/lib/ds/manifest/ds_csv_id_validator.rb +15 -0
- data/lib/ds/manifest/entry.rb +133 -0
- data/lib/ds/manifest/manifest.rb +74 -0
- data/lib/ds/manifest/manifest_validator.rb +256 -0
- data/lib/ds/manifest/simple_xml_id_validator.rb +42 -0
- data/lib/ds/manifest.rb +30 -0
- data/lib/ds/mapper/base_mapper.rb +221 -0
- data/lib/ds/mapper/ds_csv_mapper.rb +77 -0
- data/lib/ds/mapper/ds_mets_mapper.rb +85 -0
- data/lib/ds/mapper/marc_mapper.rb +87 -0
- data/lib/ds/mapper/tei_xml_mapper.rb +79 -0
- data/lib/ds/mapper.rb +13 -0
- data/lib/ds/recon/constants.rb +56 -0
- data/lib/ds/recon/ds_csv_enumerator.rb +16 -0
- data/lib/ds/recon/ds_mets_xml_enumerator.rb +14 -0
- data/lib/ds/recon/marc_xml_enumerator.rb +15 -0
- data/lib/ds/recon/recon_builder.rb +183 -0
- data/lib/ds/recon/recon_data.rb +37 -0
- data/lib/ds/recon/recon_manager.rb +92 -0
- data/lib/ds/recon/source_enumerator.rb +21 -0
- data/lib/ds/recon/tei_xml_enumerator.rb +14 -0
- data/lib/ds/recon/type/all_subjects.rb +18 -0
- data/lib/ds/recon/type/genres.rb +50 -0
- data/lib/ds/recon/type/languages.rb +38 -0
- data/lib/ds/recon/type/materials.rb +40 -0
- data/lib/ds/recon/type/named_subjects.rb +20 -0
- data/lib/ds/recon/type/names.rb +65 -0
- data/lib/ds/recon/type/places.rb +40 -0
- data/lib/ds/recon/type/recon_type.rb +136 -0
- data/lib/ds/recon/type/splits.rb +34 -0
- data/lib/ds/recon/type/subjects.rb +65 -0
- data/lib/ds/recon/type/titles.rb +38 -0
- data/lib/ds/recon/url_lookup.rb +52 -0
- data/lib/ds/recon.rb +292 -0
- data/lib/ds/source/base_source.rb +32 -0
- data/lib/ds/source/ds_csv.rb +18 -0
- data/lib/ds/source/ds_mets_xml.rb +20 -0
- data/lib/ds/source/marc_xml.rb +22 -0
- data/lib/ds/source/source_cache.rb +69 -0
- data/lib/ds/source/tei_xml.rb +22 -0
- data/lib/ds/source.rb +20 -0
- data/lib/ds/util/cache.rb +111 -0
- data/lib/ds/util/csv_validator.rb +209 -0
- data/lib/ds/util/csv_writer.rb +42 -0
- data/lib/ds/util/strings.rb +194 -0
- data/lib/ds/util.rb +37 -0
- data/lib/ds/version.rb +5 -0
- data/lib/ds.rb +237 -0
- metadata +246 -0
data/lib/ds.rb
ADDED
@@ -0,0 +1,237 @@
|
|
1
|
+
require 'config'
|
2
|
+
require 'active_support/all'
|
3
|
+
|
4
|
+
require_relative 'ds/ds_error'
|
5
|
+
require_relative 'ds/util'
|
6
|
+
require_relative 'ds/recon/recon_data'
|
7
|
+
require_relative 'ds/constants'
|
8
|
+
require_relative 'ds/source'
|
9
|
+
require_relative 'ds/extractor'
|
10
|
+
require_relative 'ds/extractor/ds_mets_xml_extractor'
|
11
|
+
require_relative 'ds/extractor/tei_xml_extractor'
|
12
|
+
require_relative 'ds/extractor/marc_xml_extractor'
|
13
|
+
require_relative 'ds/csv_util'
|
14
|
+
require_relative 'ds/extractor/ds_csv_extractor'
|
15
|
+
require_relative 'ds/recon'
|
16
|
+
require_relative 'ds/institutions'
|
17
|
+
require_relative 'ds/mapper'
|
18
|
+
require_relative 'ds/manifest'
|
19
|
+
require_relative 'ds/converter'
|
20
|
+
require_relative 'ds/version'
|
21
|
+
|
22
|
+
module DS
|
23
|
+
include DS::Constants
|
24
|
+
|
25
|
+
def self.root
|
26
|
+
File.expand_path '../..', __FILE__
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.env
|
30
|
+
@@env ||= 'production'
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.env= environment
|
34
|
+
@@env = environment
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.normalize_key key
|
38
|
+
return '' if key.blank?
|
39
|
+
key.to_s.downcase.strip.gsub %r{\W+}, ''
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.data_dir
|
43
|
+
File.join root, 'data'
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.configure!
|
47
|
+
config_dir = File.join root, 'config'
|
48
|
+
# Set Settings, so you can do things like Settings.recon.key ...
|
49
|
+
Config.load_and_set_settings(Config.setting_files config_dir, DS.env)
|
50
|
+
end
|
51
|
+
|
52
|
+
module ClassMethods
|
53
|
+
def mark_long s
|
54
|
+
return s if s.to_s.size <= DS::MAX_WIKIBASE_FIELD_LENGTH
|
55
|
+
|
56
|
+
splits = Recon::Type::Splits._lookup_single s, from_column: 'authorized_label'
|
57
|
+
return "SPLIT: #{s}" if splits.blank?
|
58
|
+
splits
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Given a pipe separated list of single years or ranges of years, return
|
63
|
+
# a pipe- and semicolon-separated list of century integers. Year ranges
|
64
|
+
# are separated by the +^+ character, so that +-+ can unambiguously be
|
65
|
+
# used for BCE years as negative integers (<tt>1099-1000 BCE</tt> =>
|
66
|
+
# <tt>-1099^-1000</tt>)
|
67
|
+
#
|
68
|
+
# For example,
|
69
|
+
#
|
70
|
+
# DS.transform_dates_to_centuries('1400') # => '15'
|
71
|
+
# DS.transform_dates_to_centuries('1400^1499') # => '15'
|
72
|
+
# DS.transform_dates_to_centuries('1325|1400^1499') # => '14|15'
|
73
|
+
# DS.transform_dates_to_centuries('890^1020') # => '9;10;11'
|
74
|
+
# DS.transform_dates_to_centuries('-800^-701') # => '-8'
|
75
|
+
#
|
76
|
+
# @param [String] dates a pipe separated list of single dates or date
|
77
|
+
# ranges: '1832', '1350^1520'
|
78
|
+
# @return [String] a pipe-separated century integers
|
79
|
+
def transform_dates_to_centuries dates
|
80
|
+
return if dates.blank?
|
81
|
+
dates.to_s.split('|').flat_map { |date_range|
|
82
|
+
next [] if date_range.strip.empty? # don't process empty values
|
83
|
+
# Adjust ranges to return sensible centuries for ranges like
|
84
|
+
# '1400-1499' or '1401-1500'
|
85
|
+
date_range = adjust_for_century date_range
|
86
|
+
# turn the date/date range into a [min,max] array of century integers:
|
87
|
+
# 1350-1550 => [14,16]
|
88
|
+
# 1350 => [14]
|
89
|
+
centuries = date_range.split('^').map { |i| calculate_century i }.sort
|
90
|
+
# get an array for the range of centuries:
|
91
|
+
# [14,16] => 14, 15, 16
|
92
|
+
# join them; throw away zero if range spans BCE/CE
|
93
|
+
(centuries.first..centuries.last).to_a.reject(&:zero?).join ';' # join list of centuries by semicolons
|
94
|
+
}.join '|'
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Take a formatted string of century integers and return the string AAT
|
99
|
+
# century URIs, retaining the divisions.
|
100
|
+
#
|
101
|
+
# @param [String] centuries_string
|
102
|
+
# @return [String]
|
103
|
+
def transform_centuries_to_aat centuries_string, rec_sep: '|', sub_sep: ';'
|
104
|
+
return if centuries_string.to_s.strip.empty?
|
105
|
+
|
106
|
+
centuries_string.split(rec_sep).map { |century_range|
|
107
|
+
century_range.split(sub_sep).map { |century_int|
|
108
|
+
lookup_century century_int
|
109
|
+
}.join sub_sep
|
110
|
+
}.join rec_sep
|
111
|
+
end
|
112
|
+
|
113
|
+
##
|
114
|
+
# Adjust date ranges so that intended results are returned for century
|
115
|
+
# values. Thus:
|
116
|
+
#
|
117
|
+
# 1400 to 1499 => 15th C. CE
|
118
|
+
# 1401 to 1500 => 15th C. CE
|
119
|
+
#
|
120
|
+
# And, thus:
|
121
|
+
#
|
122
|
+
# -1499 to -1400 => 15th C. BCE
|
123
|
+
# -1500 to -1401 => 15th C. BCE
|
124
|
+
#
|
125
|
+
# This method adjusts the end year for CE dates and the start
|
126
|
+
# year for BCE dates as needed:
|
127
|
+
#
|
128
|
+
# DS.adjust_for_century '1325' # => '1325'; no change needed
|
129
|
+
# DS.adjust_for_century '1400^1499' # => '1400^1499'; no change needed
|
130
|
+
# DS.adjust_for_century '1401^1500' # => '1401^1499'
|
131
|
+
# DS.adjust_for_century '-1500^-1401' # => '-1500^-1401'; no change needed
|
132
|
+
# DS.adjust_for_century '-1499^-1400' # => '-1499^-1401'
|
133
|
+
#
|
134
|
+
# @param [String] range a single year or +^+-separated date range
|
135
|
+
# @return [String] the range, adjusted if needed
|
136
|
+
def adjust_for_century range
|
137
|
+
# return a single date
|
138
|
+
return range if range =~ %r{^-?\d+$}
|
139
|
+
|
140
|
+
start_year, end_year = range.split('^')
|
141
|
+
start_int, end_int = start_year.to_i, end_year.to_i
|
142
|
+
|
143
|
+
# end dates divisible by 100 need to be reduced by one:
|
144
|
+
# 1500 => 1499; -1500 => -1501
|
145
|
+
end_int -= 1 if end_int % 100 == 0
|
146
|
+
[start_int, end_int].uniq.join '^'
|
147
|
+
end
|
148
|
+
|
149
|
+
##
|
150
|
+
# Given a year, return to the corresponding century as an integer following
|
151
|
+
# this pattern:
|
152
|
+
#
|
153
|
+
# - the 16th C. CE is years 1500 to 1599
|
154
|
+
# - the 1st C. CE is years 0 to 99
|
155
|
+
# - the 16th C. BCE is years -1599 to -1501
|
156
|
+
#
|
157
|
+
# Thus:
|
158
|
+
#
|
159
|
+
# DS.calculate_century '1501' # => 16
|
160
|
+
# DS.calculate_century '1600' # => 17
|
161
|
+
# DS.calculate_century '-1600' # => -16
|
162
|
+
# DS.calculate_century '-1501' # => -16
|
163
|
+
# DS.calculate_century '1' # => 1
|
164
|
+
# DS.calculate_century '0' # => 1
|
165
|
+
#
|
166
|
+
# @param [Integer] year an integer year value
|
167
|
+
# @return [Integer] an integer representation of the century
|
168
|
+
def calculate_century year
|
169
|
+
# remove leading 0s; 4-digit numbers starting with 0 are octal
|
170
|
+
year_int = Integer year
|
171
|
+
# year <=> 0 returns 1 if year > 0; -1 if year < 0; 0 if year == 0
|
172
|
+
# 0 is a special year; its sign is 1 and its absolute value is 1
|
173
|
+
sign = year_int == 0 ? 1 : (year_int <=> 0)
|
174
|
+
abs_val = year_int == 0 ? 1 : year_int.abs
|
175
|
+
offset = sign < 0 ? 1 : 0
|
176
|
+
|
177
|
+
# if year is 1501, sign == 1 and abs_val == 1501
|
178
|
+
# => 1 * ((1501 - 1)/100 +1) => 1 * (1500/100 + 1) => 1 * (15 + 1) = 16
|
179
|
+
# if year is 1500, sign == 1 and abs_val == 1500
|
180
|
+
# => 1 * ((1500 - 1)/100 +1) => 1 * (1499/100 + 1) => 1 * (14 + 1) = 15
|
181
|
+
sign * ((abs_val - offset) / 100 + 1)
|
182
|
+
end
|
183
|
+
|
184
|
+
def timestamp
|
185
|
+
DateTime.now.iso8601.to_s
|
186
|
+
end
|
187
|
+
|
188
|
+
@@centuries = nil
|
189
|
+
##
|
190
|
+
# Look up the URI for +century+, where century is an integer like +1+, +12+,
|
191
|
+
# +-3+, etc.
|
192
|
+
# Values are read in from the file `data/getty-aat-centuries.csv` and
|
193
|
+
# converted to a hash of Getty AAT century URIs. Keys are century integers,
|
194
|
+
# like '1', '2', '3', '-1', '-2', '-3', etc. and values are AAT URIs.
|
195
|
+
#
|
196
|
+
# @param [Integer] century an integer like +1+, +12+, +-3+, etc.
|
197
|
+
# @return [String] the AAT URI for the century
|
198
|
+
def lookup_century century
|
199
|
+
if @@centuries.nil?
|
200
|
+
path = File.expand_path '../ds/data/getty-aat-centuries.csv', __FILE__
|
201
|
+
|
202
|
+
# aat_id,label,number
|
203
|
+
# http://vocab.getty.edu/aat/300404465,fifteenth century (dates CE),15
|
204
|
+
# http://vocab.getty.edu/aat/300404493,first century (dates CE),1
|
205
|
+
@@centuries = CSV.read(path).inject({}) do |h, row|
|
206
|
+
if row.first == 'aat_id'
|
207
|
+
h
|
208
|
+
else
|
209
|
+
h.update({ row.last => row.first })
|
210
|
+
end
|
211
|
+
end.freeze
|
212
|
+
end
|
213
|
+
@@centuries[century.to_s]
|
214
|
+
end
|
215
|
+
|
216
|
+
@@logger = nil
|
217
|
+
@@loggers = {}
|
218
|
+
def logger
|
219
|
+
return @@logger if @@logger
|
220
|
+
@@logger = DS.logger_for self.class.name
|
221
|
+
end
|
222
|
+
|
223
|
+
|
224
|
+
def logger_for(classname)
|
225
|
+
@@loggers[classname] ||= configure_logger_for(classname)
|
226
|
+
end
|
227
|
+
|
228
|
+
def configure_logger_for(classname)
|
229
|
+
logger = Logger.new(STDOUT)
|
230
|
+
logger.progname = classname
|
231
|
+
logger.level = Settings.ds.log_level || :warn
|
232
|
+
logger
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
self.extend ClassMethods
|
237
|
+
end
|
metadata
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ds-convert
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Doug Emery
|
8
|
+
bindir: exe
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: activesupport
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: 8.0.2
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 8.0.2
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: colorize
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.1.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 1.1.0
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: config
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: csv
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 3.3.5
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 3.3.5
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: git
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 1.11.0
|
75
|
+
type: :runtime
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.11.0
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: marc
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.1.1
|
89
|
+
type: :runtime
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 1.1.1
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: nokogiri
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.15.3
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.15.3
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: thor
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.2.1
|
117
|
+
type: :runtime
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.2.1
|
124
|
+
description: 'Scripts for converting Digital Scriptorium member data to the DS import
|
125
|
+
spreadsheet format and for extracting values for authority file reconciliation.
|
126
|
+
|
127
|
+
'
|
128
|
+
email:
|
129
|
+
- emeryr@upenn.edu
|
130
|
+
executables:
|
131
|
+
- ds-convert
|
132
|
+
- ds-recon
|
133
|
+
- ds-validate-csv
|
134
|
+
- marc-mrc-to-xml.rb
|
135
|
+
extensions: []
|
136
|
+
extra_rdoc_files: []
|
137
|
+
files:
|
138
|
+
- README.md
|
139
|
+
- Rakefile
|
140
|
+
- config/settings.yml
|
141
|
+
- exe/ds-convert
|
142
|
+
- exe/ds-recon
|
143
|
+
- exe/ds-validate-csv
|
144
|
+
- exe/marc-mrc-to-xml.rb
|
145
|
+
- lib/ds.rb
|
146
|
+
- lib/ds/cli.rb
|
147
|
+
- lib/ds/constants.rb
|
148
|
+
- lib/ds/converter.rb
|
149
|
+
- lib/ds/converter/converter.rb
|
150
|
+
- lib/ds/converter/writer.rb
|
151
|
+
- lib/ds/csv_util.rb
|
152
|
+
- lib/ds/data/berkeley-arks.txt
|
153
|
+
- lib/ds/data/getty-aat-centuries.csv
|
154
|
+
- lib/ds/data/iiif_manifests.csv
|
155
|
+
- lib/ds/data/legacy-iiif-manifests.csv
|
156
|
+
- lib/ds/ds_error.rb
|
157
|
+
- lib/ds/extractor.rb
|
158
|
+
- lib/ds/extractor/base_record_locator.rb
|
159
|
+
- lib/ds/extractor/base_term.rb
|
160
|
+
- lib/ds/extractor/csv_record_locator.rb
|
161
|
+
- lib/ds/extractor/ds_csv_extractor.rb
|
162
|
+
- lib/ds/extractor/ds_mets_xml_extractor.rb
|
163
|
+
- lib/ds/extractor/genre.rb
|
164
|
+
- lib/ds/extractor/language.rb
|
165
|
+
- lib/ds/extractor/marc_xml_extractor.rb
|
166
|
+
- lib/ds/extractor/material.rb
|
167
|
+
- lib/ds/extractor/name.rb
|
168
|
+
- lib/ds/extractor/place.rb
|
169
|
+
- lib/ds/extractor/subject.rb
|
170
|
+
- lib/ds/extractor/tei_xml_extractor.rb
|
171
|
+
- lib/ds/extractor/title.rb
|
172
|
+
- lib/ds/extractor/xml_record_locator.rb
|
173
|
+
- lib/ds/institutions.rb
|
174
|
+
- lib/ds/manifest.rb
|
175
|
+
- lib/ds/manifest/base_id_validator.rb
|
176
|
+
- lib/ds/manifest/constants.rb
|
177
|
+
- lib/ds/manifest/ds_csv_id_validator.rb
|
178
|
+
- lib/ds/manifest/entry.rb
|
179
|
+
- lib/ds/manifest/manifest.rb
|
180
|
+
- lib/ds/manifest/manifest_validator.rb
|
181
|
+
- lib/ds/manifest/simple_xml_id_validator.rb
|
182
|
+
- lib/ds/mapper.rb
|
183
|
+
- lib/ds/mapper/base_mapper.rb
|
184
|
+
- lib/ds/mapper/ds_csv_mapper.rb
|
185
|
+
- lib/ds/mapper/ds_mets_mapper.rb
|
186
|
+
- lib/ds/mapper/marc_mapper.rb
|
187
|
+
- lib/ds/mapper/tei_xml_mapper.rb
|
188
|
+
- lib/ds/recon.rb
|
189
|
+
- lib/ds/recon/constants.rb
|
190
|
+
- lib/ds/recon/ds_csv_enumerator.rb
|
191
|
+
- lib/ds/recon/ds_mets_xml_enumerator.rb
|
192
|
+
- lib/ds/recon/marc_xml_enumerator.rb
|
193
|
+
- lib/ds/recon/recon_builder.rb
|
194
|
+
- lib/ds/recon/recon_data.rb
|
195
|
+
- lib/ds/recon/recon_manager.rb
|
196
|
+
- lib/ds/recon/source_enumerator.rb
|
197
|
+
- lib/ds/recon/tei_xml_enumerator.rb
|
198
|
+
- lib/ds/recon/type/all_subjects.rb
|
199
|
+
- lib/ds/recon/type/genres.rb
|
200
|
+
- lib/ds/recon/type/languages.rb
|
201
|
+
- lib/ds/recon/type/materials.rb
|
202
|
+
- lib/ds/recon/type/named_subjects.rb
|
203
|
+
- lib/ds/recon/type/names.rb
|
204
|
+
- lib/ds/recon/type/places.rb
|
205
|
+
- lib/ds/recon/type/recon_type.rb
|
206
|
+
- lib/ds/recon/type/splits.rb
|
207
|
+
- lib/ds/recon/type/subjects.rb
|
208
|
+
- lib/ds/recon/type/titles.rb
|
209
|
+
- lib/ds/recon/url_lookup.rb
|
210
|
+
- lib/ds/source.rb
|
211
|
+
- lib/ds/source/base_source.rb
|
212
|
+
- lib/ds/source/ds_csv.rb
|
213
|
+
- lib/ds/source/ds_mets_xml.rb
|
214
|
+
- lib/ds/source/marc_xml.rb
|
215
|
+
- lib/ds/source/source_cache.rb
|
216
|
+
- lib/ds/source/tei_xml.rb
|
217
|
+
- lib/ds/util.rb
|
218
|
+
- lib/ds/util/cache.rb
|
219
|
+
- lib/ds/util/csv_validator.rb
|
220
|
+
- lib/ds/util/csv_writer.rb
|
221
|
+
- lib/ds/util/strings.rb
|
222
|
+
- lib/ds/version.rb
|
223
|
+
homepage: https://github.com/DigitalScriptorium/ds-convert
|
224
|
+
licenses: []
|
225
|
+
metadata:
|
226
|
+
allowed_push_host: https://rubygems.org
|
227
|
+
homepage_uri: https://github.com/DigitalScriptorium/ds-convert
|
228
|
+
source_code_uri: https://github.com/DigitalScriptorium/ds-convert
|
229
|
+
rdoc_options: []
|
230
|
+
require_paths:
|
231
|
+
- lib
|
232
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '3.3'
|
237
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
242
|
+
requirements: []
|
243
|
+
rubygems_version: 3.6.9
|
244
|
+
specification_version: 4
|
245
|
+
summary: ETL scripts for managing Digital Scriptorium member data
|
246
|
+
test_files: []
|