revs-utils 1.0.21 → 2.0.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTI2NDBhNTNmMzBhYzdiY2M5MjM2Y2QzNjVkYzEwNWFjZGRlNWRlMw==
4
+ ZDhhZDFiZDllZWY5MjhhMjE1NTBlN2YxYzNjYTM1YjdlMjk1NTU4ZA==
5
5
  data.tar.gz: !binary |-
6
- N2Q0Y2MzNmM0MWFjNmMyMWViOTU0NGY4NjMyM2Y4MDlkMTUzZWYxOA==
6
+ NjJiY2E0MGRjZTllZGE1YTRlNGJiZjg1NDcyNmM5YzcwOWNmNDQwYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODVmMGMwNjVmZTlmOGZiMDlkZjg3Y2YyODFkODBlNzVhZmZmNzAxZTg3NTlj
10
- YzhmODE2NTc4ZmIyYTNlNTMwMjIwYmRhODgzNDYxMzY4MTZmZTA5NjQwOGQw
11
- NjljZjc3Yzg1NTRhZTUxZjlhNjYzOTIyYjMyZTFlNzg2NTIwODE=
9
+ NjE0YmY4NWViN2U3ZDE5ZjRhMWM2ZWQxYWM3ZTkyNDQ5MTRkYjE4YjUyZDUx
10
+ OWFkZGNjOGFjN2JjNTZlZWQzMDVlZWMzMDM2YjEzN2Y4MmVkODgyMDUxM2E3
11
+ NzkyOTdhYWQ0OTRjNGNlMDA0YzYyNGUwOWY4NTcwNTI1ZGUyZmM=
12
12
  data.tar.gz: !binary |-
13
- Mjc1MjMwMjAwN2JiYjNiYzQzZmY1YWRkZGYwOTllZjNhYmE2OWRkYmE5OTZl
14
- M2YxNmE5MTk1MGM4Mzg5YzZjMGY3ZjQ5NmE3MTI0YzI2YTkyZWNkYzgzYWY3
15
- MzQ5NWUwZjk5NGQ1Y2VlMThjYmJjZTdlZGYzMTI4MGQ4ZDQyNDE=
13
+ NDEwNGY0NDg5MjdiYWIxMDZhZDhmMGRlZGMzYmE4NzM5OGYzZjhmZjBiOWE0
14
+ NDY1Mzg2NjU0MWQ1M2JkY2Q3NjE4ZTIxNDZkOWU0YWE4N2Q1OTQ0ZjlkN2Qz
15
+ MTc1NjgzMTQ1NjJjNWFmMDUyMmQ3YzNmNzQ5MjY2MWFmMGY2ZjE=
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- revs-utils (1.0.21)
5
- actionpack (~> 3)
6
- chronic
4
+ revs-utils (2.0.0)
5
+ actionpack (~> 4.1.6)
7
6
  countries (= 0.9.2)
8
7
  rdf
9
8
 
@@ -11,63 +10,55 @@ GEM
11
10
  remote: http://rubygems.org/
12
11
  remote: http://sul-gems.stanford.edu/
13
12
  specs:
14
- actionpack (3.2.22)
15
- activemodel (= 3.2.22)
16
- activesupport (= 3.2.22)
17
- builder (~> 3.0.0)
13
+ actionpack (4.1.6)
14
+ actionview (= 4.1.6)
15
+ activesupport (= 4.1.6)
16
+ rack (~> 1.5.2)
17
+ rack-test (~> 0.6.2)
18
+ actionview (4.1.6)
19
+ activesupport (= 4.1.6)
20
+ builder (~> 3.1)
18
21
  erubis (~> 2.7.0)
19
- journey (~> 1.0.4)
20
- rack (~> 1.4.5)
21
- rack-cache (~> 1.2)
22
- rack-test (~> 0.6.1)
23
- sprockets (~> 2.2.1)
24
- activemodel (3.2.22)
25
- activesupport (= 3.2.22)
26
- builder (~> 3.0.0)
27
- activesupport (3.2.22)
28
- i18n (~> 0.6, >= 0.6.4)
29
- multi_json (~> 1.0)
30
- builder (3.0.4)
31
- chronic (0.10.2)
22
+ activesupport (4.1.6)
23
+ i18n (~> 0.6, >= 0.6.9)
24
+ json (~> 1.7, >= 1.7.7)
25
+ minitest (~> 5.1)
26
+ thread_safe (~> 0.1)
27
+ tzinfo (~> 1.1)
28
+ builder (3.2.2)
32
29
  countries (0.9.2)
