csv-query 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f4a9a329500d74013a24f3684a2fe1f671f913dedaccd4813fbc3e8ff25a414
4
- data.tar.gz: c0be39e6b34e0bdef67748d994fa9ba4f42968f2f27c3fa3459c116ec8bcbdb5
3
+ metadata.gz: 8d9774746de8aff9bb8e0e6d6affc2fd480cfb6ebc0d69787af335d2877c689f
4
+ data.tar.gz: 8b168e91f484df3d6ffa87bde8b41ab529244bf3d8548a667c3d2169972fb442
5
5
  SHA512:
6
- metadata.gz: 942b63e3cbb85a5708ae395c163de8451102f8b6da2e885f1a406ff1ac8c57a47e84b31f0fbadae47b9fac9335d76f9d038165d02118a72a69452f5e7a77ce74
7
- data.tar.gz: 91e43ae4b98483709f9426d15cf3a21720b9ae2cf3cd04d6d1e11ac7dc765aa0d0a9db9b989345cffca70b349cebb11829c5e03b73d3cb62a7650d6f3a0c7a2c
6
+ metadata.gz: 4a5ab7ee5db5280f04d2ded993052f5b5ef0f4cf0ae4387a10b8b3a2a71744054279f142adb8603dbc3fdd52075fae29fad0147d41465af5c3a19ffadc047ba5
7
+ data.tar.gz: d695a4eea328700a8e6f1857e9e0f4b61612fc15186fd53d484cf7fb0299cf094df4faf5e855d7ebcf53c9f8c4d7ed002c993681a60997074d1d3c9e51bd27ed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- csv-query (0.1.13)
4
+ csv-query (0.1.14)
5
5
  activerecord
6
6
  charlock_holmes
7
7
  sqlite3
@@ -48,7 +48,7 @@ GEM
48
48
  thread_safe (0.3.6)
49
49
  tzinfo (1.2.5)
50
50
  thread_safe (~> 0.1)
51
- unicode-display_width (1.3.3)
51
+ unicode-display_width (1.4.0)
52
52
 
53
53
  PLATFORMS
54
54
  ruby
data/exe/csv-query CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "csv/query"
4
- Csv::Query.run!
4
+ Csv::Query::CLI.start
data/lib/csv/query.rb CHANGED
@@ -8,112 +8,99 @@ require 'terminal-table'
8
8
 
9
9
  module Csv
10
10
  module Query
11
- # Your code goes here...
12
- def self.run!
13
- file_path, json, sync =
14
- ARGV.getopts(nil, 'file:', 'json', 'sync').values
11
+ class CLI
12
+ # Your code goes here...
13
+ def self.start
14
+ file_path, json, sync =
15
+ ARGV.getopts(nil, 'file:', 'json').values
15
16
 
16
- InMemoryAR.new(file_path, json, sync).run!
17
- end
17
+ InMemoryAR.new(file_path, json).run!
18
+ end
18
19
 
19
- class InMemoryAR
20
- # temporary AR obj
21
- class Record < ActiveRecord::Base
22
- def to_h
23
- h = self.attributes
24
- h.delete("id")
25
- h
20
+ class InMemoryAR
21
+ # temporary AR obj
22
+ class Record < ActiveRecord::Base
23
+ def to_h
24
+ h = self.attributes
25
+ h.delete("id")
26
+ h
27
+ end
26
28
  end
27
- end
28
29
 
29
- # `LP(iphone)`みたいに
30
- # 半角カッコ内にアルファベットだと
31
- # Rubyのsyntax的にsetterと勘違いされるので対策
32
- def header_converter
33
- lambda do |h|
34
- h.gsub('(','(').gsub(')', ')')
30
+ # `LP(iphone)`みたいに
31
+ # 半角カッコ内にアルファベットだと
32
+ # Rubyのsyntax的にsetterと勘違いされるので対策
33
+ def header_converter
34
+ lambda do |h|
35
+ h.gsub('(','(').gsub(')', ')')
36
+ end
35
37
  end
36
- end
37
38
 
38
- def encoding
39
- contents = File.read(file_path)
40
- detection = contents.detect_encoding
41
- detection[:encoding]
42
- end
39
+ def encoding
40
+ contents = File.read(file_path)
41
+ detection = contents.detect_encoding
42
+ detection[:encoding]
43
+ end
43
44
 
