imw 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
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
- ]