-
Notifications
You must be signed in to change notification settings - Fork 0
/
Todo.txt
201 lines (126 loc) · 5.24 KB
/
Todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
Spreadsheet::Perl
=================
insert_rows_columns works only in the same spreadsheet
this can be fixed though, Recalc and use dependents to modify
inter spreadsheet formulas
deletion of cell should update the dependent list
insert_rows_columns check formulas to see if they are inlclusive in the
insertion range. should they check for intersection as Delete_column does?
subs checking if a cell or range is contained or intersect with another range MUST first Canonize the range so named ranges work too
Named cells in insertion/deletion
dependents are stored by name not by reference, thus do not work, yet, with
insert and delete
tests for col/row insertion
if a cell contains a formula calculation error (#ERROR, #REF, ..)
should Sum ingnore it or return an error (better is a value telling
where the error is comming from
should arithmetic formulas consider undefed cells like cells containing 0?
test function are_spreadsheet_values_equal
cache the result of list context CanonizeAddress to speed up things
code is not documented making the API difficult to grasp and use
find a way to move the examples to tests
function to show cell dependencies
in a tree mode with formulas, based on get dependencies. also show the cell
names if any
verification at load time of the formulas could be optional
factorize formula code in STORE/FETCH, is it needed in STORE?
default file format should be perl, writable too (dump streamer?)
function definitions should be object specific, OK as class specific but a choice should exist
debugging mode to show where the functions are called
#!Use new ASCIITAble.
-a column/row stores default value for unset cells ? Use Fetch callback
-spreadsheet (0,0) stores default value for unset cells ? Use Fetch callback
What do we call before we clear the spreadsheet? rows or columns?
DBI interface
R1C1 reference in formulas => $ss{"+1,-3"}
Insertion of rows and columns (=> inter spreadsheet formulas !!)
Sorting (=> formulas !!)
option to invalidate all formulas containing a ref to the deleted row ...
Generate graphs, pies, ..
Composite initialisation type? Composite(PerlFormula(), 7, Format(), ....) ;
Clear(FORMULA, VALUE, FORMAT, ALL) ;
perl debugger support/triggers
#Common format
#register non spreadsheet formulas => builtin functions serialisation
#update serialization
#update deserialisation
#update documentation
#have a formula and a perl_formula field
#write should serialize using multilines if formulas are so written.
#!!!!! accept x\s+,\s+y as address
#-----
#Fix the name export problem
#Symbolic formulas => translator? or simpy refuse it
#Symbolic addressing? partly done through perl.
#function to list the available spreadsheet functions and where they are comming from ?
#keep the list of added functions
#AddFunction can take a text rep for the function
#Read/Write
#Fetch and store sub should have symbolic names that can be used when debugging
#DEBUG::INLINE_INFORMATION
#$ss->Formula( F1, F2, ...) ;
#$ss->{DEBUG}{FETCH} = sub. See {DEBUG}{FETCH_TRIGGER}
#dump to screen in cell form
#handle page width
#redraw the row header if multi page
#dump to html table
#Autofill example
#RE-think AUTOCALC!
#one naming function for range and cell (recursive within call)
#DefineSpreadsheetFunction, remove object function
#No cache at spreadsheet level
#Ref RefNoCache
#run the formulas in script namespace ? => No
range limit ('B*'), what are the semantics of '*'?
#Find
[addresses] = Find(regexes and/or subs, range[s]),
@adresses = map{$_->[0] ;}
grep{test($_->[1])}
map{[$_, $ss->Get($_)]} $ss->GetAddressList(@ranges) ;
@values = grep{test($_) ;} map{$ss->Get($_)} $ss->GetAddressList(@ranges) ;
#Replace
scalar = FindAndReplace(sub, ranges)
Perl debugger support: breakpoint ...
#Change DATA to CELLS
#$ss{A9.USER_DATA} ;
#Store callback
#$ss->{DEBUG}{FETCH_CELL}{A1}++ /= sub ; # display message when 'A1' is fetched
#!AddFormat should be deep => user can get the format and modify it
#Let range share validators
#Range fillers
#a range is a spreadsheet (?) => fetching a range returns a list with alll the values
#inter spreadsheet references ? Spreadsheets have names: 'main:A3:B7'
#$ss->AddSpreadsheet('name', reference_to_object) ;
#$ss->SetName, $ss->GetName
#sorting of cell names
#inter spreadsheets dependencies ??
#inter spreadsheets cycles ??
#Relative references : A1 and Absolute references : $A$1 in formulas
# => absolute is '[A][1]'
#F:OffsetFormula, GetAddressOffset (x,y)
#F:Copy, Copy(address/range) / Paste => easily done through hash slices
modules: DBI URL-GET statistique ....
modules: printing html-generation ImportExcel ...
modules: autofill wizards ...
#Fetchers => sub
#Input validator => Add by name (lock is one)
#Spreadsheet::Perl::Arithmetic::Sum ...
#Spreadsheet::Perl::Arithmetic::Sum should take a list of ranges
#row 0 is the header row
#formulas are pure perl
#formula defintions
#function definitions
#constructor arguments
#setting through a data struct
#dump
#each cell is a hash internaly
#named cell and range
#locking per cell
#format
#AUTOCALC
#no cycles are allowed (we can use the new cyclic module)
#compute cells when needed only
#dependencies changes mark the cell as needing update
#sorting of cell names
#F:GetCellList
#F:GetLastIndexes