simple-spreadsheet-extractor 0.16.1 → 0.17.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2b5cbc7c8d64f1bddf52010333ab4f3133beae3f
4
- data.tar.gz: 7a476ed21f5a07a750d8dbe56dcc8f3c8984e3b7
2
+ SHA256:
3
+ metadata.gz: 8d5351032c2b34dfcce4bed0469415ab1b98e8f11f305d8e76bca707ed2554e1
4
+ data.tar.gz: 01d1abb6c2f8a025ab489f1a83e9b9c627bbc67f151fb3ace3968175b4c69cb2
5
5
  SHA512:
6
- metadata.gz: 7e7104b1f357c3bd5e8086c4c285dd6d353df0282b30baf2ea96848df98b3a0f64a6d9337c39f9690ed0fbef12e1dbc13c3db251b9cc80aae69a81dff832e210
7
- data.tar.gz: 3b6d98271565b991e47178b5e2e384a5afbdcb2c1b7c3ec2ea91e6798ae5512c83c6d648ed279526cc1a00f3387d2a25317880b1d0c6e1a6a3e093d8cc01870f
6
+ metadata.gz: 29bea0ec37798888a1e414ed947015c8c991450e8e017b0f4dde822c88ce5ceea32197cd3c93b5f8886bc704be2946c82edb9c7410235f17c53150509485e846
7
+ data.tar.gz: aad58ac8c66c8091ae3d9f1d05366c889727cc3f07981d2c9841a02e25dfc289060c57327d6d79b087ae9df8685ecf98ce3f63a9b1ea23300b5c870114802515
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.2.8
1
+ ruby-2.7.6
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2014, The University of Manchester, UK.
1
+ Copyright (c) 2010-2022, The University of Manchester, UK.
2
2
 
3
3
  All rights reserved.
4
4
 
data/README.rdoc CHANGED
@@ -1,7 +1,7 @@
1
1
  = Simple Spreadsheet Extractor
2
2
 
3
3
  Authors:: Stuart Owen, Finn Bacall
4
- Version:: 0.15.0
4
+ Version:: 0.17.0
5
5
  Contact:: mailto:stuart.owen@manchester.ac.uk