33
30
  currencies (>= 0.4.0)
34
31
  currencies (0.4.2)
35
- diff-lcs (1.2.4)
32
+ diff-lcs (1.2.5)
36
33
  erubis (2.7.0)
37
- hike (1.2.3)
38
- i18n (0.7.0)
39
- journey (1.0.4)
40
- link_header (0.0.8)
34
+ i18n (0.6.11)
35
+ json (1.8.1)
41
36
  lyberteam-gems-devel (1.0.1)
42
37
  rake (>= 0.8.7)
43
38
  rest-client
44
- mime-types (2.0)
45
- multi_json (1.11.2)
46
- rack (1.4.7)
47
- rack-cache (1.2)
48
- rack (>= 0.4)
49
- rack-test (0.6.3)
39
+ mime-types (2.3)
40
+ minitest (5.4.1)
41
+ netrc (0.7.7)
42
+ rack (1.5.2)
43
+ rack-test (0.6.2)
50
44
  rack (>= 1.0)
51
- rake (10.1.0)
52
- rdf (1.1.15)
53
- link_header (~> 0.0, >= 0.0.8)
54
- rest-client (1.6.7)
55
- mime-types (>= 1.16)
56
- rspec (2.14.1)
57
- rspec-core (~> 2.14.0)
58
- rspec-expectations (~> 2.14.0)
59
- rspec-mocks (~> 2.14.0)
60
- rspec-core (2.14.7)
61
- rspec-expectations (2.14.3)
45
+ rake (10.3.2)
46
+ rdf (1.1.6)
47
+ rest-client (1.7.2)
48
+ mime-types (>= 1.16, < 3.0)
49
+ netrc (~> 0.7)
50
+ rspec (2.99.0)
51
+ rspec-core (~> 2.99.0)
52
+ rspec-expectations (~> 2.99.0)
53
+ rspec-mocks (~> 2.99.0)
54
+ rspec-core (2.99.2)
55
+ rspec-expectations (2.99.2)
62
56
  diff-lcs (>= 1.1.3, < 2.0)
63
- rspec-mocks (2.14.4)
64
- sprockets (2.2.3)
65
- hike (~> 1.2)
66
- multi_json (~> 1.0)
67
- rack (~> 1.0)
68
- tilt (~> 1.1, != 1.3.0)
69
- tilt (1.4.1)
70
- yard (0.8.7.3)
57
+ rspec-mocks (2.99.2)
58
+ thread_safe (0.3.4)
59
+ tzinfo (1.2.2)
60
+ thread_safe (~> 0.1)
61
+ yard (0.8.7.4)
71
62
 
72
63
  PLATFORMS
73
64
  ruby
data/README.rdoc CHANGED
@@ -18,17 +18,11 @@ Shared methods and functions used by revs-indexer, pre-assembly and bulk metadat
18
18
  - <b>1.0.6</b> Add some more conditions to CSV header checks
19
19
  - <b>1.0.7</b> Label column needs to be there but does not need to have a value to register
20
20
  - <b>1.0.8</b> Update clean_collection_name method to deal with other possible names
21
- - <b>1.0.9</b> Add more common format corrections
22
- - <b>1.0.10</b> Update valid for metadata method so it is not sensitive to blank or uppercase columns
23
- - <b>1.0.11</b> Fix issues with year parsing
24
- - <b>1.0.12</b> Allow two digit years in year formatting
25
- - <b>1.0.19</b> Display output showing reasons for validation failures when checking manifests
26
- - <b>1.0.20</b> Allow for optional metadata columns in the manifest
27
- - <b>1.0.21</b> Add more information when sourceIDs are not unique
21
+ - <b>2.0.0</b> Updating to use ActionPack 4 for Rails 4 applications. For Rails 3, continue to use 1.x.y releases.
28
22
 
29
23
  == Running tests
30
24
 
31
- bundle exec rspec spec
25
+ ./bin/run_all_tests
32
26
 
33
27
  == Release the gem to the gemserver
34
28
 
@@ -42,7 +36,7 @@ gem build revs-utils.gemspec
42
36
 
43
37
  6. Release the gem to RubyGems:
44
38
 
45
- gem push revs-utils-1.0.9.gem # substitute actual version number
39
+ gem push revs-utils-1.0.8.gem # substitute actual version number
46
40
 
47
41
  == Installation
48
42
 
@@ -30,18 +30,5 @@ metadata:
30
30
  hide: hide
31
31
  format: format
32
32
  collection_name: collection_name
33
- metadata_optional:
34
- format_authority: format_authority
35
- known_formats:
36
- - black-and-white film
37
- - color film
38
- - slides
39
- - foldouts
40
- - pamphlets
41
- - oversize items
42
- - photographic prints
43
- - black-and-white negatives
44
- - color negatives
45
- - black-and-white transparencies
46
- - color transparencies
47
- - Glass negatives
33
+
34
+
Binary file
@@ -1,5 +1,5 @@
1
1
  module Revs
2
2
  module Utils
3
- VERSION = "1.0.21"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
data/lib/revs-utils.rb CHANGED
@@ -5,7 +5,6 @@ require "countries"
5
5
  require 'active_support/core_ext/string'
6
6
  require 'active_support/core_ext/hash'
7
7
  require 'csv'
8
- require 'chronic'
9
8
 
10
9
  PROJECT_ROOT = File.expand_path(File.dirname(__FILE__) + '/..')
11
10
 
