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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 418a1e67d38ecedba57cebe0541714e07798e72aa4afb8b8e3905a37c344e028
4
- data.tar.gz: faeb8d2493510263951fc36f04d70a0cd51c6745b65dba2486b2ed02f836d1ed
3
+ metadata.gz: 78002d4377a1d60ce69069176ade33417a2c3a5f314219ad4cc4f7478901ab3c
4
+ data.tar.gz: d305b232bef804cef56c2cf176ad09d76cea221285241bcaabbb742d77ae6e2f
5
5
  SHA512:
6
- metadata.gz: 13d7cfb3b29bb0ecb86ccd53467f061de2d32d30ce9f540e4835455549d4b9f51d126e0482beef878c3cff10def5a26dd6ed3786d31a6083730df4f91f55a559
7
- data.tar.gz: 1a94e63ee73ab320495e5a0f52724e698ee63b81b8e554bf003ba294a087f151e058040676ef79733b6733103c73308a143638b5f02ad65802e08ffc21feffee
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
- # j = ddr.join ## 外部結合
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yomise
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.6"
5
5
  end
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
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-05-05 00:00:00.000000000 Z
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.gemspec
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