simple-spreadsheet-extractor 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ begin
21
21
  gemspec.files.exclude "test/*"
22
22
  gemspec.extra_rdoc_files = ["README.rdoc", "LICENCE"]
23
23
  gemspec.add_dependency("POpen4","0.1.4")
24
+ gemspec.add_dependency("sys-uname","0.8.4")
24
25
  end
25
26
  rescue LoadError
26
27
  puts "Jeweler not available. Install it with: gem install jeweler"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
data/example.rb ADDED
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'simple-spreadsheet-extractor'
3
+
4
+ include SysMODB::SpreadsheetExtractor
5
+
6
+ path=ARGV.first
7
+
8
+ f=open(path)
9
+ begin
10
+ puts spreadsheet_to_xml(f)
11
+ rescue SysMODB::SpreadsheetExtractionException=>e
12
+ puts "Something went wrong #{e.message}"
13
+ end
@@ -1,5 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'popen4'
3
+ require 'open4'
4
+
3
5
 
4
6
  module SysMODB
5
7
 
@@ -9,22 +11,63 @@ module SysMODB
9
11
  module SpreadsheetExtractor
10
12
 
11
13
  JAR_PATH = File.dirname(__FILE__) + "/../jars"
14
+ COMMAND = "java -jar #{JAR_PATH}/simple-spreadsheet-extractor-0.3.2.jar"
12
15
 
13
16
  def spreadsheet_to_xml spreadsheet_data
14
- command = "java -jar #{JAR_PATH}/simple-spreadsheet-extractor-0.3.2.jar"
17
+ if RUBY_PLATFORM =~ /mswin32/
18
+ output = read_with_popen4 spreadsheet_data
19
+ else
20
+ puts "Using open4"
21
+ output = read_with_open4 spreadsheet_data
22
+ end
23
+
24
+ return output
25
+ end
26
+
27
+ private
28
+
29
+ #opens using POpen4 - this is for the benefit of Windows. It has been found to be unstable in Linux and give occaisional segmentation faults
30
+ def read_with_popen4 spreadsheet_data
31
+ output=""
32
+ err_message = ""
33
+ status = POpen4::popen4(COMMAND) do |stdout, stderr, stdin, pid|
34
+ stdin=stdin.binmode
35
+ spreadsheet_data.each_byte{|b| stdin.putc(b)}
36
+ stdin.close
37
+
38
+ output=stdout.read.strip
39
+ err_message=stderr.read.strip
40
+
41
+ end
42
+
43
+ if status.to_i != 0
44
+ raise SpreadsheetExtractionException.new(err_message)
45
+ end
46
+
47
+ return output
48
+ end
49
+
50
+ def read_with_open4 spreadsheet_data
15
51
  output = ""
16
52
  err_message = ""
17
- status = POpen4::popen4(command) do |stdout, stderr, stdin, pid|
18
- stdin=stdin.binmode
19
- spreadsheet_data.each_byte{|b| stdin.putc(b)}
20
- stdin.close
53
+ status = Open4::popen4(COMMAND) do |pid, stdin, stdout, stderr|
54
+ while ((line = spreadsheet_data.gets) != nil) do
55
+ stdin << line
56
+ end
57
+ stdin.close
21
58
 
22
- output=stdout.read.strip
23
- err_message=stderr.read.strip
24
-
59
+ while ((line = stdout.gets) != nil) do
60
+ output << line
61
+ end
62
+ stdout.close
63
+
64
+ while ((line=stderr.gets)!= nil) do
65
+ err_message << line
66
+ end
67
+ stderr.close
25
68
  end
26
69
 
27
- if status.to_i != 0
70
+ if status.to_i != 0
28
71
  raise SpreadsheetExtractionException.new(err_message)
29
72
  end
30
73
 
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{simple-spreadsheet-extractor}
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Stuart Owen"]
12
- s.date = %q{2010-07-28}
12
+ s.date = %q{2010-11-02}
13
13
  s.description = %q{Takes a stream to a spreadsheet file and produces and XML representation of its contents}
14
14
  s.email = %q{stuart.owen@manchester.ac.uk}
15
15
  s.extra_rdoc_files = [
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  "Rakefile",
24
24
  "VERSION",
25
25
  "doc/schema-v1.xsd",
26
+ "example.rb",
26
27
  "jars/lib/dom4j-1.6.1.jar",
27
28
  "jars/lib/poi-3.6.jar",
28
29
  "jars/lib/poi-ooxml-3.6.jar",
@@ -35,7 +36,7 @@ Gem::Specification.new do |s|
35
36
  s.homepage = %q{http://github.com/myGrid/simple-spreadsheet-extractor-gem}
36
37
  s.rdoc_options = ["--charset=UTF-8"]
37
38
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
39
+ s.rubygems_version = %q{1.3.6}
39
40
  s.summary = %q{Basic spreadsheet content extraction using Apache POI}
40
41
  s.test_files = [
41
42
  "test/test_extraction.rb"
@@ -45,13 +46,16 @@ Gem::Specification.new do |s|
45
46
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
47
  s.specification_version = 3
47
48
 
48
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
49
50
  s.add_runtime_dependency(%q<POpen4>, ["= 0.1.4"])
51
+ s.add_runtime_dependency(%q<sys-uname>, ["= 0.8.4"])
50
52
  else
51
53
  s.add_dependency(%q<POpen4>, ["= 0.1.4"])
54
+ s.add_dependency(%q<sys-uname>, ["= 0.8.4"])
52
55
  end
53
56
  else
54
57
  s.add_dependency(%q<POpen4>, ["= 0.1.4"])
58
+ s.add_dependency(%q<sys-uname>, ["= 0.8.4"])
55
59
  end
56
60
  end
57
61
 
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-spreadsheet-extractor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 3
9
- - 3
10
- version: 0.3.3
8
+ - 4
9
+ version: 0.3.4
11
10
  platform: ruby
12
11
  authors:
13
12
  - Stuart Owen
@@ -15,18 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-07-28 00:00:00 +01:00
17
+ date: 2010-11-02 00:00:00 +00:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: POpen4
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - "="
28
26
  - !ruby/object:Gem::Version
29
- hash: 19
30
27
  segments:
31
28
  - 0
32
29
  - 1
@@ -34,6 +31,20 @@ dependencies:
34
31
  version: 0.1.4
35
32
  type: :runtime
36
33
  version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: sys-uname
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 8
44
+ - 4
45
+ version: 0.8.4
46
+ type: :runtime
47
+ version_requirements: *id002
37
48
  description: Takes a stream to a spreadsheet file and produces and XML representation of its contents
38
49
  email: stuart.owen@manchester.ac.uk
39
50
  executables: []
@@ -50,6 +61,7 @@ files:
50
61
  - Rakefile
51
62
  - VERSION
52
63
  - doc/schema-v1.xsd
64
+ - example.rb
53
65
  - jars/lib/dom4j-1.6.1.jar
54
66
  - jars/lib/poi-3.6.jar
55
67
  - jars/lib/poi-ooxml-3.6.jar
@@ -58,7 +70,6 @@ files:
58
70
  - jars/simple-spreadsheet-extractor-0.3.2.jar
59
71
  - lib/simple-spreadsheet-extractor.rb
60
72
  - simple-spreadsheet-extractor.gemspec
61
- - test/test_extraction.rb
62
73
  has_rdoc: true
63
74
  homepage: http://github.com/myGrid/simple-spreadsheet-extractor-gem
64
75
  licenses: []
@@ -69,27 +80,23 @@ rdoc_options:
69
80
  require_paths:
70
81
  - lib
71
82
  required_ruby_version: !ruby/object:Gem::Requirement
72
- none: false
73
83
  requirements:
74
84
  - - ">="
75
85
  - !ruby/object:Gem::Version
76
- hash: 3
77
86
  segments:
78
87
  - 0
79
88
  version: "0"
80
89
  required_rubygems_version: !ruby/object:Gem::Requirement
81
- none: false
82
90
  requirements:
83
91
  - - ">="
84
92
  - !ruby/object:Gem::Version
85
- hash: 3
86
93
  segments:
87
94
  - 0
88
95
  version: "0"
89
96
  requirements: []
90
97
 
91
98
  rubyforge_project:
92
- rubygems_version: 1.3.7
99
+ rubygems_version: 1.3.6
93
100
  signing_key:
94
101
  specification_version: 3
95
102
  summary: Basic spreadsheet content extraction using Apache POI