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.
- data/Gemfile +23 -0
- data/Gemfile.lock +47 -0
- data/LICENSE +20 -674
- data/README.rdoc +3 -4
- data/VERSION +1 -1
- data/lib/imw.rb +64 -35
- data/lib/imw/dataset.rb +12 -2
- data/lib/imw/formats.rb +4 -2
- data/lib/imw/formats/delimited.rb +96 -36
- data/lib/imw/formats/excel.rb +69 -101
- data/lib/imw/formats/json.rb +3 -5
- data/lib/imw/formats/pdf.rb +71 -0
- data/lib/imw/formats/yaml.rb +3 -5
- data/lib/imw/metadata.rb +66 -0
- data/lib/imw/metadata/contains_metadata.rb +44 -0
- data/lib/imw/metadata/dsl.rb +111 -0
- data/lib/imw/metadata/field.rb +65 -0
- data/lib/imw/metadata/schema.rb +227 -0
- data/lib/imw/metadata/schematized.rb +27 -0
- data/lib/imw/parsers.rb +1 -0
- data/lib/imw/parsers/flat.rb +44 -0
- data/lib/imw/resource.rb +36 -224
- data/lib/imw/schemes.rb +3 -1
- data/lib/imw/schemes/hdfs.rb +12 -1
- data/lib/imw/schemes/http.rb +1 -2
- data/lib/imw/schemes/local.rb +139 -16
- data/lib/imw/schemes/remote.rb +14 -9
- data/lib/imw/schemes/s3.rb +12 -0
- data/lib/imw/schemes/sql.rb +117 -0
- data/lib/imw/tools.rb +5 -3
- data/lib/imw/tools/downloader.rb +63 -0
- data/lib/imw/tools/summarizer.rb +21 -10
- data/lib/imw/utils.rb +10 -0
- data/lib/imw/utils/dynamically_extendable.rb +137 -0
- data/lib/imw/utils/error.rb +3 -0
- data/lib/imw/utils/extensions.rb +0 -4
- data/lib/imw/utils/extensions/array.rb +6 -7
- data/lib/imw/utils/extensions/hash.rb +3 -5
- data/lib/imw/utils/extensions/string.rb +3 -3
- data/lib/imw/utils/has_uri.rb +114 -0
- data/spec/data/{sample.csv → formats/delimited/sample.csv} +1 -1
- data/spec/data/{sample.tsv → formats/delimited/sample.tsv} +0 -0
- data/spec/data/formats/delimited/with_schema/ace-hardware-locations.tsv +11 -0
- data/spec/data/formats/delimited/with_schema/all-countries-ip-address-to-geolocation-data.tsv +16 -0
- data/spec/data/formats/delimited/with_schema/complete-list-of-starbucks-locations.tsv +11 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +22 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +22 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-counts.tsv +12 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +13 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +22 -0
- data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +22 -0
- data/spec/data/formats/delimited/without_schema/ace-hardware-locations.tsv +10 -0
- data/spec/data/formats/delimited/without_schema/all-countries-ip-address-to-geolocation-data.tsv +15 -0
- data/spec/data/formats/delimited/without_schema/complete-list-of-starbucks-locations.tsv +10 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +21 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +21 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-counts.tsv +11 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +12 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +21 -0
- data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +21 -0
- data/spec/data/formats/excel/sample.xls +0 -0
- data/spec/data/formats/json/sample.json +1 -0
- data/spec/data/formats/none/sample +650 -0
- data/spec/data/formats/sgml/sample.xml +617 -0
- data/spec/data/formats/text/sample.txt +650 -0
- data/spec/data/formats/yaml/sample.yaml +410 -0
- data/spec/data/schema-tabular.yaml +11 -0
- data/spec/imw/formats/delimited_spec.rb +34 -2
- data/spec/imw/formats/excel_spec.rb +55 -0
- data/spec/imw/formats/json_spec.rb +3 -3
- data/spec/imw/formats/sgml_spec.rb +4 -4
- data/spec/imw/formats/yaml_spec.rb +3 -3
- data/spec/imw/metadata/field_spec.rb +26 -0
- data/spec/imw/metadata/schema_spec.rb +27 -0
- data/spec/imw/metadata_spec.rb +39 -0
- data/spec/imw/parsers/line_parser_spec.rb +1 -1
- data/spec/imw/resource_spec.rb +0 -100
- data/spec/imw/schemes/hdfs_spec.rb +19 -13
- data/spec/imw/schemes/local_spec.rb +59 -3
- data/spec/imw/schemes/s3_spec.rb +4 -0
- data/spec/imw/utils/dynamically_extendable_spec.rb +69 -0
- data/spec/imw/utils/has_uri_spec.rb +55 -0
- data/spec/spec_helper.rb +1 -2
- data/spec/support/random.rb +4 -4
- metadata +58 -17
- data/CHANGELOG +0 -0
- data/TODO +0 -18
- data/spec/data/sample.json +0 -782
- data/spec/data/sample.txt +0 -131
- data/spec/data/sample.xml +0 -653
- data/spec/data/sample.yaml +0 -651
- data/spec/spec.opts +0 -4
- data/spec/support/extensions.rb +0 -18
data/spec/imw/schemes/s3_spec.rb
CHANGED
|
@@ -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
|
|
data/spec/support/random.rb
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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].
|
|
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:
|
|
4
|
+
hash: 7
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 2
|
|
9
|
-
-
|
|
10
|
-
version: 0.2.
|
|
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-
|
|
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
|
-
-
|
|
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.
|
|
102
|
-
- spec/data/
|
|
103
|
-
- spec/data/
|
|
104
|
-
- spec/data/
|
|
105
|
-
- spec/data/
|
|
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
|
data/spec/data/sample.json
DELETED
|
@@ -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
|
-
]
|