6
6
  Licence:: BSD (See LICENCE or http://www.opensource.org/licenses/bsd-license.php)
7
7
  Copyright:: (c) 2010-2015 The University of Manchester, UK
@@ -23,7 +23,7 @@ This is a simple tool developed for use within SysMO-DB[http://www.sysmo-db.org]
23
23
 
24
24
  == Installation
25
25
 
26
- Java 1.7 (JRE) is required.
26
+ Java 8 or above (JRE) is required.
27
27
 
28
28
  gem install simple-spreadsheet-extractor
29
29
 
@@ -34,6 +34,7 @@ Java 1.7 (JRE) is required.
34
34
  * require 'simple-spreadsheet-extractor'
35
35
  * include the module SysMODB::SpreadsheetExtractor
36
36
  * pass an IO object to the method spreedsheet_to_xml which responds with the XML for the contents of the spreadsheet. Alternatively use spreadsheet_to_csv for CSV.
37
+ * you can now also pass in the filepath to the Excel file instead of an IO object
37
38
  * if something goes wrong with the extraction then a SysMODB::SpreadsheetExtractionException will be thrown
38
39
  * by default the JVM is allocated 512M of memory, you can override this by passing a string as the last argument. This will be passed to -Xmx in the java command.
39
40
 
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sysmodb/simple-spreadsheet-extractor'
@@ -1,38 +1,49 @@
1
- require 'open4'
1
+ require 'terrapin'
2
2
 
3
3
  module SysMODB
4
- #Exception that is thrown when a problem occurs during the extraction
4
+ # Exception that is thrown when a problem occurs during the extraction
5
5
  class SpreadsheetExtractionException < Exception; end
6
6
 
7
- #handles the delegation to java, and executes the extraction passing the
8
- #input file through STDIN, and reading the results through STDOUT.
7
+ # handles the delegation to java
9
8
  class Extractor
10
- JAR_VERSION="0.16.0".freeze
9
+ JAR_VERSION = '0.16.0'.freeze
11
10
  DEFAULT_PATH = File.dirname(__FILE__) + "/../../jars/simple-spreadsheet-extractor-#{JAR_VERSION}.jar"
12
- BUFFER_SIZE=250000 # 1/4 a megabyte
13
11
 
14
12
  def initialize(memory_allocation)
15
13
  @memory_allocation = memory_allocation
16
- if is_windows?
17
- raise Exception.new("Windows is not currently supported")
18
- end
14
+ raise Exception, 'Windows is not currently supported' if is_windows?
19
15
  end
20
16
 
17
+ # spreadsheet_data can be an IO like object or the path to a file
21
18
  def spreadsheet_to_xml(spreadsheet_data)
22
- read_with_open4 spreadsheet_data,"xml"
19
+ spreadsheet_to_requested_format(spreadsheet_data, 'xml')
23
20
  end
24
21
 
25
- def spreadsheet_to_csv(spreadsheet_data,sheet=1,trim=false)
26
- read_with_open4 spreadsheet_data,"csv",sheet,trim
22
+ # spreadsheet_data can be an IO like object or the path to a file
23
+ def spreadsheet_to_csv(spreadsheet_data, sheet = 1, trim = false)
24
+ spreadsheet_to_requested_format(spreadsheet_data, 'csv', sheet, trim)
27
25
  end
28
26
 
29
27
  private
30
28
 
31
- def spreadsheet_extractor_command(format="xml",sheet=nil,trim=false)
29
+ def spreadsheet_to_requested_format(spreadsheet_data, format, sheet = nil, trim = nil)
30
+ if spreadsheet_data.is_a?(IO) || spreadsheet_data.is_a?(StringIO)
31
+ Tempfile.create('spreadsheet-extraction') do |f|
32
+ f.write(spreadsheet_data.read)
33
+ f.flush
34
+ execute_command_line f.path, format, sheet, trim
35
+ end
36
+ elsif spreadsheet_data.is_a?(String)
37
+ execute_command_line spreadsheet_data, format, sheet, trim
38
+ end
39
+ end
40
+
41
+ def spreadsheet_extractor_command(filepath, format = 'xml', sheet = nil, trim = false)
32
42
  command = "java -Xmx#{@memory_allocation} -jar #{(defined? SPREADSHEET_EXTRACTOR_JAR_PATH) ? SPREADSHEET_EXTRACTOR_JAR_PATH : DEFAULT_PATH}"
33
- command += " -o #{format}"
43
+ command += " -o #{format}"
34
44
  command += " -s #{sheet}" if sheet
35
- command += " -t" if trim
45
+ command += ' -t' if trim
46
+ command += " < #{filepath}"
36
47
  command
37
48
  end
38
49
 
@@ -40,32 +51,14 @@ module SysMODB
40
51
  !(RUBY_PLATFORM =~ /mswin32/ || RUBY_PLATFORM =~ /mingw32/).nil?
41
52
  end
42
53
 
43
- def read_with_open4(spreadsheet_data,format="xml",sheet=nil,trim=false)
44
- output = ""
45
- err_message = ""
46
- command = spreadsheet_extractor_command format,sheet,trim
47
- status = Open4.popen4(command) do |_pid, stdin, stdout, stderr|
48
- while ((line = spreadsheet_data.gets(BUFFER_SIZE)) != nil) do
49
- stdin << line
50
- end
51
- stdin.close
52
-
53
- while ((line = stdout.gets(BUFFER_SIZE)) != nil) do
54
- output << line
55
- end
56
- stdout.close
57
-
58
- until ((line=stderr.gets((BUFFER_SIZE))).nil?) do
59
- err_message << line
60
- end
61
- stderr.close
54
+ def execute_command_line(filepath, format = 'xml', sheet = nil, trim = false)
55
+ command = spreadsheet_extractor_command filepath, format, sheet, trim
56
+ begin
57
+ Terrapin::CommandLine.new(command).run.strip
58
+ rescue Terrapin::ExitStatusError, Terrapin::CommandNotFoundError => e
59
+ raise SpreadsheetExtractionException, e.message
62
60
  end
63
-
64
- if status.to_i != 0
65
- raise SpreadsheetExtractionException.new(err_message)
66
- end
67
-
68
- output.strip
69
61
  end
62
+
70
63
  end
71
64
  end
@@ -1,4 +1,3 @@
1
-
2
1
  require 'sysmodb/extractor'
3
2
 
4
3
  module SysMODB
@@ -8,12 +7,11 @@ module SysMODB
8
7
  # simple_spreadsheet_to_xml to extract to an xml format (see README and schema in doc/schema-v1.xsd)
9
8
  # simple_spreadhseet_to_csv to extract to CSV format for a single sheet
10
9
  module SpreadsheetExtractor
11
-
12
10
  # :call-seq:
13
11
  # spreadsheet_to_xml(spreadsheet_data) -> String
14
12
  # spreadsheet_to_xml(spreadsheet_data, memory_allocation) -> String
15
13
  #
16
- # reads the incoming data from an IO object and returns the generated XML.
14
+ # reads the incoming data from an IO object or path to a file and returns the generated XML.
17
15
  # it is extracted using java, and the default memory allocation is 512M (passed to -Xmx) this can
18
16
  # be changed by passing an option final parameter memory_allocation
19
17
  def spreadsheet_to_xml(spreadsheet_data, memory_allocation = DEFAULT_MEMORY_ALLOCATION)
@@ -26,7 +24,7 @@ module SysMODB
26
24
  # spreadsheet_to_csv(spreadsheet_data, sheet, trim) -> String
27
25
  # spreadsheet_to_csv(spreadsheet_data, sheet, trim, memory_allocation) -> String
28
26
  #
29
- # reads the incoming data from an IO object and returns the generated CSV.
27
+ # reads the incoming data from an IO object or path to a file and returns the generated CSV.
30
28
  # only 1 sheet is processed, which by default it the first sheet.
31
29
  # if trim is set to true, proceeding or trailing cells will be removed whilst keeping the csv uniform.
32
30
  # it is extracted using java, and the default memory allocation is 512M (passed to -Xmx) this can
@@ -1,4 +1,3 @@
1
1
  module SysMODB
2
- VERSION = "0.16.1".freeze
3
-
2
+ VERSION = '0.17.0'.freeze
4
3
  end
@@ -19,12 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency('libxml-ruby', ['~> 2.8'])
23
- spec.add_dependency('open4', ['1.3.0'])
22
+ spec.add_dependency('libxml-ruby', '~> 2.9')
23
+ spec.add_dependency('terrapin', '~> 0.6')
24
24
 
25
- spec.add_development_dependency('rubocop', ['~> 0.48'])
26
- spec.add_development_dependency('rubycritic', ['~> 3.2'])
27
- spec.add_development_dependency 'bundler', '~> 1.16'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'minitest', '~> 5.0'
25
+ spec.add_development_dependency('rubocop','~> 1.25')
26
+ spec.add_development_dependency('rubycritic')
27
+ spec.add_development_dependency('bundler','~> 2.3')
28
+
29
+ spec.add_development_dependency('rake')
30
+ spec.add_development_dependency('minitest','~>5.14')
30
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-spreadsheet-extractor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Owen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-05-10 00:00:00.000000000 Z
13
+ date: 2022-12-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: libxml-ruby
@@ -18,98 +18,98 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '2.8'
21
+ version: '2.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '2.8'
28
+ version: '2.9'
29
29
  - !ruby/object:Gem::Dependency
30
- name: open4
30
+ name: terrapin
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '='
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.3.0
35
+ version: '0.6'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '='
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.3.0
42
+ version: '0.6'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rubocop
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0.48'
49
+ version: '1.25'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '0.48'
56
+ version: '1.25'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rubycritic
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
61
+ - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: '3.2'
63
+ version: '0'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - "~>"
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: '3.2'
70
+ version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: bundler
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.16'
77
+ version: '2.3'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '1.16'
84
+ version: '2.3'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rake
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: '10.0'
91
+ version: '0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - "~>"
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
- version: '10.0'
98
+ version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: minitest
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '5.0'
105
+ version: '5.14'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '5.0'
112
+ version: '5.14'
113
113
  description: Takes a stream to a spreadsheet file and produces an XML or CSV representation
114
114
  of its contents
115
115
  email:
@@ -126,7 +126,6 @@ files:
126
126
  - LICENSE
127
127
  - README.rdoc
128
128
  - Rakefile
129
- - VERSION
130
129
  - doc/schema-v1.xsd
131
130
  - examples/example.rb
132
131
  - jars/lib/commons-codec-1.10.jar
@@ -165,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
164
  - !ruby/object:Gem::Version
166
165
  version: '0'
167
166
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 2.6.13
167
+ rubygems_version: 3.3.26
170
168
  signing_key:
171
169
  specification_version: 4
172
170
  summary: Basic spreadsheet content extraction using Apache POI
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.15.2