locabulary 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,250 +1,127 @@
1
- [
2
- {
1
+ {
2
+ "values": [{
3
3
  "predicate_name": "program_name",
4
4
  "term_label": "Aerospace and Mechanical Engineering",
5
- "term_uri": null,
6
- "default_presentation_sequence": null,
7
- "activated_on": "2015-01-01",
8
- "deactivated_on": null
9
- },
10
- {
5
+ "activated_on": "2015-01-01"
6
+ },{
11
7
  "predicate_name": "program_name",
12
8
  "term_label": "Anthropology",
13
- "term_uri": null,
14
- "default_presentation_sequence": null,
15
- "activated_on": "2015-01-01",
16
- "deactivated_on": null
17
- },
18
- {
9
+ "activated_on": "2015-01-01"
10
+ },{
19
11
  "predicate_name": "program_name",
20
12
  "term_label": "Applied and Computational Mathematics and Statistics",
21
- "term_uri": null,
22
- "default_presentation_sequence": null,
23
- "activated_on": "2015-01-01",
24
- "deactivated_on": null
25
- },
26
- {
13
+ "activated_on": "2015-01-01"
14
+ },{
27
15
  "predicate_name": "program_name",
28
16
  "term_label": "Art, Art History, and Design",
29
- "term_uri": null,
30
- "default_presentation_sequence": null,
31
- "activated_on": "2015-01-01",
32
- "deactivated_on": null
33
- },
34
- {
17
+ "activated_on": "2015-01-01"
18
+ },{
35
19
  "predicate_name": "program_name",
36
20
  "term_label": "Bioengineering",
37
- "term_uri": null,
38
- "default_presentation_sequence": null,
39
- "activated_on": "2015-01-01",
40
- "deactivated_on": null
41
- },
42
- {
21
+ "activated_on": "2015-01-01"
22
+ },{
43
23
  "predicate_name": "program_name",
44
24
  "term_label": "Biological Sciences",
45
- "term_uri": null,
46
- "default_presentation_sequence": null,
47
- "activated_on": "2015-01-01",
48
- "deactivated_on": null
49
- },
50
- {
25
+ "activated_on": "2015-01-01"
26
+ },{
51
27
  "predicate_name": "program_name",
52
28
  "term_label": "Chemical and Biomolecular Engineering",
53
- "term_uri": null,
54
- "default_presentation_sequence": null,
55
- "activated_on": "2015-01-01",
56
- "deactivated_on": null
57
- },
58
- {
29
+ "activated_on": "2015-01-01"
30
+ },{
59
31
  "predicate_name": "program_name",
60
32
  "term_label": "Chemistry and Biochemistry",
61
- "term_uri": null,
62
- "default_presentation_sequence": null,
63
- "activated_on": "2015-01-01",
64
- "deactivated_on": null
65
- },
66
- {
33
+ "activated_on": "2015-01-01"
34
+ },{
67
35
  "predicate_name": "program_name",
68
36
  "term_label": "Civil and Environmental Engineering and Earth Sciences",
69
- "term_uri": null,
70
- "default_presentation_sequence": null,
71
- "activated_on": "2015-01-01",
72
- "deactivated_on": null
73
- },
74
- {
37
+ "activated_on": "2015-01-01"
38
+ },{
75
39
  "predicate_name": "program_name",
76
40
  "term_label": "Classics",
77
- "term_uri": null,
78
- "default_presentation_sequence": null,
79
- "activated_on": "2015-01-01",
80
- "deactivated_on": null
81
- },
82
- {
41
+ "activated_on": "2015-01-01"
42
+ },{
83
43
  "predicate_name": "program_name",
84
44
  "term_label": "Computer Science and Engineering",
85
- "term_uri": null,
86
- "default_presentation_sequence": null,
87
- "activated_on": "2015-01-01",
88
- "deactivated_on": null
89
- },
90
- {
45
+ "activated_on": "2015-01-01"
46
+ },{
91
47
  "predicate_name": "program_name",
92
48
  "term_label": "Creative Writing",
93
- "term_uri": null,
94
- "default_presentation_sequence": null,
95
- "activated_on": "2015-01-01",
96
- "deactivated_on": null
97
- },
98
- {
49
+ "activated_on": "2015-01-01"
50
+ },{
99
51
  "predicate_name": "program_name",
100
52
  "term_label": "Early Christian Studies",
101
- "term_uri": null,
102
- "default_presentation_sequence": null,
103
- "activated_on": "2015-01-01",
104
- "deactivated_on": null
105
- },
106
- {
53
+ "activated_on": "2015-01-01"
54
+ },{
107
55
  "predicate_name": "program_name",
108
56
  "term_label": "Economics",
109
- "term_uri": null,
110
- "default_presentation_sequence": null,
111
- "activated_on": "2015-01-01",
112
- "deactivated_on": null
113
- },
114
- {
57
+ "activated_on": "2015-01-01"
58
+ },{
115
59
  "predicate_name": "program_name",
116
60
  "term_label": "Electrical Engineering",
117
- "term_uri": null,
118
- "default_presentation_sequence": null,
119
- "activated_on": "2015-01-01",
120
- "deactivated_on": null
121
- },
122
- {
61
+ "activated_on": "2015-01-01"
62
+ },{
123
63
  "predicate_name": "program_name",
124
64
  "term_label": "English",
125
- "term_uri": null,
126
- "default_presentation_sequence": null,
127
- "activated_on": "2015-01-01",
128
- "deactivated_on": null
129
- },
130
- {
65
+ "activated_on": "2015-01-01"
66
+ },{
131
67
  "predicate_name": "program_name",
132
68
  "term_label": "History",
133
- "term_uri": null,
134
- "default_presentation_sequence": null,
135
- "activated_on": "2015-01-01",
136
- "deactivated_on": null
137
- },
138
- {
69
+ "activated_on": "2015-01-01"
70
+ },{
139
71
  "predicate_name": "program_name",
140
72
  "term_label": "History and Philosophy of Science",
141
- "term_uri": null,
142
- "default_presentation_sequence": null,
143
- "activated_on": "2015-01-01",
144
- "deactivated_on": null
145
- },
146
- {
73
+ "activated_on": "2015-01-01"
74
+ },{
147
75
  "predicate_name": "program_name",
148
76
  "term_label": "Integrated Biomedical Sciences",
149
- "term_uri": null,
150
- "default_presentation_sequence": null,
151
- "activated_on": "2015-01-01",
152
- "deactivated_on": null
153
- },
154
- {
77
+ "activated_on": "2015-01-01"
78
+ },{
155
79
  "predicate_name": "program_name",
156
80
  "term_label": "Literature",
157
- "term_uri": null,
158
- "default_presentation_sequence": null,
159
- "activated_on": "2015-01-01",
160
- "deactivated_on": null
161
- },
162
- {
81
+ "activated_on": "2015-01-01"
82
+ },{
163
83
  "predicate_name": "program_name",
164
84
  "term_label": "Mathematics",
165
- "term_uri": null,
166
- "default_presentation_sequence": null,
167
- "activated_on": "2015-01-01",
168
- "deactivated_on": null
169
- },
170
- {
85
+ "activated_on": "2015-01-01"
86
+ },{
171
87
  "predicate_name": "program_name",
172
88
  "term_label": "Medieval Studies",
173
- "term_uri": null,
174
- "default_presentation_sequence": null,
175
- "activated_on": "2015-01-01",
176
- "deactivated_on": null
177
- },
178
- {
89
+ "activated_on": "2015-01-01"
90
+ },{
179
91
  "predicate_name": "program_name",
180
92
  "term_label": "Peace Studies",
181
- "term_uri": null,
182
- "default_presentation_sequence": null,
183
- "activated_on": "2015-01-01",
184
- "deactivated_on": null
185
- },
186
- {
93
+ "activated_on": "2015-01-01"
94
+ },{
187
95
  "predicate_name": "program_name",
188
96
  "term_label": "Philosophy",
189
- "term_uri": null,
190
- "default_presentation_sequence": null,
191
- "activated_on": "2015-01-01",
192
- "deactivated_on": null
193
- },
194
- {
97
+ "activated_on": "2015-01-01"
98
+ },{
195
99
  "predicate_name": "program_name",
196
100
  "term_label": "Physics",
197
- "term_uri": null,
198
- "default_presentation_sequence": null,
199
- "activated_on": "2015-01-01",
200
- "deactivated_on": null
201
- },
202
- {
101
+ "activated_on": "2015-01-01"
102
+ },{
203
103
  "predicate_name": "program_name",
204
104
  "term_label": "Political Science",
205
- "term_uri": null,
206
- "default_presentation_sequence": null,
207
- "activated_on": "2015-01-01",
208
- "deactivated_on": null
209
- },
210
- {
105
+ "activated_on": "2015-01-01"
106
+ },{
211
107
  "predicate_name": "program_name",
212
108
  "term_label": "Psychology",
213
- "term_uri": null,
214
- "default_presentation_sequence": null,
215
- "activated_on": "2015-01-01",
216
- "deactivated_on": null
217
- },
218
- {
109
+ "activated_on": "2015-01-01"
110
+ },{
219
111
  "predicate_name": "program_name",
220
112
  "term_label": "Romance Languages and Literatures",
221
- "term_uri": null,
222
- "default_presentation_sequence": null,
223
- "activated_on": "2015-01-01",
224
- "deactivated_on": null
225
- },
226
- {
113
+ "activated_on": "2015-01-01"
114
+ },{
227
115
  "predicate_name": "program_name",
228
116
  "term_label": "Sacred Music",
229
- "term_uri": null,
230
- "default_presentation_sequence": null,
231
- "activated_on": "2015-01-01",
232
- "deactivated_on": null
233
- },
234
- {
117
+ "activated_on": "2015-01-01"
118
+ },{
235
119
  "predicate_name": "program_name",
236
120
  "term_label": "Sociology",
237
- "term_uri": null,
238
- "default_presentation_sequence": null,
239
- "activated_on": "2015-01-01",
240
- "deactivated_on": null
241
- },
242
- {
121
+ "activated_on": "2015-01-01"
122
+ },{
243
123
  "predicate_name": "program_name",
244
124
  "term_label": "Theology",
245
- "term_uri": null,
246
- "default_presentation_sequence": null,
247
- "activated_on": "2015-01-01",
248
- "deactivated_on": null
249
- }
250
- ]
125
+ "activated_on": "2015-01-01"
126
+ }]
127
+ }
@@ -1,50 +1,33 @@
1
- [
2
- {
1
+ {
2
+ "values": [{
3
3
  "predicate_name": "resource_consulted",
4
4
  "term_label": "Consultation with a librarian",
5
5
  "term_uri": "Consultation with a librarian",
6
- "default_presentation_sequence": null,
7
- "activated_on": "2015-01-01",
8
- "deactivated_on": null
9
- },
10
- {
6
+ "activated_on": "2015-01-01"
7
+ },{
11
8
  "predicate_name": "resource_consulted",
12
9
  "term_label": "Databases accessed via Hesburgh Libraries",
13
10
  "term_uri": "Databases accessed via Hesburgh Libraries",
14
- "default_presentation_sequence": null,
15
- "activated_on": "2015-01-01",
16
- "deactivated_on": null
17
- },
18
- {
11
+ "activated_on": "2015-01-01"
12
+ },{
19
13
  "predicate_name": "resource_consulted",
20
14
  "term_label": "Electronic journals",
21
15
  "term_uri": "Electronic journals",
22
- "default_presentation_sequence": null,
23
- "activated_on": "2015-01-01",
24
- "deactivated_on": null
25
- },
26
- {
16
+ "activated_on": "2015-01-01"
17
+ },{
27
18
  "predicate_name": "resource_consulted",
28
19
  "term_label": "Hesburgh Libraries Rare Books and Special Collections and/or Archives",
29
20
  "term_uri": "Hesburgh Libraries Rare Books and Special Collections and/or Archives",
30
- "default_presentation_sequence": null,
31
- "activated_on": "2015-01-01",
32
- "deactivated_on": null
33
- },
34
- {
21
+ "activated_on": "2015-01-01"
22
+ },{
35
23
  "predicate_name": "resource_consulted",
36
24
  "term_label": "Print sources",
37
25
  "term_uri": "Print sources",
38
- "default_presentation_sequence": null,
39
- "activated_on": "2015-01-01",
40
- "deactivated_on": null
41
- },
42
- {
26
+ "activated_on": "2015-01-01"
27
+ },{
43
28
  "predicate_name": "resource_consulted",
44
29
  "term_label": "Web sites or other internet research sources",
45
30
  "term_uri": "Web sites or other internet research sources",
46
- "default_presentation_sequence": null,
47
- "activated_on": "2015-01-01",
48
- "deactivated_on": null
49
- }
50
- ]
31
+ "activated_on": "2015-01-01"
32
+ }]
33
+ }
@@ -1,31 +1,23 @@
1
- [
2
- {
1
+ {
2
+ "values": [{
3
3
  "predicate_name": "underclass_level",
4
4
  "term_label": "First Year",
5
- "term_uri": null,
6
5
  "default_presentation_sequence": 1,
7
- "activated_on": "2015-01-01",
8
- "deactivated_on": null
6
+ "activated_on": "2015-01-01"
9
7
  },{
10
8
  "predicate_name": "underclass_level",
11
9
  "term_label": "Sophomore",
12
- "term_uri": null,
13
10
  "default_presentation_sequence": 2,
14
- "activated_on": "2015-01-01",
15
- "deactivated_on": null
11
+ "activated_on": "2015-01-01"
16
12
  },{
17
13
  "predicate_name": "underclass_level",
18
14
  "term_label": "Junior",
19
- "term_uri": null,
20
15
  "default_presentation_sequence": 3,
21
- "activated_on": "2015-01-01",
22
- "deactivated_on": null
16
+ "activated_on": "2015-01-01"
23
17
  },{
24
18
  "predicate_name": "underclass_level",
25
19
  "term_label": "5th Year",
26
- "term_uri": null,
27
20
  "default_presentation_sequence": 5,
28
- "activated_on": "2015-01-01",
29
- "deactivated_on": null
30
- }
31
- ]
21
+ "activated_on": "2015-01-01"
22
+ }]
23
+ }
@@ -1,50 +1,35 @@
1
- [
2
- {
1
+ {
2
+ "values": [{
3
3
  "predicate_name": "work_patent_strategy",
4
4
  "term_label": "going_to_patent",
5
- "term_uri": null,
6
5
  "default_presentation_sequence": 1,
7
- "activated_on": "2015-01-01",
8
- "deactivated_on": null
9
- },
10
- {
6
+ "activated_on": "2015-01-01"
7
+ },{
11
8
  "predicate_name": "work_patent_strategy",
12
9
  "term_label": "will_not_patent",
13
- "term_uri": null,
14
10
  "default_presentation_sequence": 2,
15
- "activated_on": "2015-01-01",
16
- "deactivated_on": null
17
- },
18
- {
11
+ "activated_on": "2015-01-01"
12
+ },{
19
13
  "predicate_name": "work_patent_strategy",
20
14
  "term_label": "already_patented",
21
- "term_uri": null,
22
15
  "default_presentation_sequence": 3,
23
16
  "activated_on": "2015-01-01",
24
17
  "deactivated_on": "2015-07-06"
25
- },
26
- {
18
+ },{
27
19
  "predicate_name": "work_patent_strategy",
28
20
  "term_label": "do_not_know",
29
- "term_uri": null,
30
21
  "default_presentation_sequence": 4,
31
22
  "activated_on": "2015-01-01",
32
23
  "deactivated_on": "2015-07-06"
33
- },
34
- {
24
+ },{
35
25
  "predicate_name": "work_patent_strategy",
36
26
  "term_label": "non_provisional_patent_filed",
37
- "term_uri": null,
38
27
  "default_presentation_sequence": 5,
39
- "activated_on": "2015-07-06",
40
- "deactivated_on": null
41
- },
42
- {
28
+ "activated_on": "2015-07-06"
29
+ },{
43
30
  "predicate_name": "work_patent_strategy",
44
31
  "term_label": "material_already_published",
45
- "term_uri": null,
46
32
  "default_presentation_sequence": 6,
47
- "activated_on": "2015-07-06",
48
- "deactivated_on": null
49
- }
50
- ]
33
+ "activated_on": "2015-07-06"
34
+ }]
35
+ }
@@ -1,34 +1,23 @@
1
- [
2
- {
1
+ {
2
+ "values": [{
3
3
  "predicate_name": "work_publication_strategy",
4
4
  "term_label": "going_to_publish",
5
- "term_uri": null,
6
5
  "default_presentation_sequence": 1,
7
- "activated_on": "2015-01-01",
8
- "deactivated_on": null
9
- },
10
- {
6
+ "activated_on": "2015-01-01"
7
+ },{
11
8
  "predicate_name": "work_publication_strategy",
12
9
  "term_label": "will_not_publish",
13
- "term_uri": null,
14
10
  "default_presentation_sequence": 2,
15
- "activated_on": "2015-01-01",
16
- "deactivated_on": null
17
- },
18
- {
11
+ "activated_on": "2015-01-01"
12
+ },{
19
13
  "predicate_name": "work_publication_strategy",
20
14
  "term_label": "already_published",
21
- "term_uri": null,
22
15
  "default_presentation_sequence": 3,
23
- "activated_on": "2015-01-01",
24
- "deactivated_on": null
25
- },
26
- {
16
+ "activated_on": "2015-01-01"
17
+ },{
27
18
  "predicate_name": "work_publication_strategy",
28
19
  "term_label": "do_not_know",
29
- "term_uri": null,
30
20
  "default_presentation_sequence": 4,
31
- "activated_on": "2015-01-01",
32
- "deactivated_on": null
33
- }
34
- ]
21
+ "activated_on": "2015-01-01"
22
+ }]
23
+ }
@@ -0,0 +1,23 @@
1
+ require 'dry/validation'
2
+ require 'dry/validation/schema'
3
+
4
+ module Locabulary
5
+ class Schema < Dry::Validation::Schema
6
+ key(:values) do |values|
7
+ values.array? do
8
+ values.each do |value|
9
+ value.hash? do
10
+ value.key(:predicate_name) { |predicate_name| predicate_name.format?(/\A[a-z_]+\Z/) & predicate_name.filled? }
11
+ value.key(:term_label) { |term_label| term_label.filled? }
12
+ value.optional(:term_uri) { |term_label| term_label.none? | term_label.str? }
13
+ value.optional(:default_presentation_sequence) do |default_presentation_sequence|
14
+ default_presentation_sequence.none? | default_presentation_sequence.int?
15
+ end
16
+ value.key(:activated_on) { |activated_on| activated_on.format?(/\A\d{4}-\d{2}-\d{2}\Z/) }
17
+ value.optional(:deactivated_on) { |deactivated_on| deactivated_on.none? | deactivated_on.format?(/\A\d{4}-\d{2}-\d{2}\Z/) }
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
data/lib/locabulary.rb CHANGED
@@ -3,7 +3,7 @@ require 'json'
3
3
 
