rukbat 0.1.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.
data/lib/rukbat.rb ADDED
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "rukbat/version"
4
+ require "csv"
5
+ require "denebola"
6
+ require "furud"
7
+ require "menkar"
8
+ require "okab"
9
+ require "spica"
10
+ require "xamidimura"
11
+ require "zaniah"
12
+ require "zaniah/ui"
13
+ require_relative "rukbat/atomic_file"
14
+ require_relative "rukbat/cell_source"
15
+ require_relative "rukbat/workbook"
16
+ require_relative "rukbat/csv_file"
17
+ require_relative "rukbat/pdf_file"
18
+ require_relative "rukbat/grid_view"
19
+ require_relative "rukbat/application"
20
+
21
+ module Rukbat
22
+ class Error < StandardError; end
23
+ end
data/sig/rukbat.rbs ADDED
@@ -0,0 +1,118 @@
1
+ module Rukbat
2
+ VERSION: String
3
+
4
+ class Error < StandardError
5
+ end
6
+
7
+ class CellSource
8
+ def initialize: (Workbook workbook) -> void
9
+ def value_at: (Furud::Reference reference) -> untyped
10
+ def each_in: (Furud::Area area) -> Enumerator[[Furud::Reference, untyped], self]
11
+ | (Furud::Area area) { (Furud::Reference reference, untyped value) -> void } -> self
12
+ end
13
+
14
+ class Workbook
15
+ MAX_ROWS: Integer
16
+ MAX_COLUMNS: Integer
17
+
18
+ class CellRange
19
+ attr_reader top: Integer
20
+ attr_reader left: Integer
21
+ attr_reader bottom: Integer
22
+ attr_reader right: Integer
23
+ def include?: (Integer row, Integer column) -> bool
24
+ end
25
+
26
+ class Summary
27
+ attr_reader count: Integer
28
+ attr_reader numeric_count: Integer
29
+ attr_reader sum: Numeric
30
+ attr_reader min: Numeric?
31
+ attr_reader max: Numeric?
32
+ attr_reader average: Float?
33
+ attr_reader types: Hash[Class, Integer]
34
+ end
35
+
36
+ attr_reader active_sheet: String
37
+
38
+ def self.from_rows: (Enumerable[Array[untyped]] rows, ?sheet: String) -> Workbook
39
+ def initialize: (?sheet: String) -> void
40
+ def on_cells_changed: () { (String? sheet, Array[[Integer, Integer]] | CellRange | nil cells) -> void } -> Proc
41
+ def remove_cells_changed_observer: (Proc observer) -> Proc?
42
+ def sheet_names: () -> Array[String]
43
+ def sheet: (?String name) -> Denebola::Sheet
44
+ def activate: (String name) -> String
45
+ def add_sheet: (String name) -> String
46
+ def remove_sheet: (String name) -> self
47
+ def []: (Integer row, Integer column, ?sheet: String) -> untyped
48
+ def input_at: (Integer row, Integer column, ?sheet: String?) -> untyped
49
+ def formula: (Integer row, Integer column, ?sheet: String) -> String?
50
+ def set: (Integer row, Integer column, untyped value, ?sheet: String) -> self
51
+ def set_many: (Enumerable[Array[untyped]] changes, ?sheet: String) -> self
52
+ def clear: (Integer row, Integer column, ?sheet: String) -> self
53
+ def each_in: (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) -> Enumerator[[Furud::Reference, untyped], self]
54
+ | (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) { (Furud::Reference reference, untyped value) -> void } -> self
55
+ def summary: (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) -> Summary
56
+ def define_name: (String name, Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) -> Furud::Area
57
+ def find: (String query, ?top: Integer, ?left: Integer, ?bottom: Integer, ?right: Integer, ?sheet: String) -> Array[Furud::Reference]
58
+ def filter_rows: (Integer top, Integer bottom, by: Integer, query: String, ?sheet: String) -> Array[Integer]
59
+ def replace_all: (String query, String replacement, ?top: Integer, ?left: Integer, ?bottom: Integer, ?right: Integer, ?sheet: String) -> Integer
60
+ def sort: (Integer top, Integer left, Integer bottom, Integer right, by: Integer, ?ascending: bool, ?sheet: String) -> self
61
+ def remove_duplicates: (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) -> Integer
62
+ def translate_formula: (String value, from: Furud::Reference, to: Furud::Reference) -> String
63
+ def format_range: (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String, **untyped properties) -> self
64
+ def format_at: (Integer row, Integer column, ?sheet: String) -> Hash[Symbol, untyped]
65
+ def presentation_at: (Integer row, Integer column, ?sheet: String) -> [String, Hash[Symbol, untyped]]
66
+ def set_comment: (Integer row, Integer column, String? text, ?sheet: String) -> self
67
+ def comment_at: (Integer row, Integer column, ?sheet: String) -> String?
68
+ def add_conditional_format: (Integer top, Integer left, Integer bottom, Integer right, operator: Symbol | String, value: untyped, style: Hash[Symbol, untyped], ?sheet: String) -> self
69
+ def clear_conditional_formats: (?sheet: String) -> self
70
+ def hide_rows: (Integer top, ?Integer bottom, ?hidden: bool, ?sheet: String) -> self
71
+ def hide_columns: (Integer left, ?Integer right, ?hidden: bool, ?sheet: String) -> self
72
+ def row_hidden?: (Integer row, ?sheet: String) -> bool
73
+ def column_hidden?: (Integer column, ?sheet: String) -> bool
74
+ def hidden_rows: (?sheet: String) -> Array[Integer]
75
+ def hidden_columns: (?sheet: String) -> Array[Integer]
76
+ def clear_hidden: (:rows | :columns axis, ?sheet: String) -> self
77
+ def set_frozen_panes: (rows: Integer, columns: Integer, ?sheet: String) -> self
78
+ def frozen_panes: (?sheet: String) -> [Integer, Integer]
79
+ def set_print_area: (Integer top, Integer left, Integer bottom, Integer right, ?sheet: String) -> Furud::Area
80
+ def clear_print_area: (?sheet: String) -> self
81
+ def print_area: (?sheet: String) -> Furud::Area?
82
+ def insert_rows: (Integer at, ?Integer count, ?sheet: String) -> self
83
+ def delete_rows: (Integer at, ?Integer count, ?sheet: String) -> self
84
+ def insert_columns: (Integer at, ?Integer count, ?sheet: String) -> self
85
+ def delete_columns: (Integer at, ?Integer count, ?sheet: String) -> self
86
+ def undo: () -> bool
87
+ def redo: () -> bool
88
+ def source_digest_for: (String path) -> (String | Symbol)
89
+ end
90
+
91
+ module CSVFile
92
+ def self.read: (String path, ?delimiter: Symbol | String, ?sheet: String, ?hint: String | Encoding) -> Workbook
93
+ def self.write: (Workbook workbook, String path, ?delimiter: Symbol | String, ?sheet: String, ?values: Symbol, ?expected_digest: String | Symbol | nil) -> String
94
+ def self.parse_cell: (String value) -> untyped
95
+ end
96
+
97
+ module PDFFile
98
+ def self.render: (Workbook workbook, font: untyped, ?sheet: String, ?font_db: untyped) -> String
99
+ def self.write: (Workbook workbook, String path, font: untyped, ?sheet: String, ?font_db: untyped) -> String
100
+ end
101
+
102
+ class GridView
103
+ def initialize: (Workbook workbook, ?on_save: untyped) -> void
104
+ def undo: () -> bool
105
+ def redo: () -> bool
106
+ def handle_shortcut: (untyped event, untyped window) -> bool
107
+ def apply_edit: () -> bool
108
+ end
109
+
110
+ class Application
111
+ attr_reader workbook: Workbook
112
+ attr_reader path: String
113
+ attr_reader view: GridView
114
+ def initialize: (workbook: Workbook, path: String, ?delimiter: Symbol, ?backend: Symbol) -> void
115
+ def run: () -> untyped
116
+ def save: () -> String
117
+ end
118
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rukbat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: denebola
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.3.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.3.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: csv
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.3'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.3'
40
+ - !ruby/object:Gem::Dependency
41
+ name: furud
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.1.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.1.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: gienah
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.1.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 0.1.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: kochab
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.2.0
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.2.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: menkar
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.1.0
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.1.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: okab
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.1.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.1.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: spica
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 0.1.0
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.1.0
124
+ - !ruby/object:Gem::Dependency
125
+ name: xamidimura
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.1.0
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.1.0
138
+ - !ruby/object:Gem::Dependency
139
+ name: zaniah
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.6.0
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 0.6.0
152
+ description: A Ruby spreadsheet app built on persistent sparse sheets and the Furud
153
+ calculation engine.
154
+ email:
155
+ - t.yudai92@gmail.com
156
+ executables:
157
+ - rukbat
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - CHANGELOG.md
162
+ - LICENSE.txt
163
+ - README.md
164
+ - exe/rukbat
165
+ - lib/rukbat.rb
166
+ - lib/rukbat/application.rb
167
+ - lib/rukbat/atomic_file.rb
168
+ - lib/rukbat/cell_source.rb
169
+ - lib/rukbat/csv_file.rb
170
+ - lib/rukbat/grid_view.rb
171
+ - lib/rukbat/pdf_file.rb
172
+ - lib/rukbat/version.rb
173
+ - lib/rukbat/workbook.rb
174
+ - sig/rukbat.rbs
175
+ homepage: https://github.com/noxdea/rukbat
176
+ licenses:
177
+ - MIT
178
+ metadata:
179
+ allowed_push_host: https://rubygems.org
180
+ homepage_uri: https://github.com/noxdea/rukbat
181
+ source_code_uri: https://github.com/noxdea/rukbat/tree/main
182
+ changelog_uri: https://github.com/noxdea/rukbat/blob/main/CHANGELOG.md
183
+ rubygems_mfa_required: 'true'
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 3.2.0
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubygems_version: 4.0.16
199
+ specification_version: 4
200
+ summary: Spreadsheet application with sparse storage and incremental formulas
201
+ test_files: []