imw 0.2.7 → 0.2.8

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.
Files changed (93) hide show
  1. data/Gemfile +23 -0
  2. data/Gemfile.lock +47 -0
  3. data/LICENSE +20 -674
  4. data/README.rdoc +3 -4
  5. data/VERSION +1 -1
  6. data/lib/imw.rb +64 -35
  7. data/lib/imw/dataset.rb +12 -2
  8. data/lib/imw/formats.rb +4 -2
  9. data/lib/imw/formats/delimited.rb +96 -36
  10. data/lib/imw/formats/excel.rb +69 -101
  11. data/lib/imw/formats/json.rb +3 -5
  12. data/lib/imw/formats/pdf.rb +71 -0
  13. data/lib/imw/formats/yaml.rb +3 -5
  14. data/lib/imw/metadata.rb +66 -0
  15. data/lib/imw/metadata/contains_metadata.rb +44 -0
  16. data/lib/imw/metadata/dsl.rb +111 -0
  17. data/lib/imw/metadata/field.rb +65 -0
  18. data/lib/imw/metadata/schema.rb +227 -0
  19. data/lib/imw/metadata/schematized.rb +27 -0
  20. data/lib/imw/parsers.rb +1 -0
  21. data/lib/imw/parsers/flat.rb +44 -0
  22. data/lib/imw/resource.rb +36 -224
  23. data/lib/imw/schemes.rb +3 -1
  24. data/lib/imw/schemes/hdfs.rb +12 -1
  25. data/lib/imw/schemes/http.rb +1 -2
  26. data/lib/imw/schemes/local.rb +139 -16
  27. data/lib/imw/schemes/remote.rb +14 -9
  28. data/lib/imw/schemes/s3.rb +12 -0
  29. data/lib/imw/schemes/sql.rb +117 -0
  30. data/lib/imw/tools.rb +5 -3
  31. data/lib/imw/tools/downloader.rb +63 -0
  32. data/lib/imw/tools/summarizer.rb +21 -10
  33. data/lib/imw/utils.rb +10 -0
  34. data/lib/imw/utils/dynamically_extendable.rb +137 -0
  35. data/lib/imw/utils/error.rb +3 -0
  36. data/lib/imw/utils/extensions.rb +0 -4
  37. data/lib/imw/utils/extensions/array.rb +6 -7
  38. data/lib/imw/utils/extensions/hash.rb +3 -5
  39. data/lib/imw/utils/extensions/string.rb +3 -3
  40. data/lib/imw/utils/has_uri.rb +114 -0
  41. data/spec/data/{sample.csv → formats/delimited/sample.csv} +1 -1
  42. data/spec/data/{sample.tsv → formats/delimited/sample.tsv} +0 -0
  43. data/spec/data/formats/delimited/with_schema/ace-hardware-locations.tsv +11 -0
  44. data/spec/data/formats/delimited/with_schema/all-countries-ip-address-to-geolocation-data.tsv +16 -0
  45. data/spec/data/formats/delimited/with_schema/complete-list-of-starbucks-locations.tsv +11 -0
  46. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +22 -0
  47. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +22 -0
  48. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-counts.tsv +12 -0
  49. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +13 -0
  50. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +22 -0
  51. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +22 -0
  52. data/spec/data/formats/delimited/without_schema/ace-hardware-locations.tsv +10 -0
  53. data/spec/data/formats/delimited/without_schema/all-countries-ip-address-to-geolocation-data.tsv +15 -0
  54. data/spec/data/formats/delimited/without_schema/complete-list-of-starbucks-locations.tsv +10 -0
  55. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +21 -0
  56. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +21 -0
  57. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-counts.tsv +11 -0
  58. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +12 -0
  59. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +21 -0
  60. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +21 -0
  61. data/spec/data/formats/excel/sample.xls +0 -0
  62. data/spec/data/formats/json/sample.json +1 -0
  63. data/spec/data/formats/none/sample +650 -0
  64. data/spec/data/formats/sgml/sample.xml +617 -0
  65. data/spec/data/formats/text/sample.txt +650 -0
  66. data/spec/data/formats/yaml/sample.yaml +410 -0
  67. data/spec/data/schema-tabular.yaml +11 -0
  68. data/spec/imw/formats/delimited_spec.rb +34 -2
  69. data/spec/imw/formats/excel_spec.rb +55 -0
  70. data/spec/imw/formats/json_spec.rb +3 -3
  71. data/spec/imw/formats/sgml_spec.rb +4 -4
  72. data/spec/imw/formats/yaml_spec.rb +3 -3
  73. data/spec/imw/metadata/field_spec.rb +26 -0
  74. data/spec/imw/metadata/schema_spec.rb +27 -0
  75. data/spec/imw/metadata_spec.rb +39 -0
  76. data/spec/imw/parsers/line_parser_spec.rb +1 -1
  77. data/spec/imw/resource_spec.rb +0 -100
  78. data/spec/imw/schemes/hdfs_spec.rb +19 -13
  79. data/spec/imw/schemes/local_spec.rb +59 -3
  80. data/spec/imw/schemes/s3_spec.rb +4 -0
  81. data/spec/imw/utils/dynamically_extendable_spec.rb +69 -0
  82. data/spec/imw/utils/has_uri_spec.rb +55 -0
  83. data/spec/spec_helper.rb +1 -2
  84. data/spec/support/random.rb +4 -4
  85. metadata +58 -17
  86. data/CHANGELOG +0 -0
  87. data/TODO +0 -18
  88. data/spec/data/sample.json +0 -782
  89. data/spec/data/sample.txt +0 -131
  90. data/spec/data/sample.xml +0 -653
  91. data/spec/data/sample.yaml +0 -651
  92. data/spec/spec.opts +0 -4
  93. data/spec/support/extensions.rb +0 -18