@@ -14,8 +13,7 @@ REVS_LC_TERMS_FILENAME=File.join(PROJECT_ROOT,'files','revs-lc-marque-terms.obj'
14
13
  REVS_MANIFEST_HEADERS_FILEPATH = File.join(PROJECT_ROOT,'config',"manifest_headers.yml")
15
14
  REGISTER = "register"
16
15
  METADATA = "metadata"
17
- OPTIONAL = "metadata_optional"
18
- FORMATS = "known_formats"
16
+
19
17
 
20
18
  module Revs
21
19
  module Utils
@@ -24,14 +22,11 @@ module Revs
24
22
  # a hash of LC Subject Heading terms and their IDs for linking for "Automobiles" http://id.loc.gov/authorities/subjects/sh85010201.html
25
23
  # this is cached and loaded from disk and deserialized back into a hash for performance reasons, then stored as a module
26
24
  # level constant so it can be reused throughout the pre-assembly run as a constant
27
- # This cached set of terms can be re-generated with "ruby bin/revs_lc_automobile_terms.rb"
25
+ # This cached set of terms can be re-generated with "ruby devel/revs_lc_automobile_terms.rb"
28
26
  AUTOMOBILE_LC_TERMS= File.open(REVS_LC_TERMS_FILENAME,'rb'){|io| Marshal.load(io)} if File.exists?(REVS_LC_TERMS_FILENAME)
29
27
  REVS_MANIFEST_HEADERS_FILE = File.open(REVS_MANIFEST_HEADERS_FILEPATH)
30
28
  REVS_MANIFEST_HEADERS = YAML.load( REVS_MANIFEST_HEADERS_FILE)
31
29
 
32
- def revs_known_formats
33
- get_manifest_section(FORMATS)
34
- end
35
30
 
36
31
  def get_manifest_section(section)
37
32
  return REVS_MANIFEST_HEADERS[section]
@@ -71,98 +66,50 @@ module Revs
71
66
  sources = Array.new
72
67
  files.each do |file|
73
68
  file.each do |row|
74
- #Make sure the sourceid and filename are the same
69
+ #Make sure the sourcid and filename are the same
75
70
  fname = row[get_manifest_section(REGISTER)['filename']].chomp(File.extname(row[get_manifest_section(REGISTER)['filename']]))
76
- return false if ((row[get_manifest_section(REGISTER)['sourceid']] != fname) || ((/\s/ =~ row[get_manifest_section(REGISTER)['sourceid']].strip) != nil))
71
+ return false if row[get_manifest_section(REGISTER)['sourceid']] != fname
77
72
  sources << row[get_manifest_section(REGISTER)['sourceid']]
78
- end
73
+ end
74
+
75
+
76
+
79
77
  end
80
78
  return sources.uniq.size == sources.size
81
79
 
82
80
  end
83
-
81
+
82
+
84
83
  #Pass this function a CSV file and it will return true if the proper headers are there and each entry has the required fields filled in
85
84
  def valid_to_register(file_path)
85
+
86
86
  file = read_csv_with_headers(file_path)
87
- return check_valid_to_register(file)
88
- end
89
-
90
- #Pass this function a CSV file and it will return true if the proper headers are there and each entry has the required fields filled in.
91
- def valid_for_metadata(file_path)
92
- file = read_csv_with_headers(file_path)
93
- return check_headers(file)
94
- end
95
-
96
- # pass in csv data and it will tell if you everything is safe to register based on having labels, unique sourceIDs and filenames matching sourceIDs
97
- def check_valid_to_register(csv_data)
98
87
  #Make sure all the required headers are there
99
- result1=result2=result3=result4=true
100
- if not get_manifest_section(REGISTER).values-csv_data[0].keys == []
101
- puts "missing headers required for registration"
102
- result1=false
103
- end
104
- sources=Array.new
88
+ return false if not get_manifest_section(REGISTER).values-file[0].keys == []
89
+
105
90
  #Make sure all files have entries for those required headers
106
- csv_data.each do |row|
91
+ file.each do |row|
107
92
  get_manifest_section(REGISTER).keys.each do |header| # label should be there as a column but does not always need a value
108
- if header.downcase !='label' && row[header].blank?
109
- puts "#{row[get_manifest_section(REGISTER)['sourceid']]} does not have a value for a required registration field"
110
- result2=false
111
- end
112
- end
113
- fname = row[get_manifest_section(REGISTER)['filename']].chomp(File.extname(row[get_manifest_section(REGISTER)['filename']]))
114
- if ((row[get_manifest_section(REGISTER)['sourceid']] != fname) || ((/\s/ =~ row[get_manifest_section(REGISTER)['sourceid']].strip) != nil))
115
- puts "#{row[get_manifest_section(REGISTER)['sourceid']]} does not match the filename or has a space in it"
116
- result3=false
93
+ return false if header.downcase !='label' && row[header].blank? #Alternatively consider row[header].class != String or row[header].size <= 0
117
94
  end
118
- sources << row[get_manifest_section(REGISTER)['sourceid']]
119
- end
120
- result4 = (sources.uniq.size == sources.size)
121
- unless result4
122
- puts "sourceIDs are not all unique"
123
- puts sources.uniq.map { | e | [sources.count(e), e] }.select { | c, _ | c > 1 }.sort.reverse.map { | c, e | "#{e}: #{c}" } # show all non-unique sourceIDs and their frequency
124
95
  end
125
- return (result1 && result2 && result3 && result4)
126
-
96
+ return true
127
97
  end
128
98
 
129
- # looks at certain metadata fields in manifest to confirm validity (such as dates and formats)
130
- def check_metadata(csv_data)
131
- bad_rows=0
132
- csv_data.each do |row|
133
- valid_date=revs_is_valid_datestring?(row[get_manifest_section(METADATA)['year']] || row[get_manifest_section(METADATA)['date']])
134
- valid_format=revs_is_valid_format?(row[get_manifest_section(METADATA)['format']])
135
- unless (valid_date && valid_format)
136
- bad_rows+=1
137
- puts "#{row[get_manifest_section(REGISTER)['sourceid']]} has a bad year/date or format"
138
- end
139
- end
140
- return bad_rows
141
- end
142
-
143
- # pass in csv data from a file read in and it will tell you if the headers are valid
144
- def check_headers(csv_data)
145
-
146
- result1=result2=true
147
- file_headers=csv_data[0].keys.reject(&:blank?).collect(&:downcase)
99
+ #Pass this function a CSV file and it will return true if the proper headers are there and each entry has the required fields filled in.
100
+ def valid_for_metadata(file_path)
101
+ file = read_csv_with_headers(file_path)
102
+ file_headers=file[0].keys
148
103
  #The file doesn't need to have all the metadata values, it just can't have headers that aren't used for metadata or registration
149
104
  if file_headers.include?('date') && file_headers.include?('year') # can't have both date and year
150
- puts "has both year and date columns"
151
- result1=false
152
- end
153
- if file_headers.include?('location') && file_headers.include?('state') && file_headers.include?('city') && file_headers.include?('country') # can't have both location and the specific fields
154
- puts "has location column as well as specific state,city,country columns"
155
- result2=false
105
+ return false
106
+ elsif file_headers.include?('location') && file_headers.include?('state') && file_headers.include?('city') && file_headers.include?('country') # can't have both location and the specific fields
107
+ return false
108
+ else
109
+ return file_headers-get_manifest_section(METADATA).values-get_manifest_section(REGISTER).values == []
156
110
  end
157
- extra_columns = file_headers-get_manifest_section(METADATA).values-get_manifest_section(REGISTER).values-get_manifest_section(OPTIONAL).values
158
- has_extra_columns = (extra_columns == [])
159
- puts "has unknown columns: #{extra_columns.join(', ')}" unless has_extra_columns
160
- result3 = has_extra_columns
161
-
162
- return (result1 && result2 && result3)
163
-
164
111
  end
165
-
112
+
166
113
  def clean_collection_name(name)
167
114
  return "" if name.blank? || name.nil?
168
115
  name=name.to_s
@@ -199,32 +146,19 @@ module Revs
199
146
  return row
200
147
  end
201
148
 
202
- # checks to see if we have a valid format
203
- def revs_is_valid_format?(format)
204
- return true if format.nil? || format.blank?
205
- formats=format.split("|").collect{|f| f.strip}
206
- !formats.collect {|f| revs_known_formats.include?(f)}.uniq.include?(false)
207
- end
208
-
209
- # check a single format and fix some common issues
210
149
  def revs_check_format(format)
211
150
  return revs_check_formats([format]).first
212
151
  end
213
152
 
214
- # check the incoming array of formats and fix some common issues
153
+ # check the incoming format and fix some common issues
215
154
  def revs_check_formats(format)
216
155
  known_fixes = {"black-and-white negative"=>"black-and-white negatives",
217
156
  "color negative"=>"color negatives",
218
157
  "slides/color transparency"=>"color transparencies",
219
158
  "color negatives/slides"=>"color negatives",
220
159
  "black-and-white negative strips"=>"black-and-white negatives",
221
- "black and white"=>"black-and-white negatives",
222
- "black-and-white"=>"black-and-white negatives",
223
- "black and white negative"=>"black-and-white negatives",
224
- "black and white negatives"=>"black-and-white negatives",
225
160
  "color transparency"=>"color transparencies",
226
- "slide"=>"slides",
227
- "color transparancies"=>"color transparencies"
161
+ "slide"=>"slides"
228
162
  }
229
163
  count = 0
230
164
  format.each do |f|
@@ -297,21 +231,11 @@ module Revs
297
231
  date_string.to_s.strip.scan(/\D/).empty? and (starting_year..Date.today.year).include?(date_string.to_i)
298
232
  end
299
233
 
300
- # tell us if the incoming datestring supplied in the manifest column is a valid date, year or list of years
301
- def revs_is_valid_datestring?(date_string)
302
- return true if date_string.nil? || date_string.empty?
303
- is_full_date=(get_full_date(date_string) != false)
304
- is_year=!parse_years(date_string).empty?
305
- return is_year || is_full_date
306
- end
307
-
308
- # tell us if the string passed is in is a full date of the format M/D/YYYY or m-d-yyyy or m-d-yy or M/D/YY, and returns the date object if it is valid
234
+ # tell us if the string passed is in is a full date of the format M/D/YYYY, and returns the date object if it is valid
309
235
  def get_full_date(date_string)
310
236
  begin
311
- return false if date_string.scan(/(-|\/)/).count < 2 # we need at least two / or - characters to count as a full date
312
- date_obj=Chronic.parse(date_string).to_date
313
- date_obj=date_obj.prev_year(100) if date_obj > Date.today # if the parsing yields a date in the future, this is a problem, so adjust back a century (due to this issue: http://stackoverflow.com/questions/27058068/ruby-incorrectly-parses-2-digit-year)
314
- is_valid_year?(date_obj.year.to_s) ? date_obj : false
237
+ date_obj=Date.strptime(date_string.gsub('-','/').delete(' '), '%m/%d/%Y')
238
+ return (is_valid_year?(date_obj.year.to_s) ? date_obj : false)
315
239
  rescue
316
240
  false
317
241
  end
@@ -329,14 +253,14 @@ module Revs
329
253
  years_to_add=[]
330
254
  result.each do |year|
331
255
 
332
- if year.scan(/[1-2][0-9][0-9][0-9][-][0-9][0-9]/).size > 0 && year.size == 7 # if we have a year that looks like "1961-62" or "1961-73", lets deal with it turning it into [1961,1962] or [1961,1962,1963,1964,1965,1966,1967...etc]
256
+ if year.scan(/[1-2][0-9][0-9][0-9][-][0-9][0-9]/).size > 0 # if we have a year that looks like "1961-62" or "1961-73", lets deal with it turning it into [1961,1962] or [1961,1962,1963,1964,1965,1966,1967...etc]
333
257
  start_year=year[2..3]
334
258
  end_year=year[5..6]
335
259
  stem=year[0..1]
336
260
  for n in start_year..end_year
337
261
  years_to_add << "#{stem}#{n}"
338
262
  end
339
- elsif year.scan(/[1-2][0-9][0-9][0-9][-][1-9]/).size > 0 && year.size == 6 # if we have a year that lloks like "1961-2" or "1961-3", lets deal with it turning it into [1961,1962] or [1961,1962,1963]
263
+ elsif year.scan(/[1-2][0-9][0-9][0-9][-][1-9]/).size > 0 # if we have a year that lloks like "1961-2" or "1961-3", lets deal with it turning it into [1961,1962] or [1961,1962,1963]
340
264
  start_year=year[3..3]
341
265
  end_year=year[5..5]
342
266
  stem=year[0..2]
@@ -351,7 +275,7 @@ module Revs
351
275
  %w{0 1 2 3 4 5 6 7 8 9}.each {|n| years_to_add << "#{stem}#{n}"} # add each year in that decade to the output array
352
276
  end
353
277
 
354
- if year.scan(/[1-2][0-9][0-9][0-9][-][1-2][0-9][0-9][0-9]/).size > 0 && year.size == 9 # if we have a year that lloks like "1961-1962" or "1930-1955", lets deal with it turning it into [1961,1962] or [1961,1962,1963]
278
+ if year.scan(/[1-2][0-9][0-9][0-9][-][1-2][0-9][0-9][0-9]/).size > 0 # if we have a year that lloks like "1961-1962" or "1930-1955", lets deal with it turning it into [1961,1962] or [1961,1962,1963]
355
279
  start_year=year[0..3]
356
280
  end_year=year[5..8]
357
281
  if end_year.to_i - start_year.to_i < 10 # let's only do the expansion if we don't have some really large date range, like "1930-1985" .. only ranges less than 9 years will be split into separate years
data/revs-utils.gemspec CHANGED
@@ -11,8 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.description = "Shared methods and functions used by revs-indexer, pre-assembly and bulk metadata loading code."
12
12
  gem.summary = "Shared methods and functions used by revs-indexer, pre-assembly and bulk metadata loading code."
13
13
  gem.homepage = ""
14
- gem.license = "All rights reserved, Stanford University."
15
-
14
+
16
15
  gem.files = `git ls-files`.split($/)
17
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
@@ -20,8 +19,7 @@ Gem::Specification.new do |gem|
20
19
 
21
20
  gem.add_dependency "countries", "0.9.2"
22
21
  gem.add_dependency "rdf"
23
- gem.add_dependency "actionpack", '~> 3'
24
- gem.add_dependency "chronic"
22
+ gem.add_dependency "actionpack", '~> 4.1.6'
25
23
 
26
24
  gem.add_development_dependency "rspec", "~> 2.6"
27
25
  gem.add_development_dependency "lyberteam-gems-devel", "> 1.0.0"
@@ -62,7 +62,6 @@ describe "Revs-Utils" do
62
62
 
63
63
  it "should clean up some common format errors from an array" do
64
64
  @revs.revs_check_formats(['black-and-white negative','color negative','leave alone']).should == ['black-and-white negatives','color negatives','leave alone']
65
- @revs.revs_check_formats(['black and white','color negative','black-and-white negative']).should == ['black-and-white negatives','color negatives','black-and-white negatives']
66
65
  end
67
66
 
68
67
  it "should clean up some common format errors from a string" do
@@ -76,30 +75,10 @@ describe "Revs-Utils" do
76
75
  end
77
76
 
78
77
  it "should indicate if a date is valid" do
79
-
80
- # formats that are ok
78
+ @revs.get_full_date('bogus').should be_false
81
79
  @revs.get_full_date('5/1/1959').should == Date.strptime("5/1/1959", '%m/%d/%Y')
82
80
  @revs.get_full_date('5-1-1959').should == Date.strptime("5/1/1959", '%m/%d/%Y')
83
- @revs.get_full_date('5-1-2014').should == Date.strptime("5/1/2014", '%m/%d/%Y')
84
- @revs.get_full_date('5-1-59').should == Date.strptime("5/1/1959", '%m/%d/%Y')
85
- @revs.get_full_date('1/1/71').should == Date.strptime("1/1/1971", '%m/%d/%Y')
86
- @revs.get_full_date('5-1-14').should == Date.strptime("5/1/2014", '%m/%d/%Y')
87
- @revs.get_full_date('5-1-21').should == Date.strptime("5/1/1921", '%m/%d/%Y')
88
- @revs.get_full_date('1966-02-27').should == Date.strptime("2/27/1966", '%m/%d/%Y')
89
- @revs.get_full_date('1966-2-5').should == Date.strptime("2/5/1966", '%m/%d/%Y')
90
-
91
- # bad full dates
92
- @revs.get_full_date('1966-14-11').should be_false # bad month
93
- @revs.get_full_date('1966\4\11').should be_false # slashes are the wrong way
94
- @revs.get_full_date('bogus').should be_false # crap string
95
- @revs.get_full_date('').should be_false # blank
96
- @revs.get_full_date('1965').should be_false # only the year
97
- @revs.get_full_date('1965-68').should be_false # range of years
98
- @revs.get_full_date('1965,1968').should be_false # multiple years
99
- @revs.get_full_date('1965|1968').should be_false # multiple years
100
- @revs.get_full_date('1965-1968').should be_false # multiple years
101
- @revs.get_full_date('1965-8').should be_false # multiple years
102
-
81
+ @revs.get_full_date('5-1-59').should be_false # two digit year is not allowed
103
82
  end
104
83
 
105
84
  it "should indicate if we have a valid year" do
@@ -108,29 +87,7 @@ describe "Revs-Utils" do
108
87
  @revs.is_valid_year?('1700').should be_false # too old! no cars even existed yet
109
88
  @revs.is_valid_year?('1700',1600).should be_true # unless we allow it to be ok
110
89
  end
111
-
112
- it "should indicate if we have unknown formats" do
113
- @revs.revs_is_valid_format?(nil).should be_true
114
- @revs.revs_is_valid_format?('').should be_true
115
- @revs.revs_is_valid_format?('slides').should be_true
116
- @revs.revs_is_valid_format?('slide').should be_false
117
- @revs.revs_is_valid_format?('slides | slide').should be_false
118
- @revs.revs_is_valid_format?('slides | black-and-white negatives').should be_true
119
- @revs.revs_is_valid_format?('black-and-white-negatives').should be_false
120
- @revs.revs_is_valid_format?('black-and-white negatives').should be_true
121
- end
122
-
123
- it "should indicate if we have a valid datestring" do
124
- @revs.revs_is_valid_datestring?('1959').should be_true
125
- @revs.revs_is_valid_datestring?('bogus').should be_false
126
- @revs.revs_is_valid_datestring?('').should be_true
127
- @revs.revs_is_valid_datestring?(nil).should be_true
128
- @revs.revs_is_valid_datestring?([]).should be_true
129
- @revs.revs_is_valid_datestring?('2/2/1950').should be_true
130
- @revs.revs_is_valid_datestring?('2/31/1950').should be_false
131
- @revs.revs_is_valid_datestring?('2/2/50').should be_true
132
- @revs.revs_is_valid_datestring?('195x').should be_true
133
- end
90
+
134
91
 
135
92
  it "should lookup the country correctly" do
136
93
  @revs.revs_get_country('USA').should == "United States"
@@ -159,7 +116,6 @@ describe "Revs-Utils" do
159
116
  it "should parse 1950s correctly" do
160
117
 
161
118
  @revs.parse_years('1950s').should == ['1950','1951','1952','1953','1954','1955','1956','1957','1958','1959']
162
- @revs.parse_years("1950's").should == ['1950','1951','1952','1953','1954','1955','1956','1957','1958','1959']
163
119
 
164
120
  end
165
121
 
@@ -181,12 +137,6 @@ describe "Revs-Utils" do
181
137
 
182
138
  end
183
139
 
184
- it "should parse 1800-1802" do
185
-
186
- @revs.parse_years('1800-1802').should == ['1800','1801','1802']
187
-
188
- end
189
-
190
140
  it "should parse 1955-1957 | 1955 | 1955 and not produce duplicate years" do
191
141
 
192
142
  @revs.parse_years('1955-1957 | 1955 | 1955').should == ['1955','1956','1957']
@@ -297,11 +247,7 @@ describe "Revs-Utils" do
297
247
  sheets = [Dir.pwd + "/spec/sample-csv-files/malformed-sourceid.csv"]
298
248
  @revs.unique_source_ids(sheets).should == false
299
249
  end
300
-
301
- it "should return false when a sourceid has a space in it" do
302
- sheets = [Dir.pwd + "/spec/sample-csv-files/space-sourceid.csv"]
303
- @revs.unique_source_ids(sheets).should == false
304
- end
250
+
305
251
 
306
252
 
307
253
  end
@@ -1,4 +1,4 @@
1
- format,sourceid,collection_name,filename,year,photographer,label,marque,model,model_year,people,city,state,country,event,description,inst_notes,prod_notes,has_more_metadata,format_authority
1
+ format,sourceid,collection_name,filename,year,photographer,label,marque,model,model_year,people,city,state,country,event,description,inst_notes,prod_notes,has_more_metadata
2
2
  black-and-white negatives,2004-100CRAI-b1_1.0_0001,Bruce R Craig Photograph Collection,2004-100CRAI-b1_1.0_0001.tif,,Bruce R Craig,Rutherford Special,Rutherford Special,,,"Rutherford, Slim",,,"full car (rear), #62",,,
3
3
  black-and-white negatives,2004-100CRAI-b1_1.0_0002,Bruce R Craig Photograph Collection,2004-100CRAI-b1_1.0_0002.tif,,Bruce R Craig,City of Roses,City of Roses,,,"Sezekendy, Charley",,,"full car, #2",,,
4
4
  black-and-white negatives,2004-100CRAI-b1_1.0_0003,Bruce R Craig Photograph Collection,2004-100CRAI-b1_1.0_0003.tif,,Ed Hitzwe,Wilburn | Morgan,,,,Wilburn | Morgan,,,"install tire on wheel, posed photo",,,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revs-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.21
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Mangiafico
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-21 00:00:00.000000000 Z
11
+ date: 2014-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: countries
@@ -44,28 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '3'
47
+ version: 4.1.6
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '3'
55
- - !ruby/object:Gem::Dependency
56
- name: chronic
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
54
+ version: 4.1.6
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -147,11 +133,9 @@ files:
147
133
  - spec/sample-csv-files/no-blank-label.csv
148
134
  - spec/sample-csv-files/no-label-column.csv
149
135
  - spec/sample-csv-files/no-sourceid.csv
150
- - spec/sample-csv-files/space-sourceid.csv
151
136
  - spec/spec_helper.rb
152
137
  homepage: ''
153
- licenses:
154
- - All rights reserved, Stanford University.
138
+ licenses: []
155
139
  metadata: {}
156
140
  post_install_message:
157
141
  rdoc_options: []
@@ -169,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
153
  version: '0'
170
154
  requirements: []
171
155
  rubyforge_project:
172
- rubygems_version: 2.4.2
156
+ rubygems_version: 2.2.2
173
157
  signing_key:
174
158
  specification_version: 4
175
159
  summary: Shared methods and functions used by revs-indexer, pre-assembly and bulk
@@ -187,6 +171,5 @@ test_files:
187
171
  - spec/sample-csv-files/no-blank-label.csv
188
172
  - spec/sample-csv-files/no-label-column.csv
189
173
  - spec/sample-csv-files/no-sourceid.csv
190
- - spec/sample-csv-files/space-sourceid.csv
191
174
  - spec/spec_helper.rb
192
175
  has_rdoc:
@@ -1,3 +0,0 @@
1
- format,sourceid,collection_name,filename,year,photographer,label,marque,model,model_year,people,location,event,description,inst_notes,prod_notes,has_more_metadata
2
- black-and-white negatives,2004-100CRAI-b1_1.0 _0001,Bruce R Craig Photograph Collection,2004-100CRAI-b1_1.0 _0001.tif,,Bruce R Craig,Rutherford Special,Rutherford Special,,,"Rutherford, Slim",,,"full car (rear), #62",,,
3
- black-and-white negatives,2004-100CRAI-b1_1.0_0002,Bruce R Craig Photograph Collection,2004-100CRAI-b1_1.0_0002.tif,,Bruce R Craig,City of Roses,City of Roses,,,"Sezekendy, Charley",,,"full car, #2",,,