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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +100 -0
- data/exe/rukbat +37 -0
- data/lib/rukbat/application.rb +37 -0
- data/lib/rukbat/atomic_file.rb +11 -0
- data/lib/rukbat/cell_source.rb +25 -0
- data/lib/rukbat/csv_file.rb +125 -0
- data/lib/rukbat/grid_view.rb +847 -0
- data/lib/rukbat/pdf_file.rb +163 -0
- data/lib/rukbat/version.rb +5 -0
- data/lib/rukbat/workbook.rb +1045 -0
- data/lib/rukbat.rb +23 -0
- data/sig/rukbat.rbs +118 -0
- metadata +201 -0
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: []
|