yomise 0.1.4 → 0.1.6
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 +4 -4
- data/Gemfile.lock +68 -0
- data/lib/to_csv.rb +48 -4
- data/lib/yomise/version.rb +1 -1
- data/lib/yomise.rb +38 -0
- data/yomise-0.1.4.gem +0 -0
- metadata +18 -3
- data/yomise.gemspec +0 -46
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 78002d4377a1d60ce69069176ade33417a2c3a5f314219ad4cc4f7478901ab3c
|
|
4
|
+
data.tar.gz: d305b232bef804cef56c2cf176ad09d76cea221285241bcaabbb742d77ae6e2f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37211454371d320e095c374971a00d57d810521ee4eb61c31818956875b24e52685171b5425ec5cdcd4517090e8832506d24ef736ed6ba67149af2d6847caf3f
|
|
7
|
+
data.tar.gz: 65cc563278294f8da1860cd76c2f8e408043e93374b95e93a84a59d494c58c5869ed3e75772965f4bb9f90351bb24a24a11e284700a30af3e6390ee0188f0aa9
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
yomise (0.1.6)
|
|
5
|
+
daru (>= 0.3)
|
|
6
|
+
matrix
|
|
7
|
+
roo-xls (>= 1.2.0)
|
|
8
|
+
rover-df (>= 0.2.7)
|
|
9
|
+
rubyXL (>= 3.4.27)
|
|
10
|
+
smarter_csv (>= 1.4.2)
|
|
11
|
+
spreadsheet (>= 1.3.0)
|
|
12
|
+
|
|
13
|
+
GEM
|
|
14
|
+
remote: https://rubygems.org/
|
|
15
|
+
specs:
|
|
16
|
+
bigdecimal (4.1.2)
|
|
17
|
+
daru (0.3)
|
|
18
|
+
packable (~> 1.3.13)
|
|
19
|
+
diff-lcs (1.6.2)
|
|
20
|
+
matrix (0.4.2)
|
|
21
|
+
nokogiri (1.19.0-x64-mingw-ucrt)
|
|
22
|
+
racc (~> 1.4)
|
|
23
|
+
numo-narray (0.9.2.1)
|
|
24
|
+
packable (1.3.18)
|
|
25
|
+
racc (1.8.1)
|
|
26
|
+
rake (13.4.2)
|
|
27
|
+
roo (2.10.1)
|
|
28
|
+
nokogiri (~> 1)
|
|
29
|
+
rubyzip (>= 1.3.0, < 3.0.0)
|
|
30
|
+
roo-xls (1.2.0)
|
|
31
|
+
nokogiri
|
|
32
|
+
roo (>= 2.0.0, < 3)
|
|
33
|
+
spreadsheet (> 0.9.0)
|
|
34
|
+
rover-df (0.4.0)
|
|
35
|
+
numo-narray (>= 0.9.1.9)
|
|
36
|
+
rspec (3.13.2)
|
|
37
|
+
rspec-core (~> 3.13.0)
|
|
38
|
+
rspec-expectations (~> 3.13.0)
|
|
39
|
+
rspec-mocks (~> 3.13.0)
|
|
40
|
+
rspec-core (3.13.6)
|
|
41
|
+
rspec-support (~> 3.13.0)
|
|
42
|
+
rspec-expectations (3.13.5)
|
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
44
|
+
rspec-support (~> 3.13.0)
|
|
45
|
+
rspec-mocks (3.13.8)
|
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
47
|
+
rspec-support (~> 3.13.0)
|
|
48
|
+
rspec-support (3.13.7)
|
|
49
|
+
ruby-ole (1.2.13.1)
|
|
50
|
+
rubyXL (3.4.34)
|
|
51
|
+
nokogiri (>= 1.10.8)
|
|
52
|
+
rubyzip (~> 2.4)
|
|
53
|
+
rubyzip (2.4.1)
|
|
54
|
+
smarter_csv (1.12.1)
|
|
55
|
+
spreadsheet (1.3.1)
|
|
56
|
+
bigdecimal
|
|
57
|
+
ruby-ole
|
|
58
|
+
|
|
59
|
+
PLATFORMS
|
|
60
|
+
x64-mingw-ucrt
|
|
61
|
+
|
|
62
|
+
DEPENDENCIES
|
|
63
|
+
rake (~> 13.0)
|
|
64
|
+
rspec (~> 3.0)
|
|
65
|
+
yomise!
|
|
66
|
+
|
|
67
|
+
BUNDLED WITH
|
|
68
|
+
2.5.23
|
data/lib/to_csv.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require "daru"
|
|
2
2
|
require "rover"
|
|
3
|
+
require "roo"
|
|
3
4
|
|
|
4
5
|
class Daru::DataFrame
|
|
5
6
|
def to_csv()
|
|
@@ -85,7 +86,7 @@ class Daru::DataFrame
|
|
|
85
86
|
return piv
|
|
86
87
|
|
|
87
88
|
end
|
|
88
|
-
|
|
89
|
+
|
|
89
90
|
def to_rover
|
|
90
91
|
Rover::DataFrame.new(self.to_a[0])
|
|
91
92
|
end
|
|
@@ -111,10 +112,53 @@ class Rover::DataFrame
|
|
|
111
112
|
return piv.to_rover
|
|
112
113
|
end
|
|
113
114
|
|
|
114
|
-
def outer_join
|
|
115
|
+
def outer_join(other, **kwargs)
|
|
115
116
|
ddr = self.to_daru
|
|
116
|
-
|
|
117
|
+
odr = self.to_daru
|
|
118
|
+
j = ddr.join(how: :outer, **kwargs) ## 外部結合
|
|
117
119
|
return j.to_rover
|
|
118
120
|
end
|
|
119
|
-
|
|
121
|
+
|
|
122
|
+
def map(&block)
|
|
123
|
+
self.to_a.map(&block)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def categorize(col)
|
|
127
|
+
if col.is_a?(Array)
|
|
128
|
+
self[col].to_a.uniq
|
|
129
|
+
else
|
|
130
|
+
self[[col]].to_a.uniq
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def get_category(categ)
|
|
135
|
+
a = self[categ.each_key.to_a].to_a
|
|
136
|
+
mask = a.filter_map.with_index {|v, i| i if v == categ }
|
|
137
|
+
return self[mask]
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
## Roverのleft_joinをエラー回避
|
|
141
|
+
def left_join_rev(other, on:)
|
|
142
|
+
left_rows = self.to_a
|
|
143
|
+
right_rows = other.to_a
|
|
144
|
+
|
|
145
|
+
right_map = right_rows.each_with_object({}) do |row, map|
|
|
146
|
+
map[row[on]] = row
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
result_rows = []
|
|
150
|
+
|
|
151
|
+
left_rows.each do |l_row|
|
|
152
|
+
key = l_row[on]
|
|
153
|
+
r_row = right_map[key]
|
|
154
|
+
|
|
155
|
+
if r_row
|
|
156
|
+
result_rows << l_row.merge(r_row)
|
|
157
|
+
else
|
|
158
|
+
result_rows << l_row
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
Rover::DataFrame.new(result_rows)
|
|
163
|
+
end
|
|
120
164
|
end
|
data/lib/yomise/version.rb
CHANGED
data/lib/yomise.rb
CHANGED
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
require "csv"
|
|
3
3
|
require "roo-xls"
|
|
4
4
|
require "spreadsheet"
|
|
5
|
+
require "rubyXL"
|
|
5
6
|
require "rover"
|
|
6
7
|
require "daru"
|
|
7
8
|
require_relative "./to_csv"
|
|
8
9
|
require_relative "./longest_line"
|
|
9
10
|
require_relative "yomise/version"
|
|
10
11
|
|
|
12
|
+
## 欲しい: DateTimeをいい感じのメソッドに変える
|
|
13
|
+
## 2列目以降ならこんな感じ
|
|
14
|
+
# piv.vectors.to_a[1..].each do |c|
|
|
15
|
+
# piv[c] = piv[c].map { _1.to_s.gsub("T", " ").gsub("+00:00", "")}
|
|
16
|
+
# end
|
|
17
|
+
|
|
18
|
+
## joinで列順変更不要のものが欲しい
|
|
19
|
+
|
|
20
|
+
# write_excelでDF横並び、縦並びも可にしたい
|
|
21
|
+
|
|
11
22
|
module Yomise
|
|
12
23
|
class Error < StandardError; end
|
|
13
24
|
|
|
@@ -244,6 +255,33 @@ module Yomise
|
|
|
244
255
|
end
|
|
245
256
|
end
|
|
246
257
|
|
|
258
|
+
def write_excel(dfs, filename, sheetnames: nil)
|
|
259
|
+
|
|
260
|
+
dfs = [dfs] if !dfs.is_a?(Array)
|
|
261
|
+
if sheetnames.nil?
|
|
262
|
+
sheetnames = dfs.map.with_index {|d, i| "sheet#{i+1}" }
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
workbook = RubyXL::Workbook.new
|
|
266
|
+
|
|
267
|
+
dfs.each_with_index do |df, idx|
|
|
268
|
+
worksheet = workbook.add_worksheet(
|
|
269
|
+
sheetnames.length <= idx ? "sheet#{idx}" : sheetnames[idx].to_s
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
df.to_h.each_with_index do |(key, itms), coli|
|
|
273
|
+
worksheet.add_cell(0, coli, key)
|
|
274
|
+
itms.each_with_index do |itm, linei|
|
|
275
|
+
worksheet.add_cell(linei+1, coli, itm.to_s)
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
workbook.worksheets.delete_at(0)
|
|
281
|
+
workbook.write(filename)
|
|
282
|
+
|
|
283
|
+
end
|
|
284
|
+
|
|
247
285
|
# Fix Array (Replace specific values to nil, recognize value type and cast values to the type.)
|
|
248
286
|
def fix_array(array2d, replaced_by_nil, analyze_type)
|
|
249
287
|
ans = array2d
|
data/yomise-0.1.4.gem
ADDED
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yomise
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- showata
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-08-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: daru
|
|
@@ -66,6 +66,20 @@ dependencies:
|
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 1.2.0
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubyXL
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 3.4.27
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 3.4.27
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: spreadsheet
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -105,6 +119,7 @@ files:
|
|
|
105
119
|
- ".rspec"
|
|
106
120
|
- CODE_OF_CONDUCT.md
|
|
107
121
|
- Gemfile
|
|
122
|
+
- Gemfile.lock
|
|
108
123
|
- LICENSE.txt
|
|
109
124
|
- README.md
|
|
110
125
|
- Rakefile
|
|
@@ -113,7 +128,7 @@ files:
|
|
|
113
128
|
- lib/yomise.rb
|
|
114
129
|
- lib/yomise/version.rb
|
|
115
130
|
- sig/yomise.rbs
|
|
116
|
-
- yomise.
|
|
131
|
+
- yomise-0.1.4.gem
|
|
117
132
|
homepage: https://github.com/show-o-atakun/yomise
|
|
118
133
|
licenses:
|
|
119
134
|
- MIT
|
data/yomise.gemspec
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "lib/yomise/version"
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name = "yomise"
|
|
7
|
-
spec.version = Yomise::VERSION
|
|
8
|
-
spec.authors = ["showata"]
|
|
9
|
-
spec.email = ["shun_yamaguchi_tc@live.jp"]
|
|
10
|
-
|
|
11
|
-
spec.summary = "A simple way to Open .csv, .xls, .xlsx files. (formerly easy_sheet_io)"
|
|
12
|
-
spec.description = "A simple way to Open .csv, .xls, .xlsx files. You can convert it to 2D array, hash, data frame."
|
|
13
|
-
spec.homepage = "https://github.com/show-o-atakun/yomise"
|
|
14
|
-
spec.license = "MIT"
|
|
15
|
-
spec.required_ruby_version = ">= 3.0.0"
|
|
16
|
-
|
|
17
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
|
18
|
-
spec.metadata["source_code_uri"] = "https://github.com/show-o-atakun/yomise"
|
|
19
|
-
|
|
20
|
-
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
|
21
|
-
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
|
22
|
-
|
|
23
|
-
# Specify which files should be added to the gem when it is released.
|
|
24
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
25
|
-
spec.files = Dir.chdir(__dir__) do
|
|
26
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
|
27
|
-
(File.expand_path(f) == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
spec.bindir = "exe"
|
|
31
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
32
|
-
spec.require_paths = ["lib"]
|
|
33
|
-
|
|
34
|
-
spec.add_dependency "daru", ">= 0.3"
|
|
35
|
-
spec.add_dependency "rover-df", ">= 0.2.7"
|
|
36
|
-
spec.add_dependency "smarter_csv", ">= 1.4.2"
|
|
37
|
-
spec.add_dependency "roo-xls", ">= 1.2.0"
|
|
38
|
-
spec.add_dependency "spreadsheet", ">= 1.3.0"
|
|
39
|
-
spec.add_dependency "matrix"
|
|
40
|
-
|
|
41
|
-
# Uncomment to register a new dependency of your gem
|
|
42
|
-
# spec.add_dependency "example-gem", "~> 1.0"
|
|
43
|
-
|
|
44
|
-
# For more information and examples about making a new gem, check out our
|
|
45
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
|
46
|
-
end
|