4
4
  # @since 0.1.0
5
5
  module Locabulary
6
- VERSION='0.1.7'.freeze
6
+ VERSION='0.1.8'.freeze
7
7
  DATA_DIRECTORY = File.expand_path("../../data/", __FILE__).freeze
8
8
 
9
9
  class RuntimeError < ::RuntimeError
@@ -52,10 +52,11 @@ module Locabulary
52
52
  as_of = options.fetch(:as_of) { Date.today }
53
53
  active_cache[predicate_name] ||= begin
54
54
  filename = filename_for_predicate_name(predicate_name: predicate_name)
55
- JSON.parse(File.read(filename)).each_with_object([]) do |item_values, mem|
55
+ json = JSON.parse(File.read(filename))
56
+ json.fetch('values').each_with_object([]) do |item_values, mem|
56
57
  activated_on = Date.parse(item_values.fetch('activated_on'))
57
58
  next unless activated_on < as_of
58
- deactivated_on_value = item_values.fetch('deactivated_on')
59
+ deactivated_on_value = item_values.fetch('deactivated_on', nil)
59
60
  if deactivated_on_value.nil?
60
61
  mem << Item.new(item_values)
61
62
  else
data/locabulary.gemspec CHANGED
@@ -19,10 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
  spec.license = 'APACHE2'
21
21
 
22
+ spec.add_dependency "json", "~> 1.8"
23
+
24
+ spec.add_development_dependency "dry-validation"
22
25
  spec.add_development_dependency "bundler"
23
26
  spec.add_development_dependency "minitest"
24
27
  spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_dependency "json", "~> 1.8"
26
28
  spec.add_development_dependency 'google_drive'
27
29
  spec.add_development_dependency 'highline'
30
+ spec.add_development_dependency "activesupport", "~>4.0"
28
31
  end