44
- def csv
45
- case encoding
46
- when "Shift_JIS"
47
- CSV.read(file_path, encoding: "SJIS:UTF-8", headers: true, header_converters: header_converter)
48
- when "UTF-8"
49
- CSV.read(file_path, encoding: "UTF-8:UTF-8", headers: true, header_converters: header_converter)
50
- when "ISO-8859-1"
51
- CSV.read(file_path, encoding: "ISO8859-1:UTF-8", headers: true, header_converters: header_converter)
45
+ def csv
46
+ case encoding
47
+ when "Shift_JIS"
48
+ CSV.read(file_path, encoding: "SJIS:UTF-8", headers: true, header_converters: header_converter)
49
+ when "UTF-8"
50
+ CSV.read(file_path, encoding: "UTF-8:UTF-8", headers: true, header_converters: header_converter)
51
+ when "ISO-8859-1"
52
+ CSV.read(file_path, encoding: "ISO8859-1:UTF-8", headers: true, header_converters: header_converter)
53
+ end
52
54
  end
53
- end
54
55
 
55
- def csv_headers
56
- csv.headers
57
- end
56
+ def csv_headers
57
+ csv.headers
58
+ end
58
59
 
59
- attr_reader :file_path
60
+ attr_reader :file_path
60
61
 
61
- def initialize(file_path, json, sync)
62
- @sync = sync
63
- @json = json
64
- @file_path = file_path
62
+ def initialize(file_path, json)
63
+ @json = json
64
+ @file_path = file_path
65
65
 
66
- migration(csv_headers)
67
- end
66
+ migration(csv_headers)
67
+ end
68
68
 
69
- def migration csv_headers
70
- ActiveRecord::Migration.verbose = false
69
+ def migration csv_headers
70
+ ActiveRecord::Migration.verbose = false
71
71
 
72
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
72
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
73
73
 
74
- ActiveRecord::Schema.define(:version => 1) do
75
- create_table :records do |t|
76
- csv_headers.map do |column_name|
77
- t.text column_name.to_sym
74
+ ActiveRecord::Schema.define(:version => 1) do
75
+ create_table :records do |t|
76
+ csv_headers.map do |column_name|
77
+ t.text column_name.to_sym
78
+ end
78
79
  end
79
80
  end
80
81
  end
81
- end
82
-
83
- def json_format?
84
- @json
85
- end
86
-
87
- def sync?
88
- @sync
89
- end
90
82
 
91
- def run!
92
- csv.each do |row|
93
- Record.create!(row.to_h)
83
+ def json_format?
84
+ @json
94
85
  end
95
86
 
96
- records = InMemoryAR::Record.all
97
-
98
- export_as_csv(records) if sync?
87
+ def run!
88
+ csv.each do |row|
89
+ Record.create!(row.to_h)
90
+ end
99
91
 
100
- render(records)
101
- end
92
+ records = InMemoryAR::Record.all
102
93
 
103
- def export_as_csv records
104
- CSV.open(file_path, "wb", encoding: encoding, headers: csv_headers, write_headers: true, force_quotes: true) do |csv|
105
- records.each do |record|
106
- csv << record.to_h.values
107
- end
94
+ render(records)
108
95
  end
109
- end
110
96
 
111
- def render records
112
- if json_format?
113
- puts records.map { |e| e.to_h }.to_json
114
- else
115
- rows = records.map { |e| e.to_h.values }
116
- puts Terminal::Table.new :headings => csv_headers, :rows => rows
97
+ def render records
98
+ if json_format?
99
+ puts Array.wrap(records).map { |e| e.to_h }.to_json
100
+ else
101
+ rows = Array.wrap(records).map { |e| e.to_h.values }
102
+ puts Terminal::Table.new :headings => csv_headers, :rows => rows
103
+ end
117
104
  end
118
105
  end
119
106
  end
@@ -1,5 +1,5 @@
1
1
  module Csv
2
2
  module Query
3
- VERSION = "0.1.13"
3
+ VERSION = "0.1.14"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv-query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - naofumi-fujii
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3