simple-spreadsheet-extractor 0.3.3 → 0.3.4

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/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