sheet_converter 0.1.0 → 0.2.1

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
2
  SHA256:
3
- metadata.gz: ad0fc00ac15c2e5b817c3d910e1e802975e1e4a644f57ed93eaa1d9b6e818142
4
- data.tar.gz: 4085482696c97565ba8e401faeb68eefba6205331c4bb9a0194e279d09e03f99
3
+ metadata.gz: ae8bebb6799355388e5c7c84e91a867d0c800f16f4a6ef9f8e720c5b2c3475fb
4
+ data.tar.gz: d318ee7ae48c00606f7ee44013c9e44771184662b51598c42ea0660d0297493a
5
5
  SHA512:
6
- metadata.gz: 8ea122582fa764e309c776a64718f243d5aeddf4a84b7c58910f1efeff1bcd421e3757266689133bda48f6f9d1b0111177c02bc6aad2aa9532ed0099a717be94
7
- data.tar.gz: 9047d532f32c27e61a7108a051bcbf22131bea06a587a4b430c11d5e5d8b99e33874432bacb3617d67b1f98e7800a349f9e09de4797c65891e33eac1eb718370
6
+ metadata.gz: e9e834ecc66375854d66ccaafe6ffa559d5bf650c85e69ab5f5808eea3bd3ac0ea0d977f11e4dad54edcb8d7167f88a1184424f435a4024d35fb6a48a0ba7529
7
+ data.tar.gz: 43153ffd1e66ebb292cb7ea2c23868e35fddfb0eca1bf4e646cd1f8141e82c80f91bc7f1d0ee96c36ff7a1a42335cc2036f6af2ea51a6b124737b865a7c8f72b
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ .byebug_history
data/Gemfile.lock CHANGED
@@ -1,24 +1,56 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sheet_converter (0.1.0)
4
+ sheet_converter (0.2.0)
5
+ axlsx (>= 3.0.0.pre)
5
6
  roo (~> 2.7.0)
7
+ spreadsheet_architect
6
8
  thor (~> 0.20)
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
13
+ activesupport (5.2.1)
14
+ concurrent-ruby (~> 1.0, >= 1.0.2)
15
+ i18n (>= 0.7, < 2)
16
+ minitest (~> 5.1)
17
+ tzinfo (~> 1.1)
18
+ axlsx (3.0.0.pre)
19
+ htmlentities (~> 4.3, >= 4.3.4)
20
+ mimemagic (~> 0.3)
21
+ nokogiri (~> 1.8, >= 1.8.2)
22
+ rubyzip (~> 1.2, >= 1.2.1)
23
+ axlsx_styler (0.2.0)
24
+ activesupport (>= 3.1)
25
+ axlsx (>= 2.0, < 4)
26
+ builder (3.2.3)
11
27
  byebug (10.0.2)
28
+ concurrent-ruby (1.1.3)
29
+ htmlentities (4.3.4)
30
+ i18n (1.1.1)
31
+ concurrent-ruby (~> 1.0)
32
+ mimemagic (0.3.2)
12
33
  mini_portile2 (2.3.0)
13
34
  minitest (5.11.3)
14
35
  nokogiri (1.8.5)
15
36
  mini_portile2 (~> 2.3.0)
16
37
  rake (10.5.0)
38
+ rodf (1.0.0)
39
+ activesupport (>= 3.0)
40
+ builder (>= 3.0)
41
+ rubyzip (>= 1.0)
17
42
  roo (2.7.1)
18
43
  nokogiri (~> 1)
19
44
  rubyzip (~> 1.1, < 2.0.0)
20
45
  rubyzip (1.2.2)
46
+ spreadsheet_architect (3.2.0)
47
+ axlsx (>= 2, < 4)
48
+ axlsx_styler (>= 0.1.7, < 2)
49
+ rodf (>= 1.0.0, < 2)
21
50
  thor (0.20.3)
51
+ thread_safe (0.3.6)
52
+ tzinfo (1.2.5)
53
+ thread_safe (~> 0.1)
22
54
 
23
55
  PLATFORMS
