imw 0.2.18 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. data/Gemfile +7 -26
  2. data/Gemfile.lock +13 -38
  3. data/{LICENSE → LICENSE.txt} +1 -1
  4. data/README.textile +35 -0
  5. data/Rakefile +45 -22
  6. data/VERSION +1 -1
  7. data/examples/foo.rb +19 -0
  8. data/examples/html_selector.rb +22 -0
  9. data/examples/nes_game_list.csv +625 -0
  10. data/examples/nes_gamespot.csv +1371 -0
  11. data/examples/nes_nintendo.csv +624 -0
  12. data/examples/nes_unlicensed.csv +89 -0
  13. data/examples/nes_wikipedia.csv +710 -0
  14. data/examples/nibbler_test.rb +24 -0
  15. data/examples/script.rb +19 -0
  16. data/lib/imw.rb +28 -140
  17. data/lib/imw/error.rb +9 -0
  18. data/lib/imw/recordizer.rb +8 -0
  19. data/lib/imw/recordizer/html_selector_recordizer.rb +86 -0
  20. data/lib/imw/recordizer/string_slice_recordizer.rb +39 -0
  21. data/lib/imw/resource.rb +3 -119
  22. data/lib/imw/serializer.rb +7 -0
  23. data/lib/imw/serializer/json_serializer.rb +17 -0
  24. data/lib/imw/uri.rb +41 -0
  25. data/spec/resource_spec.rb +78 -0
  26. data/spec/uri_spec.rb +55 -0
  27. metadata +81 -232
  28. data/README.rdoc +0 -371
  29. data/bin/imw +0 -5
  30. data/bin/tsv_to_json.rb +0 -29
  31. data/etc/imwrc.rb +0 -26
  32. data/examples/dataset.rb +0 -12
  33. data/examples/metadata.yml +0 -10
  34. data/lib/imw/archives.rb +0 -120
  35. data/lib/imw/archives/rar.rb +0 -19
  36. data/lib/imw/archives/tar.rb +0 -19
  37. data/lib/imw/archives/tarbz2.rb +0 -73
  38. data/lib/imw/archives/targz.rb +0 -73
  39. data/lib/imw/archives/zip.rb +0 -51
  40. data/lib/imw/boot.rb +0 -87
  41. data/lib/imw/compressed_files.rb +0 -94
  42. data/lib/imw/compressed_files/bz2.rb +0 -16
  43. data/lib/imw/compressed_files/compressible.rb +0 -75
  44. data/lib/imw/compressed_files/gz.rb +0 -16
  45. data/lib/imw/dataset.rb +0 -125
  46. data/lib/imw/dataset/paths.rb +0 -29
  47. data/lib/imw/dataset/workflow.rb +0 -195
  48. data/lib/imw/formats.rb +0 -33
  49. data/lib/imw/formats/delimited.rb +0 -170
  50. data/lib/imw/formats/excel.rb +0 -100
  51. data/lib/imw/formats/json.rb +0 -41
  52. data/lib/imw/formats/pdf.rb +0 -71
  53. data/lib/imw/formats/sgml.rb +0 -69
  54. data/lib/imw/formats/yaml.rb +0 -41
  55. data/lib/imw/metadata.rb +0 -83
  56. data/lib/imw/metadata/contains_metadata.rb +0 -54
  57. data/lib/imw/metadata/dsl.rb +0 -111
  58. data/lib/imw/metadata/field.rb +0 -37
  59. data/lib/imw/metadata/has_metadata.rb +0 -98
  60. data/lib/imw/metadata/has_summary.rb +0 -57
  61. data/lib/imw/metadata/schema.rb +0 -17
  62. data/lib/imw/parsers.rb +0 -8
  63. data/lib/imw/parsers/flat.rb +0 -44
  64. data/lib/imw/parsers/html_parser.rb +0 -387
  65. data/lib/imw/parsers/html_parser/matchers.rb +0 -289
  66. data/lib/imw/parsers/line_parser.rb +0 -87
  67. data/lib/imw/parsers/regexp_parser.rb +0 -72
  68. data/lib/imw/repository.rb +0 -12
  69. data/lib/imw/runner.rb +0 -118
  70. data/lib/imw/schemes.rb +0 -23
  71. data/lib/imw/schemes/ftp.rb +0 -142
  72. data/lib/imw/schemes/hdfs.rb +0 -251
  73. data/lib/imw/schemes/http.rb +0 -165
  74. data/lib/imw/schemes/local.rb +0 -409
  75. data/lib/imw/schemes/remote.rb +0 -119
  76. data/lib/imw/schemes/s3.rb +0 -143
  77. data/lib/imw/schemes/sql.rb +0 -129
  78. data/lib/imw/tools.rb +0 -12
  79. data/lib/imw/tools/aggregator.rb +0 -148
  80. data/lib/imw/tools/archiver.rb +0 -220
  81. data/lib/imw/tools/downloader.rb +0 -63
  82. data/lib/imw/tools/extension_analyzer.rb +0 -114
  83. data/lib/imw/tools/summarizer.rb +0 -83
  84. data/lib/imw/tools/transferer.rb +0 -167
  85. data/lib/imw/utils.rb +0 -74
  86. data/lib/imw/utils/dynamically_extendable.rb +0 -137
  87. data/lib/imw/utils/error.rb +0 -59
  88. data/lib/imw/utils/extensions/hpricot.rb +0 -34
  89. data/lib/imw/utils/has_uri.rb +0 -131
  90. data/lib/imw/utils/log.rb +0 -92
  91. data/lib/imw/utils/misc.rb +0 -57
  92. data/lib/imw/utils/paths.rb +0 -146
  93. data/lib/imw/utils/uri.rb +0 -59
  94. data/lib/imw/utils/uuid.rb +0 -33
  95. data/lib/imw/utils/validate.rb +0 -38
  96. data/lib/imw/utils/version.rb +0 -11
  97. data/spec/data/formats/delimited/sample.csv +0 -131
  98. data/spec/data/formats/delimited/sample.tsv +0 -131
  99. data/spec/data/formats/delimited/with_schema/ace-hardware-locations.tsv +0 -11
  100. data/spec/data/formats/delimited/with_schema/all-countries-ip-address-to-geolocation-data.tsv +0 -16
  101. data/spec/data/formats/delimited/with_schema/complete-list-of-starbucks-locations.tsv +0 -11
  102. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +0 -22
  103. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +0 -22
  104. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-myspace-application-counts.tsv +0 -12
  105. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +0 -13
  106. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +0 -22
  107. data/spec/data/formats/delimited/with_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +0 -22
  108. data/spec/data/formats/delimited/without_schema/ace-hardware-locations.tsv +0 -10
  109. data/spec/data/formats/delimited/without_schema/all-countries-ip-address-to-geolocation-data.tsv +0 -15
  110. data/spec/data/formats/delimited/without_schema/complete-list-of-starbucks-locations.tsv +0 -10
  111. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-cumulative-word-count-from-from-dec.tsv +0 -21
  112. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-adds-by-zip-cod.tsv +0 -21
  113. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-myspace-application-counts.tsv +0 -11
  114. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-latlong.tsv +0 -12
  115. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-user-count-by-zip-code.tsv +0 -21
  116. data/spec/data/formats/delimited/without_schema/myspace-user-activity-stream-word-count-by-day-from-december-200.tsv +0 -21
  117. data/spec/data/formats/excel/sample.xls +0 -0
  118. data/spec/data/formats/json/sample.json +0 -1
  119. data/spec/data/formats/none/sample +0 -650
  120. data/spec/data/formats/sgml/sample.xml +0 -617
  121. data/spec/data/formats/text/sample.txt +0 -650
  122. data/spec/data/formats/yaml/sample.yaml +0 -410
  123. data/spec/data/schema-tabular.yaml +0 -11
  124. data/spec/imw/archives/rar_spec.rb +0 -16
  125. data/spec/imw/archives/tar_spec.rb +0 -16
  126. data/spec/imw/archives/tarbz2_spec.rb +0 -24
  127. data/spec/imw/archives/targz_spec.rb +0 -21
  128. data/spec/imw/archives/zip_spec.rb +0 -16
  129. data/spec/imw/archives_spec.rb +0 -77
  130. data/spec/imw/compressed_files/bz2_spec.rb +0 -15
  131. data/spec/imw/compressed_files/compressible_spec.rb +0 -36
  132. data/spec/imw/compressed_files/gz_spec.rb +0 -15
  133. data/spec/imw/compressed_files_spec.rb +0 -47
  134. data/spec/imw/dataset/paths_spec.rb +0 -32
  135. data/spec/imw/dataset/workflow_spec.rb +0 -41
  136. data/spec/imw/formats/delimited_spec.rb +0 -44
  137. data/spec/imw/formats/excel_spec.rb +0 -55
  138. data/spec/imw/formats/json_spec.rb +0 -18
  139. data/spec/imw/formats/sgml_spec.rb +0 -24
  140. data/spec/imw/formats/yaml_spec.rb +0 -19
  141. data/spec/imw/metadata/contains_metadata_spec.rb +0 -56
  142. data/spec/imw/metadata/field_spec.rb +0 -25
  143. data/spec/imw/metadata/has_metadata_spec.rb +0 -58
  144. data/spec/imw/metadata/has_summary_spec.rb +0 -32
  145. data/spec/imw/metadata/schema_spec.rb +0 -24
  146. data/spec/imw/metadata_spec.rb +0 -86
  147. data/spec/imw/parsers/line_parser_spec.rb +0 -96
  148. data/spec/imw/parsers/regexp_parser_spec.rb +0 -42
  149. data/spec/imw/resource_spec.rb +0 -32
  150. data/spec/imw/schemes/hdfs_spec.rb +0 -67
  151. data/spec/imw/schemes/http_spec.rb +0 -19
  152. data/spec/imw/schemes/local_spec.rb +0 -165
  153. data/spec/imw/schemes/remote_spec.rb +0 -38
  154. data/spec/imw/schemes/s3_spec.rb +0 -31
  155. data/spec/imw/schemes/sql_spec.rb +0 -3
  156. data/spec/imw/tools/aggregator_spec.rb +0 -71
  157. data/spec/imw/tools/archiver_spec.rb +0 -120
  158. data/spec/imw/tools/extension_analyzer_spec.rb +0 -153
  159. data/spec/imw/tools/summarizer_spec.rb +0 -8
  160. data/spec/imw/tools/transferer_spec.rb +0 -195
  161. data/spec/imw/utils/dynamically_extendable_spec.rb +0 -69
  162. data/spec/imw/utils/has_uri_spec.rb +0 -61
  163. data/spec/imw/utils/paths_spec.rb +0 -10
  164. data/spec/imw/utils/shared_paths_spec.rb +0 -29
  165. data/spec/imw_spec.rb +0 -14
  166. data/spec/rcov.opts +0 -1
  167. data/spec/spec_helper.rb +0 -31
  168. data/spec/support/custom_matchers.rb +0 -28
  169. data/spec/support/file_contents_matcher.rb +0 -30
  170. data/spec/support/paths_matcher.rb +0 -66
  171. data/spec/support/random.rb +0 -213
  172. data/spec/support/without_regard_to_order_matcher.rb +0 -41
@@ -1,24 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../archives_spec"
3
- require File.dirname(__FILE__) + "/../compressed_files_spec"
4
-
5
- describe IMW::Archives::Tarbz2 do
6
- @cannot_append = true
7
- before do
8
- @extension = 'tar.bz2'
9
- end
10
-
11
- it_should_behave_like 'an archive of files'
12
- end
13
-
14
- describe IMW::Archives::Tarbz2 do
15
- before do
16
- @extension = 'tar.bz2'
17
- end
18
- it_should_behave_like 'a compressed file'
19
- end
20
-
21
-
22
-
23
-
24
-
@@ -1,21 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../archives_spec"
3
- require File.dirname(__FILE__) + "/../compressed_files_spec"
4
-
5
- describe IMW::Archives::Targz do
6
- @cannot_append = true
7
- before do
8
- @extension = 'tar.gz'
9
- end
10
-
11
- it_should_behave_like 'an archive of files'
12
- end
13
-
14
-
15
- describe IMW::Archives::Targz do
16
- before do
17
- @extension = 'tar.gz'
18
- end
19
-
20
- it_should_behave_like 'a compressed file'
21
- end
@@ -1,16 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../archives_spec"
3
-
4
- describe IMW::Archives::Zip do
5
-
6
- before do
7
- @extension = 'zip'
8
- end
9
-
10
- it_should_behave_like 'an archive of files'
11
-
12
- end
13
-
14
-
15
-
16
-
@@ -1,77 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../spec_helper')
2
-
3
- # To use this shared example group define instance variables
4
- # <tt>@extension</tt> and <tt>@cannot_append</tt> in your tests:
5
- #
6
- # @cannot_append = true
7
- # before do
8
- # # Notice that there is NO leading '.'
9
- # @extension = 'tar.bz2'
10
- # end
11
- #
12
- # it_should_behave_like "an archive of files"
13
- #
14
- # The <tt>@extension</tt> should correspond to an IMW module with a
15
- # registered handler.
16
- #
17
- # If <tt>@cannot_append</tt> evaluates to true then the specs for
18
- # appending to files will check for an error (this is because one
19
- # typically cannot append to compressed archives). This instance
20
- # variable should be defined OUTSIDE a before block.
21
-
22
- share_examples_for "an archive of files" do
23
-
24
- before do
25
- @root = File.join(IMWTest::TMP_DIR, 'an_archive_of_files_shared_example_group')
26
- @initial_directory = 'initial'
27
- @appending_directory = 'appending'
28
- @extraction_directory = 'extraction'
29
- FileUtils.mkdir_p(@root)
30
- FileUtils.cd(@root)
31
- IMWTest::Random.directory_with_files(@initial_directory)
32
- IMWTest::Random.directory_with_files(@appending_directory)
33
- FileUtils.mkdir(@extraction_directory)
34
- @archive = IMW::Resource.new("archive.#{@extension}") # define @extension in another spec
35
- end
36
-
37
- it "can create an archive" do
38
- @archive.create(*Dir[@initial_directory + '/**/*'])
39
- @archive.should contain_paths_like(@initial_directory, :relative_to => @root)
40
- end
41
-
42
- it "returns an IMW resource when creating" do
43
- @archive.create(*Dir[@initial_directory + '/**/*']).class.should == IMW::Resource
44
- end
45
-
46
- if @cannot_append
47
- it "cannot append to an archive which already exists" do
48
- @archive.create(*Dir[@initial_directory + "/**/*"])
49
- lambda { @archive.append(*Dir[@appending_directory + "/**/*"]) }.should raise_error(IMW::Error)
50
- end
51
- else
52
- it "can append to an archive which already exists" do
53
- @archive.create(*Dir[@initial_directory + "/**/*"])
54
- @archive.append(*Dir[@appending_directory + "/**/*"])
55
- @archive.should contain_paths_like([@initial_directory,@appending_directory], :relative_to => @root)
56
- end
57
-
58
- it "can append to an archive which doesn't already exist" do
59
- @archive.append(*Dir[@appending_directory + "/**/*"])
60
- @archive.should contain_paths_like(@appending_directory, :relative_to => @root)
61
- end
62
-
63
- it "returns an IMW resource when appending" do
64
- @archive.append(*Dir[@appending_directory + "/**/*"]).class.should == IMW::Resource
65
- end
66
- end
67
-
68
-
69
- it "can extract files which match the original ones it archived" do
70
- @archive.create(*Dir[@initial_directory + "/**/*"])
71
- FileUtils.cd @extraction_directory do
72
- @archive.extract
73
- end
74
- @initial_directory.should contain_paths_like(@extraction_directory, :given_base => File.join(@root, @extraction_directory, @initial_directory), :to_match_base => File.join(@root, @initial_directory))
75
- end
76
-
77
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../compressed_files_spec"
3
-
4
- describe IMW::CompressedFiles::Bz2 do
5
-
6
- before do
7
- @extension = 'bz2'
8
- end
9
-
10
- it_should_behave_like 'a compressed file'
11
- end
12
-
13
-
14
-
15
-
@@ -1,36 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../../spec_helper')
2
-
3
- describe IMW::CompressedFiles::Compressible do
4
-
5
- before do
6
- IMWTest::Random.file('foobar.txt')
7
- @resource = IMW::Resource.new('foobar.txt')
8
- end
9
-
10
- it "should extend a local resource " do
11
- @resource.is_compressible?.should be_true
12
- @resource.is_compressed?.should be_false
13
- end
14
-
15
- it "can compress a resource in place" do
16
- compressed_file = @resource.compress!
17
-
18
- # only the compressed file should now exist
19
- compressed_file.exist?.should be_true
20
- @resource.exist?.should be_false
21
-
22
- compressed_file.is_compressed?.should be_true
23
- compressed_file.is_compressible?.should be_false
24
- end
25
-
26
- it "can compress a resource without overwriting the original file" do
27
- compressed_file = @resource.compress
28
-
29
- # both files should now exist
30
- compressed_file.exist?.should be_true
31
- @resource.exist?.should be_true
32
-
33
- compressed_file.is_compressed?.should be_true
34
- compressed_file.is_compressible?.should be_false
35
- end
36
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../compressed_files_spec"
3
-
4
- describe IMW::CompressedFiles::Gz do
5
-
6
- before do
7
- @extension = 'gz'
8
- end
9
-
10
- it_should_behave_like 'a compressed file'
11
- end
12
-
13
-
14
-
15
-
@@ -1,47 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../spec_helper')
2
-
3
- # To use this shared example group define an instance variable
4
- # <tt>@extension</tt> in your tests:
5
- #
6
- # before do
7
- # # Notice that there is NO leading '.'
8
- # @extension = 'gz'
9
- # end
10
- #
11
- # it_should_behave_like "a compressed file"
12
- #
13
- # The <tt>@extension</tt> should correspond to an IMW module with a
14
- # registered handler.
15
-
16
- share_examples_for "a compressed file" do
17
-
18
- before do
19
- @root = File.join(IMWTest::TMP_DIR, 'a_compressed_file_shared_example_group')
20
- FileUtils.mkdir_p(@root)
21
- FileUtils.cd(@root)
22
- IMWTest::Random.file("compressed_file.#{@extension}") # define @extension in another spec
23
- @compressed_file = IMW::Resource.new("compressed_file.#{@extension}")
24
- end
25
-
26
- it "should know that it is compressed" do
27
- @compressed_file.is_compressed?.should be_true
28
- @compressed_file.is_compressible?.should be_false
29
- end
30
-
31
- it "can decompress the file in place" do
32
- uncompressed_file = @compressed_file.decompress!
33
- @compressed_file.exist?.should be_false
34
- uncompressed_file.exist?.should be_true
35
- uncompressed_file.is_compressed?.should be_false
36
- uncompressed_file.is_compressible?.should be_true
37
- end
38
-
39
- it "can decompress the file without deleting the original file" do
40
- uncompressed_file = @compressed_file.decompress
41
- @compressed_file.exist?.should be_true
42
- uncompressed_file.exist?.should be_true
43
- uncompressed_file.is_compressed?.should be_false
44
- uncompressed_file.is_compressible?.should be_true
45
- end
46
-
47
- end
@@ -1,32 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require File.dirname(__FILE__) + "/../utils/shared_paths_spec"
3
-
4
- describe IMW::Dataset do
5
-
6
- describe 'setting default paths' do
7
-
8
- before do
9
- @dataset = IMW::Dataset.new(:testing, :root => IMWTest::TMP_DIR)
10
- end
11
-
12
- it "should set its root path to the value given" do
13
- @dataset.path_to(:root).should == IMWTest::TMP_DIR
14
- end
15
-
16
- it "should set paths for each workflow dir" do
17
- @dataset.workflow_dirs.each do |dir|
18
- @dataset.path_to(dir).should == File.join(IMWTest::TMP_DIR, dir.to_s)
19
- end
20
- end
21
-
22
- before do
23
- @path_manager = @dataset
24
- end
25
- it_should_behave_like "an object that manages paths"
26
-
27
- end
28
- end
29
-
30
-
31
-
32
-
@@ -1,41 +0,0 @@
1
- require File.dirname(__FILE__) + "/../../spec_helper"
2
- require 'imw/dataset/workflow'
3
- describe IMW::Workflow do
4
-
5
- before do
6
- @dataset = IMW::Dataset.new :testing
7
- end
8
-
9
- it "should dynamically define methods for each workflow step" do
10
- @dataset.workflow_steps.each do |step|
11
- @dataset.respond_to?(step).should be_true
12
- end
13
- end
14
-
15
- describe "initializing workflow" do
16
- it "should not make any directories if no tasks are invoked" do
17
- @dataset.path_to(:root).should_not contain(*@dataset.workflow_dirs.map(&:to_s))
18
- end
19
-
20
- it "should only make directories once a task is invoked" do
21
- @dataset[:initialize].invoke
22
- @dataset.path_to(:root).should contain(*@dataset.workflow_dirs.map(&:to_s))
23
- end
24
- end
25
-
26
- describe "cleaning workflow directories" do
27
- it "should clean without error even if there's nothing to clean" do
28
- @dataset[:clean].invoke
29
- @dataset.path_to(:root).should_not contain(*@dataset.workflow_dirs.map(&:to_s))
30
- end
31
-
32
- it "should remove workflow directories when invoked" do
33
- @dataset[:initialize].invoke
34
- IMWTest::Random.file(@dataset.path_to(:ripd, 'foobar.txt')) # put a file in
35
- @dataset[:clean].invoke
36
- @dataset.path_to(:root).should_not contain(*@dataset.workflow_dirs.map(&:to_s))
37
- end
38
- end
39
-
40
- end
41
-
@@ -1,44 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../../spec_helper')
2
-
3
- describe IMW::Formats::Csv do
4
- # we don't test Tsv as the differences from Csv are trivial and
5
- # effect only code within the FasterCSV library
6
-
7
- before do
8
- @sample = IMW.open(File.join(IMWTest::DATA_DIR, 'formats/delimited/sample.csv'))
9
- end
10
-
11
- it "should be able to parse the CSV" do
12
- @sample.load[1].last.should == 'lemurinus'
13
- end
14
-
15
- it "should be able to write CSV" do
16
- data = [['foobar', 1, 2], ['bazbooz', 3, 4]]
17
- IMW.open!('test.csv') { |f| f << data }
18
- IMW.open('test.csv').load[1].last.should == "4"
19
- end
20
-
21
- describe "guessing a schema" do
22
-
23
- Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/with_schema/*')].each do |path|
24
- it "should correctly guess that with_schema/#{File.basename(path)} has headers in its first row" do
25
- IMW.open(path).fields_in_first_line?.should == true
26
- end
27
- end
28
-
29
- Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/without_schema/*')].each do |path|
30
- it "should correctly guess that without_schema/#{File.basename(path)} does not have headers in its first row" do
31
- IMW.open(path).fields_in_first_line?.should == false
32
- end
33
- end
34
-
35
- it "should automatically set the headers on a source with guessed headers" do
36
- resource = IMW.open(Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/with_schema/*')].first)
37
- resource.guess_fields!
38
- resource.delimited_options[:headers].class.should == Array
39
- resource.schema.should_not be_empty
40
- end
41
-
42
- end
43
-
44
- end
@@ -1,55 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../../spec_helper')
2
-
3
- describe IMW::Formats::Excel do
4
-
5
- before do
6
- @sample = IMW.open(File.join(IMWTest::DATA_DIR, 'formats/excel/sample.xls'))
7
- end
8
-
9
- it "should be able to parse the Excel document" do
10
- @sample.load[1].last.should == 'lemurinus'
11
- end
12
-
13
- it "should be able to create a snippet" do
14
- @sample.snippet[1].last.should == 'lemurinus'
15
- end
16
-
17
- # it "should be able to write CSV" do
18
- # data = [['foobar', 1, 2], ['bazbooz', 3, 4]]
19
- # IMW.open!('test.csv').emit(data)
20
- # IMW.open('test.csv').load[1].last.should == "4"
21
- # end
22
-
23
- # it "should raise an error on an invalid schema" do
24
- # lambda { @sample.schema = [{:name => :foobar, :has_many => {:associations => [:foo, :bar]}}] }.should raise_error(IMW::SchemaError)
25
- # end
26
-
27
- # it "should accept a valid schema" do
28
- # @sample.schema = [:foo, :bar, :baz]
29
- # @sample.schema.should == [{:name => 'foo'}, {:name => 'bar'}, {:name => 'baz'}]
30
- # end
31
-
32
- # describe "guessing a schema" do
33
-
34
- # Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/with_schema/*')].each do |path|
35
- # it "should correctly guess that with_schema/#{File.basename(path)} has headers in its first row" do
36
- # IMW.open(path).headers_in_first_line?.should == true
37
- # end
38
- # end
39
-
40
- # Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/without_schema/*')].each do |path|
41
- # it "should correctly guess that without_schema/#{File.basename(path)} does not have headers in its first row" do
42
- # IMW.open(path).headers_in_first_line?.should == false
43
- # end
44
- # end
45
-
46
- # it "should automatically set the headers on a source with guessed headers" do
47
- # resource = IMW.open(Dir[File.join(IMWTest::DATA_DIR, 'formats/delimited/with_schema/*')].first)
48
- # resource.guess_schema!
49
- # resource.delimited_options[:headers].class.should == Array
50
- # resource.schema.should_not be_empty
51
- # end
52
-
53
- # end
54
-
55
- end
@@ -1,18 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'../../spec_helper')
2
-
3
- describe IMW::Formats::Json do
4
-
5
- before do
6
- @sample = IMW.open(File.join(IMWTest::DATA_DIR, 'formats/json/sample.json'))
7
- end
8
-
9
- it "should be able to parse the JSON" do
10
- @sample.load["Aotus"].first['id'].should == 1
11
- end
12
-
13
- it "should be able to write JSON" do
14
- IMW.open!('test.json') { |f| f.emit({ 'foobar' => 3, 'bazbooz' => 4 }) }
15
- IMW.open('test.json').load['foobar'].should == 3
16
- end
17
-
18
- end