@@ -14,6 +14,10 @@ describe IMW::Schemes::S3 do
14
14
  it "can generate an S3N url" do
15
15
  @resource.s3n_url.should == 's3n://mybucket/foobar/foo.txt'
16
16
  end
17
+
18
+ it "can join path segments" do
19
+ @resource.join('a', 'b/c').to_s.should == File.join(@resource.to_s, 'a/b/c')
20
+ end
17
21
  end
18
22
 
19
23
  end
@@ -0,0 +1,69 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ describe "extending resources with specific modules" do
4
+ before do
5
+ @class = Class.new
6
+ @class.send(:include, IMW::Utils::DynamicallyExtendable)
7
+ @instance = @class.new
8
+ end
9
+
10
+ it "should raise an error when registering a malformed handler" do
11
+ lambda { @class.register_handler("Foo", 3) }.should raise_error(IMW::ArgumentError)
12
+ end
13
+
14
+ it "should store in instances modules they've been extended by" do
15
+ @foo = Module.new
16
+ @instance.extend(@foo)
17
+ @instance.modules.should include(@foo)
18
+ end
19
+
20
+ describe "evaluating handlers" do
21
+ before do
22
+ @proccer = Module.new
23
+ @class.send(:attr_accessor, :prop)
24
+ @class.register_handler(@proccer, Proc.new { |instance| instance.prop })
25
+
26
+ @regexper = Module.new
27
+ @class.send(:define_method, :to_s) { 'whoa' }
28
+ @class.register_handler(@regexper, /whoa/)
29
+ end
30
+
31
+ it "should extend an instance with a matching proc handler" do
32
+ @instance.prop = true
33
+ @instance.extend_appropriately!
34
+ @instance.modules.should include(@proccer)
35
+ end
36
+
37
+ it "should not extend an instance with a non-matching proc handler" do
38
+ @instance.prop = false
39
+ @instance.extend_appropriately!
40
+ @instance.modules.should_not include(@proccer)
41
+ end
42
+
43
+ it "should extend an instance with a matching regexp handler" do
44
+ @instance.extend_appropriately!
45
+ @instance.modules.should include(@regexper)
46
+ end
47
+
48
+ it "should not extend an instance with a non-matching regexp handler" do
49
+ @class.send(:define_method, :to_s) { 'fowl' }
50
+ @instance.extend_appropriately!
51
+ @instance.modules.should_not include(@regexper)
52
+ end
53
+
54
+ it "should not extend an instance with a module it was asked to skip" do
55
+ @instance.extend_appropriately!(:skip_modules => [@regexper])
56
+ @instance.modules.should_not include(@regexper)
57
+ end
58
+
59
+ it "should not extend with any modules if asked" do
60
+ @instance.extend_appropriately!(:no_modules => true)
61
+ @instance.modules.should_not include(@regexper)
62
+ end
63
+
64
+ it "should use a module if asked to do so even if it's handler didn't match" do
65
+ @instance.extend_appropriately!(:use_modules => [@proccer])
66
+ @instance.modules.should include(@proccer)
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,55 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ class Klass
4
+ include IMW::Utils::HasURI
5
+ end
6
+
7
+ def new_obj uri
8
+ obj = Klass.new
9
+ obj.uri = uri
10
+ obj
11
+ end
12
+
13
+ describe IMW::Utils::HasURI do
14
+
15
+ it "local file path" do
16
+ obj = new_obj("/home/foo.txt")
17
+ obj.stub!(:path).and_return("/home/foo.txt")
18
+
19
+ obj.scheme.should be_nil
20
+ obj.dirname.should == '/home'
21
+ obj.basename.should == 'foo.txt'
22
+ obj.extname.should == '.txt'
23
+ obj.extension.should == 'txt'
24
+ obj.name.should == 'foo'
25
+ end
26
+
27
+ it "local file path with spaces in the name" do
28
+ obj = new_obj("/home/foo bar.txt")
29
+ obj.stub!(:path).and_return("/home/foo bar.txt")
30
+ obj.name.should == 'foo bar'
31
+ end
32
+
33
+ it "local file path with an explicit file:// scheme" do
34
+ obj = new_obj("file:///home/foo.txt")
35
+ obj.scheme.should == 'file'
36
+ end
37
+
38
+ it "web URL with query and fragment" do
39
+ obj = new_obj("http://mysite.com/some/page?param=value#frag")
40
+ obj.stub!(:path).and_return("/some/page")
41
+ obj.scheme.should == 'http'
42
+ obj.dirname.should == '/some'
43
+ obj.basename.should == 'page'
44
+ obj.extname.should == ''
45
+ obj.extension.should == ''
46
+ obj.name.should == 'page'
47
+ end
48
+
49
+ it "should be able to strip URIs" do
50
+ new_obj('/path/to/something').stripped_uri.to_s.should == '/path/to/something'
51
+ new_obj('http://user:pass@example.com:8080/path/to/some/script.php?param=value#frag').stripped_uri.to_s.should == 'http://user:pass@example.com:8080/path/to/some/script.php'
52
+ end
53
+
54
+
55
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,9 +3,8 @@ IMW_SPEC_DIR = File.join(IMW_ROOT_DIR, 'spec') unless
3
3
  IMW_LIB_DIR = File.join(IMW_ROOT_DIR, 'lib') unless defined? IMW_LIB_DIR
4
4
  $: << IMW_LIB_DIR
5
5
 
6
- require 'rubygems'
7
- require 'spec'
8
6
  require 'imw'
7
+ require 'spec'
9
8
 
10
9
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |path| require path }
11
10
 
@@ -24,11 +24,11 @@ module IMWTest
24
24
  # length of the filename returned.
25
25
  def self.basename options = {}
26
26
  length = (options[:length] or FILENAME_MAX_LENGTH)
27
- filename = (1..length).map { |i| FILENAME_CHARS.random }.join
27
+ filename = (1..length).map { |i| FILENAME_CHARS.rand }.join
28
28
 
29
29
  # filenames beginning with hyphens suck
30
30
  while (filename[0,1] == '-') do
31
- filename[0] = FILENAME_CHARS.random
31
+ filename[0] = FILENAME_CHARS.rand
32
32
  end
33
33
  filename
34
34
  end
@@ -38,7 +38,7 @@ module IMWTest
38
38
  def self.text options = {}
39
39
  length = (options[:length] or TEXT_MAX_LENGTH)
40
40
  char_pool = options[:newlines] ? TEXT_CHARS : STRING_CHARS
41
- (1..length).map { |i| char_pool.random }.join
41
+ (1..length).map { |i| char_pool.rand }.join
42
42
  end
43
43
 
44
44
  # Create a random file by matching the extension of the given
@@ -190,7 +190,7 @@ module IMWTest
190
190
  FileUtils.mkdir_p(directory)
191
191
 
192
192
  (rand(options[:num_files]) + 2).times do
193
- ext = options[:extensions].random
193
+ ext = options[:extensions].rand
194
194
  name = self.basename
195
195
  if ext == 'dir' then
196
196
  if depth <= options[:max_depth] then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imw
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 7
10
- version: 0.2.7
9
+ - 8
10
+ version: 0.2.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dhruv Bansal
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-07-09 00:00:00 -05:00
19
+ date: 2010-10-26 00:00:00 -05:00
20
20
  default_executable: imw
21
21
  dependencies: []
22
22
 
@@ -29,14 +29,13 @@ extensions: []
29
29
  extra_rdoc_files:
30
30
  - LICENSE
31
31
  - README.rdoc
32
- - TODO
33
32
  files:
34
33
  - .gitignore
35
- - CHANGELOG
34
+ - Gemfile
35
+ - Gemfile.lock
36
36
  - LICENSE
37
37
  - README.rdoc
38
38
  - Rakefile
39
- - TODO
40
39
  - VERSION
41
40
  - bin/imw
42
41
  - etc/imwrc.rb
@@ -60,9 +59,17 @@ files:
60
59
  - lib/imw/formats/delimited.rb
61
60
  - lib/imw/formats/excel.rb
62
61
  - lib/imw/formats/json.rb
62
+ - lib/imw/formats/pdf.rb
63
63
  - lib/imw/formats/sgml.rb
64
64
  - lib/imw/formats/yaml.rb
65
+ - lib/imw/metadata.rb
66
+ - lib/imw/metadata/contains_metadata.rb
67
+ - lib/imw/metadata/dsl.rb
68
+ - lib/imw/metadata/field.rb
69
+ - lib/imw/metadata/schema.rb
70
+ - lib/imw/metadata/schematized.rb
65
71
  - lib/imw/parsers.rb
72
+ - lib/imw/parsers/flat.rb
66
73
  - lib/imw/parsers/html_parser.rb
67
74
  - lib/imw/parsers/html_parser/matchers.rb
68
75
  - lib/imw/parsers/line_parser.rb
@@ -76,12 +83,15 @@ files:
76
83
  - lib/imw/schemes/local.rb
77
84
  - lib/imw/schemes/remote.rb
78
85
  - lib/imw/schemes/s3.rb
86
+ - lib/imw/schemes/sql.rb
79
87
  - lib/imw/tools.rb
80
88
  - lib/imw/tools/archiver.rb
89
+ - lib/imw/tools/downloader.rb
81
90
  - lib/imw/tools/extension_analyzer.rb
82
91
  - lib/imw/tools/summarizer.rb
83
92
  - lib/imw/tools/transferer.rb
84
93
  - lib/imw/utils.rb
94
+ - lib/imw/utils/dynamically_extendable.rb
85
95
  - lib/imw/utils/error.rb
86
96
  - lib/imw/utils/extensions.rb
87
97
  - lib/imw/utils/extensions/array.rb
@@ -90,6 +100,7 @@ files:
90
100
  - lib/imw/utils/extensions/string.rb
91
101
  - lib/imw/utils/extensions/struct.rb
92
102
  - lib/imw/utils/extensions/symbol.rb
103
+ - lib/imw/utils/has_uri.rb
93
104
  - lib/imw/utils/log.rb
94
105
  - lib/imw/utils/misc.rb
95
106
  - lib/imw/utils/paths.rb
@@ -97,12 +108,33 @@ files:
97
108
  - lib/imw/utils/uuid.rb
98
109
  - lib/imw/utils/validate.rb
99
110
  - lib/imw/utils/version.rb
100
- - spec/data/sample.csv
101
- - spec/data/sample.json
102
- - spec/data/sample.tsv
103
- - spec/data/sample.txt
104
- - spec/data/sample.xml
105
- - spec/data/sample.yaml
111
+ - spec/data/formats/delimited/sample.csv
112
+ - spec/data/formats/delimited/sample.tsv
113
+ - spec/data/formats/delimited/with_schema/ace-hardware-locations.tsv
114
+ - spec/data/formats/delimited/with_schema/all-countries-ip-address-to-geolocation-data.tsv
115
+ - spec/data/formats/delimited/with_schema/complete-list-of-starbucks-locations.tsv
116
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv
117
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv
118
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-counts.tsv
119
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-latlong.tsv
120
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv
121
+ - spec/data/formats/delimited/with_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv
122
+ - spec/data/formats/delimited/without_schema/ace-hardware-locations.tsv
123
+ - spec/data/formats/delimited/without_schema/all-countries-ip-address-to-geolocation-data.tsv
124
+ - spec/data/formats/delimited/without_schema/complete-list-of-starbucks-locations.tsv
125
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv
126
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv
127
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-counts.tsv
128
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-latlong.tsv
129
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv
130
+ - spec/data/formats/delimited/without_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv
131
+ - spec/data/formats/excel/sample.xls
132
+ - spec/data/formats/json/sample.json
133
+ - spec/data/formats/none/sample
134
+ - spec/data/formats/sgml/sample.xml
135
+ - spec/data/formats/text/sample.txt
136
+ - spec/data/formats/yaml/sample.yaml
137
+ - spec/data/schema-tabular.yaml
106
138
  - spec/imw/archives/rar_spec.rb
107
139
  - spec/imw/archives/tar_spec.rb
108
140
  - spec/imw/archives/tarbz2_spec.rb
@@ -116,9 +148,13 @@ files:
116
148
  - spec/imw/dataset/paths_spec.rb
117
149
  - spec/imw/dataset/workflow_spec.rb
118
150
  - spec/imw/formats/delimited_spec.rb
151
+ - spec/imw/formats/excel_spec.rb
119
152
  - spec/imw/formats/json_spec.rb
120
153
  - spec/imw/formats/sgml_spec.rb
121
154
  - spec/imw/formats/yaml_spec.rb
155
+ - spec/imw/metadata/field_spec.rb
156
+ - spec/imw/metadata/schema_spec.rb
157
+ - spec/imw/metadata_spec.rb
122
158
  - spec/imw/parsers/line_parser_spec.rb
123
159
  - spec/imw/parsers/regexp_parser_spec.rb
124
160
  - spec/imw/resource_spec.rb
@@ -127,21 +163,21 @@ files:
127
163
  - spec/imw/schemes/local_spec.rb
128
164
  - spec/imw/schemes/remote_spec.rb
129
165
  - spec/imw/schemes/s3_spec.rb
166
+ - spec/imw/schemes/sql_spec.rb
130
167
  - spec/imw/tools/archiver_spec.rb
131
168
  - spec/imw/tools/summarizer_spec.rb
132
169
  - spec/imw/tools/transferer_spec.rb
170
+ - spec/imw/utils/dynamically_extendable_spec.rb
171
+ - spec/imw/utils/has_uri_spec.rb
133
172
  - spec/imw/utils/paths_spec.rb
134
173
  - spec/imw/utils/shared_paths_spec.rb
135
174
  - spec/rcov.opts
136
- - spec/spec.opts
137
175
  - spec/spec_helper.rb
138
176
  - spec/support/custom_matchers.rb
139
- - spec/support/extensions.rb
140
177
  - spec/support/file_contents_matcher.rb
141
178
  - spec/support/paths_matcher.rb
142
179
  - spec/support/random.rb
143
180
  - spec/support/without_regard_to_order_matcher.rb
144
- - spec/imw/schemes/sql_spec.rb
145
181
  has_rdoc: true
146
182
  homepage: http://github.com/infochimps/imw
147
183
  licenses: []
@@ -194,22 +230,27 @@ test_files:
194
230
  - spec/imw/parsers/line_parser_spec.rb
195
231
  - spec/imw/parsers/regexp_parser_spec.rb
196
232
  - spec/imw/resource_spec.rb
233
+ - spec/imw/metadata_spec.rb
234
+ - spec/imw/formats/excel_spec.rb
197
235
  - spec/imw/formats/json_spec.rb
198
236
  - spec/imw/formats/yaml_spec.rb
199
237
  - spec/imw/formats/delimited_spec.rb
200
238
  - spec/imw/formats/sgml_spec.rb
201
239
  - spec/imw/archives_spec.rb
240
+ - spec/imw/metadata/schema_spec.rb
241
+ - spec/imw/metadata/field_spec.rb
202
242
  - spec/imw/schemes/http_spec.rb
203
243
  - spec/imw/schemes/local_spec.rb
204
244
  - spec/imw/schemes/sql_spec.rb
205
245
  - spec/imw/schemes/remote_spec.rb
206
246
  - spec/imw/schemes/hdfs_spec.rb
207
247
  - spec/imw/schemes/s3_spec.rb
248
+ - spec/imw/utils/has_uri_spec.rb
208
249
  - spec/imw/utils/paths_spec.rb
250
+ - spec/imw/utils/dynamically_extendable_spec.rb
209
251
  - spec/imw/utils/shared_paths_spec.rb
210
252
  - spec/spec_helper.rb
211
253
  - spec/support/without_regard_to_order_matcher.rb
212
- - spec/support/extensions.rb
213
254
  - spec/support/custom_matchers.rb
214
255
  - spec/support/random.rb
215
256
  - spec/support/paths_matcher.rb
data/CHANGELOG DELETED
File without changes
data/TODO DELETED
@@ -1,18 +0,0 @@
1
- lookup basic yarddoc style (@params, etc) -- do a high-level description
2
-
3
- learn how to run specs
4
- write a spec that fails on the old code and passes on the new
5
-
6
- convert all references to URI to be Addressable::URI
7
- don't use URI.parse, use Addressable::URI.heuristic_parse (eg in files/*)
8
- make basicfile methods delegate to its uri
9
-
10
- tmpdir should use the actual system tmpdir libs (eg in archiver)
11
- move config over to configliere
12
-
13
-
14
-
15
-
16
- ------ WANT PONY -----
17
-
18
- might be nice to learn the delegate pattern
@@ -1,782 +0,0 @@
1
- [
2
- {
3
- "name": "Gray-bellied Night Monkey",
4
- "id": 1,
5
- "genus": "Aotus",
6
- "species": "lemurinus"
7
- },
8
- {
9
- "name": "Panamanian Night Monkey",
10
- "id": 2,
11
- "genus": "Aotus",
12
- "species": "zonalis"
13
- },
14
- {
15
- "name": "Hernández-Camacho's Night Monkey",
16
- "id": 3,
17
- "genus": "Aotus",
18
- "species": "jorgehernandezi"
19
- },
20
- {
21
- "name": "Gray-handed Night Monkey",
22
- "id": 4,
23
- "genus": "Aotus",
24
- "species": "griseimembra"
25
- },
26
- {
27
- "name": "Hershkovitz's Night Monkey",
28
- "id": 5,
29
- "genus": "Aotus",
30
- "species": "hershkovitzi"
31
- },
32
- {
33
- "name": "Brumback's Night Monkey",
34
- "id": 6,
35
- "genus": "Aotus",
36
- "species": "brumbacki"
37
- },
38
- {
39
- "name": "Three-striped Night Monkey",
40
- "id": 7,
41
- "genus": "Aotus",
42
- "species": "trivirgatus"
43
- },
44
- {
45
- "name": "Spix's Night Monkey",
46
- "id": "008",
47
- "genus": "Aotus",
48
- "species": "vociferans"
49
- },
50
- {
51
- "name": "Malaysian Lar Gibbon",
52
- "id": "009",
53
- "genus": "Hylobates",
54
- "species": "lar lar"
55
- },
56
- {
57
- "name": "Carpenter's Lar Gibbon",
58
- "id": 8,
59
- "genus": "Hylobates",
60
- "species": "lar carpenteri"
61
- },
62
- {
63
- "name": "Central Lar Gibbon",
64
- "id": 9,
65
- "genus": "Hylobates",
66
- "species": "lar entelloides"
67
- },
68
- {
69
- "name": "Sumatran Lar Gibbon",
70
- "id": 10,
71
- "genus": "Hylobates",
72
- "species": "lar vestitus"
73
- },
74
- {
75
- "name": "Yunnan Lar Gibbon",
76
- "id": 11,
77
- "genus": "Hylobates",
78
- "species": "lar yunnanensis"
79
- },
80
- {
81
- "name": "Mountain Agile Gibbon",
82
- "id": 12,
83
- "genus": "Hylobates",
84
- "species": "agilis agilis"
85
- },
86
- {
87
- "name": "Bornean White-bearded Gibbon",
88
- "id": 13,
89
- "genus": "Hylobates",
90
- "species": "agilis albibarbis"
91
- },
92
- {
93
- "name": "Lowland Agile Gibbon",
94
- "id": 14,
95
- "genus": "Hylobates",
96
- "species": "agilis unko"
97
- },
98
- {
99
- "name": "Müller's Gray Gibbon",
100
- "id": 15,
101
- "genus": "Hylobates",
102
- "species": "muelleri muelleri"
103
- },
104
- {
105
- "name": "Abbott's Gray Gibbon",
106
- "id": "018",
107
- "genus": "Hylobates",
108
- "species": "muelleri abbotti"
109
- },
110
- {
111
- "name": "Northern Gray Gibbon",
112
- "id": "019",
113
- "genus": "Hylobates",
114
- "species": "muelleri funereus"
115
- },
116
- {
117
- "name": "Black Tamarin",
118
- "id": 16,
119
- "genus": "Saguinas",
120
- "species": "niger"
121
- },
122
- {
123
- "name": "Black-mantled Tamarin",
124
- "id": 17,
125
- "genus": "Saguinas",
126
- "species": "nigricollis"
127
- },
128
- {
129
- "name": "Brown-mantled Tamarin",
130
- "id": 18,
131
- "genus": "Saguinas",
132
- "species": "fuscicollis"
133
- },
134
- {
135
- "name": "Cottontop Tamarin or Pinché Tamarin",
136
- "id": 19,
137
- "genus": "Saguinas",
138
- "species": "oedipus"
139
- },
140
- {
141
- "name": "Emperor Tamarin",
142
- "id": 20,
143
- "genus": "Saguinas",
144
- "species": "imperator"
145
- },
146
- {
147
- "name": "Geoffroy's Tamarin",
148
- "id": 21,
149
- "genus": "Saguinas",
150
- "species": "geoffroyi"
151
- },
152
- {
153
- "name": "Golden-mantled Tamarin",
154
- "id": 22,
155
- "genus": "Saguinas",
156
- "species": "tripartitus"
157
- },
158
- {
159
- "name": "Graells's Tamarin",
160
- "id": 23,
161
- "genus": "Saguinas",
162
- "species": "graellsi"
163
- },
164
- {
165
- "name": "Martins's Tamarin",
166
- "id": "028",
167
- "genus": "Saguinas",
168
- "species": "martinsi"
169
- },
170
- {
171
- "name": "Mottle-faced Tamarin",
172
- "id": "029",
173
- "genus": "Saguinas",
174
- "species": "inustus"
175
- },
176
- {
177
- "name": "Moustached Tamarin",
178
- "id": 24,
179
- "genus": "Saguinas",
180
- "species": "mystax"
181
- },
182
- {
183
- "name": "Pied Tamarin",
184
- "id": 25,
185
- "genus": "Saguinas",
186
- "species": "bicolor"
187
- },
188
- {
189
- "name": "Red-capped Tamarin",
190
- "id": 26,
191
- "genus": "Saguinas",
192
- "species": "pileatus"
193
- },
194
- {
195
- "name": "Red-handed Tamarin",
196
- "id": 27,
197
- "genus": "Saguinas",
198
- "species": "midas"
199
- },
200
- {
201
- "name": "White-footed Tamarin",
202
- "id": 28,
203
- "genus": "Saguinas",
204
- "species": "leucopus"
205
- },
206
- {
207
- "name": "White-lipped Tamarin",
208
- "id": 29,
209
- "genus": "Saguinas",
210
- "species": "labiatus"
211
- },
212
- {
213
- "name": "White-mantled Tamarin",
214
- "id": 30,
215
- "genus": "Saguinas",
216
- "species": "melanoleucus"
217
- },
218
- {
219
- "name": "Allen's Swamp Monkey",
220
- "id": 31,
221
- "genus": "Allenopithecus",
222
- "species": "nigroviridis"
223
- },
224
- {
225
- "name": "Angolan Talapoin",
226
- "id": "038",
227
- "genus": "Miopithecus",
228
- "species": "talapoin"
229
- },
230
- {
231
- "name": "Gabon Talapoin",
232
- "id": "039",
233
- "genus": "Miopithecus",
234
- "species": "ogouensis"
235
- },
236
- {
237
- "name": "Patas Monkey",
238
- "id": 32,
239
- "genus": "Erythrocebus",
240
- "species": "patas"
241
- },
242
- {
243
- "name": "Green Monkey",
244
- "id": 33,
245
- "genus": "Chlorocebus",
246
- "species": "sabaeus"
247
- },
248
- {
249
- "name": "Grivet",
250
- "id": 34,
251
- "genus": "Chlorocebus",
252
- "species": "aethiops"
253
- },
254
- {
255
- "name": "Bale Mountains Vervet",
256
- "id": 35,
257
- "genus": "Chlorocebus",
258
- "species": "djamdjamensis"
259
- },
260
- {
261
- "name": "Tantalus Monkey",
262
- "id": 36,
263
- "genus": "Chlorocebus",
264
- "species": "tantalus"
265
- },
266
- {
267
- "name": "Vervet Monkey",
268
- "id": 37,
269
- "genus": "Chlorocebus",
270
- "species": "pygerythrus"
271
- },
272
- {
273
- "name": "Malbrouck",
274
- "id": 38,
275
- "genus": "Chlorocebus",
276
- "species": "cynosuros"
277
- },
278
- {
279
- "name": "Dryas Monkey or Salongo Monkey",
280
- "id": 39,
281
- "genus": "Cercopithecus",
282
- "species": "dryas"
283
- },
284
- {
285
- "name": "Diana Monkey",
286
- "id": "048",
287
- "genus": "Cercopithecus",
288
- "species": "diana"
289
- },
290
- {
291
- "name": "Roloway Monkey",
292
- "id": "049",
293
- "genus": "Cercopithecus",
294
- "species": "roloway"
295
- },
296
- {
297
- "name": "Greater Spot-nosed Monkey",
298
- "id": 40,
299
- "genus": "Cercopithecus",
300
- "species": "nictitans"
301
- },
302
- {
303
- "name": "Blue Monkey",
304
- "id": 41,
305
- "genus": "Cercopithecus",
306
- "species": "mitis"
307
- },
308
- {
309
- "name": "Silver Monkey",
310
- "id": 42,
311
- "genus": "Cercopithecus",
312
- "species": "doggetti"
313
- },
314
- {
315
- "name": "Golden Monkey",
316
- "id": 43,
317
- "genus": "Cercopithecus",
318
- "species": "kandti"
319
- },
320
- {
321
- "name": "Sykes's Monkey",
322
- "id": 44,
323
- "genus": "Cercopithecus",
324
- "species": "albogularis"
325
- },
326
- {
327
- "name": "Mona Monkey",
328
- "id": 45,
329
- "genus": "Cercopithecus",
330
- "species": "mona"
331
- },
332
- {
333
- "name": "Campbell's Mona Monkey",
334
- "id": 46,
335
- "genus": "Cercopithecus",
336
- "species": "campbelli"
337
- },
338
- {
339
- "name": "Lowe's Mona Monkey",
340
- "id": 47,
341
- "genus": "Cercopithecus",
342
- "species": "lowei"
343
- },
344
- {
345
- "name": "Crested Mona Monkey",
346
- "id": "058",
347
- "genus": "Cercopithecus",
348
- "species": "pogonias"
349
- },
350
- {
351
- "name": "Wolf's Mona Monkey",
352
- "id": "059",
353
- "genus": "Cercopithecus",
354
- "species": "wolfi"
355
- },
356
- {
357
- "name": "Dent's Mona Monkey",
358
- "id": 48,
359
- "genus": "Cercopithecus",
360
- "species": "denti"
361
- },
362
- {
363
- "name": "Lesser Spot-nosed Monkey",
364
- "id": 49,
365
- "genus": "Cercopithecus",
366
- "species": "petaurista"
367
- },
368
- {
369
- "name": "White-throated Guenon",
370
- "id": 50,
371
- "genus": "Cercopithecus",
372
- "species": "erythrogaster"
373
- },
374
- {
375
- "name": "Sclater's Guenon",
376
- "id": 51,
377
- "genus": "Cercopithecus",
378
- "species": "sclateri"
379
- },
380
- {
381
- "name": "Red-eared Guenon",
382
- "id": 52,
383
- "genus": "Cercopithecus",
384
- "species": "erythrotis"
385
- },
386
- {
387
- "name": "Moustached Guenon",
388
- "id": 53,
389
- "genus": "Cercopithecus",
390
- "species": "cephus"
391
- },
392
- {
393
- "name": "Red-tailed Monkey",
394
- "id": 54,
395
- "genus": "Cercopithecus",
396
- "species": "ascanius"
397
- },
398
- {
399
- "name": "L'Hoest's Monkey",
400
- "id": 55,
401
- "genus": "Cercopithecus",
402
- "species": "lhoesti"
403
- },
404
- {
405
- "name": "Preuss's Monkey",
406
- "id": "068",
407
- "genus": "Cercopithecus",
408
- "species": "preussi"
409
- },
410
- {
411
- "name": "Sun-tailed Monkey",
412
- "id": "069",
413
- "genus": "Cercopithecus",
414
- "species": "solatus"
415
- },
416
- {
417
- "name": "Hamlyn's Monkey",
418
- "id": 56,
419
- "genus": "Cercopithecus",
420
- "species": "hamlyni"
421
- },
422
- {
423
- "name": "De Brazza's Monkey",
424
- "id": 57,
425
- "genus": "Cercopithecus",
426
- "species": "neglectus"
427
- },
428
- {
429
- "name": "Barbary Macaque",
430
- "id": 58,
431
- "genus": "Macaca",
432
- "species": "sylvanus"
433
- },
434
- {
435
- "name": "Lion-tailed Macaque",
436
- "id": 59,
437
- "genus": "Macaca",
438
- "species": "silenus"
439
- },
440
- {
441
- "name": "Southern Pig-tailed Macaque or Beruk",
442
- "id": 60,
443
- "genus": "Macaca",
444
- "species": "nemestrina"
445
- },
446
- {
447
- "name": "Northern Pig-tailed Macaque",
448
- "id": 61,
449
- "genus": "Macaca",
450
- "species": "leonina"
451
- },
452
- {
453
- "name": "Pagai Island Macaque or Bokkoi",
454
- "id": 62,
455
- "genus": "Macaca",
456
- "species": "pagensis"
457
- },
458
- {
459
- "name": "Siberut Macaque",
460
- "id": 63,
461
- "genus": "Macaca",
462
- "species": "siberu"
463
- },
464
- {
465
- "name": "Moor Macaque",
466
- "id": "078",
467
- "genus": "Macaca",
468
- "species": "maura"
469
- },
470
- {
471
- "name": "Booted Macaque",
472
- "id": "079",
473
- "genus": "Macaca",
474
- "species": "ochreata"
475
- },
476
- {
477
- "name": "Tonkean Macaque",
478
- "id": "080",
479
- "genus": "Macaca",
480
- "species": "tonkeana"
481
- },
482
- {
483
- "name": "Heck's Macaque",
484
- "id": "081",
485
- "genus": "Macaca",
486
- "species": "hecki"
487
- },
488
- {
489
- "name": "Gorontalo Macaque",
490
- "id": "082",
491
- "genus": "Macaca",
492
- "species": "nigrescens"
493
- },
494
- {
495
- "name": "Celebes Crested Macaque or Black Ape",
496
- "id": "083",
497
- "genus": "Macaca",
498
- "species": "nigra"
499
- },
500
- {
501
- "name": "Crab-eating Macaque or Long-tailed Macaque or Kera",
502
- "id": "084",
503
- "genus": "Macaca",
504
- "species": "fascicularis"
505
- },
506
- {
507
- "name": "Stump-tailed Macaque or Bear Macaque",
508
- "id": "085",
509
- "genus": "Macaca",
510
- "species": "arctoides"
511
- },
512
- {
513
- "name": "Rhesus Macaque",
514
- "id": "086",
515
- "genus": "Macaca",
516
- "species": "mulatta"
517
- },
518
- {
519
- "name": "Formosan Rock Macaque",
520
- "id": "087",
521
- "genus": "Macaca",
522
- "species": "cyclopis"
523
- },
524
- {
525
- "name": "Japanese Macaque",
526
- "id": "088",
527
- "genus": "Macaca",
528
- "species": "fuscata"
529
- },
530
- {
531
- "name": "Toque Macaque",
532
- "id": "089",
533
- "genus": "Macaca",
534
- "species": "sinica"
535
- },
536
- {
537
- "name": "Bonnet Macaque",
538
- "id": "090",
539
- "genus": "Macaca",
540
- "species": "radiata"
541
- },
542
- {
543
- "name": "Assam Macaque",
544
- "id": "091",
545
- "genus": "Macaca",
546
- "species": "assamensis"
547
- },
548
- {
549
- "name": "Tibetan Macaque or Milne-Edwards' Macaque",
550
- "id": "092",
551
- "genus": "Macaca",
552
- "species": "thibetana"
553
- },
554
- {
555
- "name": "Arunachal Macaque or Munzala",
556
- "id": "093",
557
- "genus": "Macaca",
558
- "species": "munzala"
559
- },
560
- {
561
- "name": "Grey-cheeked Mangabey",
562
- "id": "094",
563
- "genus": "Lophocebus",
564
- "species": "albigena"
565
- },
566
- {
567
- "name": "Black Crested Mangabey",
568
- "id": "095",
569
- "genus": "Lophocebus",
570
- "species": "aterrimus"
571
- },
572
- {
573
- "name": "Opdenbosch's Mangabey",
574
- "id": "096",
575
- "genus": "Lophocebus",
576
- "species": "opdenboschi"
577
- },
578
- {
579
- "name": "Uganda Mangabey",
580
- "id": "097",
581
- "genus": "Lophocebus",
582
- "species": "ugandae"
583
- },
584
- {
585
- "name": "Johnston's Mangabey",
586
- "id": "098",
587
- "genus": "Lophocebus",
588
- "species": "johnstoni"
589
- },
590
- {
591
- "name": "Osman Hill's Mangabey",
592
- "id": "099",
593
- "genus": "Lophocebus",
594
- "species": "osmani"
595
- },
596
- {
597
- "name": "Kipunji",
598
- "id": 100,
599
- "genus": "Rungwecebus",
600
- "species": "kipunji"
601
- },
602
- {
603
- "name": "Hamadryas Baboon",
604
- "id": 101,
605
- "genus": "Papio",
606
- "species": "hamadryas"
607
- },
608
- {
609
- "name": "Guinea Baboon",
610
- "id": 102,
611
- "genus": "Papio",
612
- "species": "papio"
613
- },
614
- {
615
- "name": "Olive Baboon",
616
- "id": 103,
617
- "genus": "Papio",
618
- "species": "anubis"
619
- },
620
- {
621
- "name": "Yellow Baboon",
622
- "id": 104,
623
- "genus": "Papio",
624
- "species": "cynocephalus"
625
- },
626
- {
627
- "name": "Chacma Baboon",
628
- "id": 105,
629
- "genus": "Papio",
630
- "species": "ursinus"
631
- },
632
- {
633
- "name": "Gelada",
634
- "id": 106,
635
- "genus": "Theropithecus",
636
- "species": "gelada"
637
- },
638
- {
639
- "name": "Sooty Mangabey",
640
- "id": 107,
641
- "genus": "Cercocebus",
642
- "species": "atys"
643
- },
644
- {
645
- "name": "Collared Mangabey",
646
- "id": 108,
647
- "genus": "Cercocebus",
648
- "species": "torquatus"
649
- },
650
- {
651
- "name": "Agile Mangabey",
652
- "id": 109,
653
- "genus": "Cercocebus",
654
- "species": "agilis"
655
- },
656
- {
657
- "name": "Golden-bellied Mangabey",
658
- "id": 110,
659
- "genus": "Cercocebus",
660
- "species": "chrysogaster"
661
- },
662
- {
663
- "name": "Tana River Mangabey",
664
- "id": 111,
665
- "genus": "Cercocebus",
666
- "species": "galeritus"
667
- },
668
- {
669
- "name": "Sanje Mangabey",
670
- "id": 112,
671
- "genus": "Cercocebus",
672
- "species": "sanjei"
673
- },
674
- {
675
- "name": "Mandrill",
676
- "id": 113,
677
- "genus": "Mandrillus",
678
- "species": "sphinx"
679
- },
680
- {
681
- "name": "Drill",
682
- "id": 114,
683
- "genus": "Mandrillus",
684
- "species": "leucophaeus"
685
- },
686
- {
687
- "name": "Black Colobus",
688
- "id": 115,
689
- "genus": "Colobus",
690
- "species": "satanas"
691
- },
692
- {
693
- "name": "Angola Colobus",
694
- "id": 116,
695
- "genus": "Colobus",
696
- "species": "angolensis"
697
- },
698
- {
699
- "name": "King Colobus",
700
- "id": 117,
701
- "genus": "Colobus",
702
- "species": "polykomos"
703
- },
704
- {
705
- "name": "Ursine Colobus",
706
- "id": 118,
707
- "genus": "Colobus",
708
- "species": "vellerosus"
709
- },
710
- {
711
- "name": "Mantled Guereza",
712
- "id": 119,
713
- "genus": "Colobus",
714
- "species": "guereza"
715
- },
716
- {
717
- "name": "Western Red Colobus",
718
- "id": 120,
719
- "genus": "Piliocolobus",
720
- "species": "badius"
721
- },
722
- {
723
- "name": "Pennant's Colobus",
724
- "id": 121,
725
- "genus": "Piliocolobus",
726
- "species": "pennantii"
727
- },
728
- {
729
- "name": "Preuss's Red Colobus",
730
- "id": 122,
731
- "genus": "Piliocolobus",
732
- "species": "preussi"
733
- },
734
- {
735
- "name": "Thollon's Red Colobus",
736
- "id": 123,
737
- "genus": "Piliocolobus",
738
- "species": "tholloni"
739
- },
740
- {
741
- "name": "Central African Red Colobus",
742
- "id": 124,
743
- "genus": "Piliocolobus",
744
- "species": "foai"
745
- },
746
- {
747
- "name": "Ugandan Red Colobus",
748
- "id": 125,
749
- "genus": "Piliocolobus",
750
- "species": "tephrosceles"
751
- },
752
- {
753
- "name": "Uzungwa Red Colobus",
754
- "id": 126,
755
- "genus": "Piliocolobus",
756
- "species": "gordonorum"
757
- },
758
- {
759
- "name": "Zanzibar Red Colobus",
760
- "id": 127,
761
- "genus": "Piliocolobus",
762
- "species": "kirkii"
763
- },
764
- {
765
- "name": "Tana River Red Colobus",
766
- "id": 128,
767
- "genus": "Piliocolobus",
768
- "species": "rufomitratus"
769
- },
770
- {
771
- "name": "Olive Colobus",
772
- "id": 129,
773
- "genus": "Procolobus",
774
- "species": "verus"
775
- },
776
- {
777
- "name": "Maroon Leaf Monkey",
778
- "id": 130,
779
- "genus": "Presbytis",
780
- "species": "rubicunda"
781
- }
782
- ]