24
56
  ruby
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # SheetConverter
2
+ [![Gem Version](https://badge.fury.io/rb/sheet_converter.svg)](https://badge.fury.io/rb/sheet_converter)
2
3
 
3
4
  Convert sheet files.
4
5
 
@@ -2,24 +2,48 @@ class SheetConverter::CLI < Thor
2
2
  desc "xlsx2csv INPUT_PATH", "convert XLSX files to CSV files at the same folder"
3
3
  option :output, aliases: [:o], desc: "specify the output directory"
4
4
  def xlsx2csv(input_path)
5
- if File.directory?(input_path)
6
- Dir.glob(File.join(input_path, "**", "*.xlsx")).each do |xlsx|
7
- file_xlsx_to_csv(xlsx, dir: options[:output])
8
- end
9
- else
10
- file_xlsx_to_csv(input_path, dir: options[:output])
5
+ nav_input_files(input_path, ".xlsx") do |file|
6
+ file_xlsx_to_csv(file, dir: options[:output])
7
+ end
8
+ end
9
+
10
+ desc "csv2xlsx INPUT_PATH", "convert CSV files to XLSX files at the same folder"
11
+ option :output, aliases: [:o], desc: "specify the output directory"
12
+ def csv2xlsx(input_path)
13
+ nav_input_files(input_path, ".csv") do |file|
14
+ file_csv_to_xlsx(file, dir: options[:output])
11
15
  end
12
16
  end
13
17
 
14
18
  private
15
19
 
16
- def file_xlsx_to_csv(xlsx, dir: nil)
17
- extname = File.extname(xlsx)
18
- basename = File.basename(xlsx, extname)
19
- dir = dir || File.dirname(xlsx)
20
+ def file_xlsx_to_csv(xlsx_path, dir: nil)
21
+ csv = Roo::Excelx.new(xlsx_path).to_csv
22
+ File.write(parse_file_output_path(xlsx_path, output_ext: '.csv', dir: dir), csv)
23
+ end
24
+
25
+ def file_csv_to_xlsx(csv_path, dir: nil)
26
+ csv = Roo::CSV.new(csv_path)
27
+ headers = csv.row(1)
28
+
29
+ xlsx = SpreadsheetArchitect.to_xlsx(headers: headers, data: csv.to_a[1..-1])
30
+ File.write(parse_file_output_path(csv_path, output_ext: '.xlsx', dir: dir), xlsx)
31
+ end
32
+
33
+ def nav_input_files(input_path, ext, &blk)
34
+ if File.directory?(input_path)
35
+ Dir.glob(File.join(input_path, "**", "*#{ext}")).each(&blk)
36
+ else
37
+ blk.call(input_path)
38
+ end
39
+ end
40
+
41
+ def parse_file_output_path(filepath, output_ext:, dir: nil)
42
+ extname = File.extname(filepath)
43
+ basename = File.basename(filepath, extname)
44
+ dir = dir || File.dirname(filepath)
20
45
  Dir.mkdir(dir) unless Dir.exist?(dir)
21
- csv = "#{basename}.csv"
22
46
 
23
- File.write(File.join(dir, csv), Roo::Excelx.new(xlsx).to_csv)
47
+ File.join(dir, [basename, output_ext].join)
24
48
  end
25
49
  end
@@ -1,3 +1,3 @@
1
1
  module SheetConverter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "thor"
2
2
  require "roo"
3
+ require 'spreadsheet_architect'
3
4
  require "sheet_converter/version"
4
5
  require "sheet_converter/cli"
5
6
 
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency "thor", "~> 0.20"
23
23
  spec.add_dependency "roo", "~> 2.7.0"
24
+ spec.add_dependency 'axlsx', '3.0.0.pre'
25
+ spec.add_dependency "spreadsheet_architect"
24
26
 
25
27
  spec.add_development_dependency "bundler", "~> 1.16"
26
28
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sheet_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ug0
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.7.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: axlsx
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0.pre
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0.pre
55
+ - !ruby/object:Gem::Dependency
56
+ name: spreadsheet_architect
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement