File: generate-openformula-missing.py

package info (click to toggle)
calligra 1%3A2.4.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 290,028 kB
  • sloc: cpp: 1,105,019; xml: 24,940; ansic: 11,807; python: 8,457; perl: 2,792; sh: 1,507; yacc: 1,307; ruby: 1,248; sql: 903; lex: 455; makefile: 89
file content (418 lines) | stat: -rwxr-xr-x 3,829 bytes parent folder | download | duplicates (8)
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
#!/usr/bin/env python

import sys, os, re

functions = """
MDETERM
MINVERSE
MMULT
MUNIT
SUMPRODUCT
SUMX2MY2
SUMX2PY2
SUMXMY2
TRANSPOSE
BITAND
BITLSHIFT
BITOR
BITRSHIFT
BITXOR
FINDB
LEFTB
LENB
MIDB
REPLACEB
RIGHTB
SEARCHB
COMPLEX
IMABS
IMAGINARY
IMARGUMENT
IMCONJUGATE
IMCOS
IMCOT
IMCSC
IMCSCH
IMDIV
IMEXP
IMLN
IMLOG10
IMLOG2
IMPOWER
IMPRODUCT
IMREAL
IMSIN
IMSEC
IMSECH
IMSQRT
IMSUB
IMSUM
IMTAN
DAVERAGE
DCOUNT
DCOUNTA
DGET
DMAX
DMIN
DPRODUCT
DSTDEV
DSTDEVP
DSUM
DVAR
DVARP
DATE
DATEDIF
DATEVALUE
DAY
DAYS
DAYS360
EDATE
EOMONTH
HOUR
ISOWEEKNUM
MINUTE
MONTH
NETWORKDAYS
NOW
SECOND
TIME
TIMEVALUE
TODAY
WEEKDAY
WEEKNUM
WORKDAY
YEAR
YEARFRAC
External
DDE
HYPERLINK
ACCRINT
ACCRINTM
AMORDEGRC
AMORLINC
COUPDAYBS
COUPDAYS
COUPDAYSNC
COUPNCD
COUPNUM
COUPPCD
CUMIPMT
CUMPRINC
DB
DDB
DISC
DOLLARDE
DOLLARFR
DURATION
EFFECT
FV
FVSCHEDULE
INTRATE
IPMT
IRR
ISPMT
MDURATION
MIRR
NOMINAL
NPER
NPV
ODDFPRICE
ODDFYIELD
ODDLPRICE
ODDLYIELD
PDURATION
PMT
PPMT
PRICE
PRICEDISC
PRICEMAT
PV
RATE
RECEIVED
RRI
SLN
SYD
TBILLEQ
TBILLPRICE
TBILLYIELD
VDB
XIRR
XNPV
YIELD
YIELDDISC
YIELDMAT
AREAS
CELL
COLUMN
COLUMNS
COUNT
COUNTA
COUNTBLANK
COUNTIF
COUNTIFS
ERROR.TYPE
FORMULA
INFO
ISBLANK
ISERR
ISERROR
ISEVEN
ISFORMULA
ISLOGICAL
ISNA
ISNONTEXT
ISNUMBER
ISODD
ISREF
ISTEXT
N
NA
NUMBERVALUE
ROW
ROWS
SHEET
SHEETS
TYPE
VALUE
ADDRESS
CHOOSE
GETPIVOTDATA
HLOOKUP
INDEX
INDIRECT
LOOKUP
MATCH
MULTIPLE.OPERATIONS
OFFSET
VLOOKUP
AND
FALSE
IF
IFERROR
IFNA
NOT
OR
TRUE
XOR
ABS
ACOS
ACOSH
ACOT
ACOTH
ASIN
ASINH
ATAN
ATAN2
ATANH
BESSELI
BESSELJ
BESSELK
BESSELY
COMBIN
COMBINA
CONVERT
COS
COSH
COT
COTH
CSC
CSCH
DEGREES
DELTA
ERF
ERFC
EUROCONVERT
EVEN
EXP
FACT
FACTDOUBLE
GAMMA
GAMMALN
GCD
GESTEP
LCM
LN
LOG
LOG10
MOD
MULTINOMIAL
ODD
PI
POWER
PRODUCT
QUOTIENT
RADIANS
RAND
RANDBETWEEN
SEC
SERIESSUM
SIGN
SIN
SINH
SECH
SQRT
SQRTPI
SUBTOTAL
SUM
SUMIF
SUMIFS
SUMSQ
TAN
TANH
CEILING
INT
FLOOR
MROUND
ROUND
ROUNDDOWN
ROUNDUP
TRUNC
AVEDEV
AVERAGE
AVERAGEA
AVERAGEIF
AVERAGEIFS
B
BETADIST
BETAINV
BINOMDIST
LEGACY.CHIDIST
CHISQDIST
LEGACY.CHIINV
CHISQINV
LEGACY.CHITEST
CONFIDENCE
CORREL
COVAR
CRITBINOM
DEVSQ
EXPONDIST
FDIST
LEGACY.FDIST
FINV
LEGACY.FINV
FISHER
FISHERINV
FORECAST
FREQUENCY
FTEST
GAMMADIST
GAMMAINV
GAUSS
GEOMEAN
GROWTH
HARMEAN
HYPGEOMDIST
INTERCEPT
KURT
LARGE
LINEST
LOGEST
LOGINV
LOGNORMDIST
MAX
MAXA
MEDIAN
MIN
MINA
MODE
NEGBINOMDIST
NORMDIST
NORMINV
LEGACY.NORMSDIST
LEGACY.NORMSINV
PEARSON
PERCENTILE
PERCENTRANK
PERMUT
PERMUTATIONA
PHI
POISSON
PROB
QUARTILE
RANK
RSQ
SKEW
SKEWP
SLOPE
SMALL
STANDARDIZE
STDEV
STDEVA
STDEVP
STDEVPA
STEYX
TDIST
TINV
TREND
TRIMMEAN
TTEST
VAR
VARA
VARP
VARPA
WEIBULL
ZTEST
ARABIC
BASE
BIN2DEC
BIN2HEX
BIN2OCT
DEC2BIN
DEC2HEX
DEC2OCT
DECIMAL
HEX2BIN
HEX2DEC
HEX2OCT
OCT2BIN
OCT2DEC
OCT2HEX
ROMAN
ASC
CHAR
CLEAN
CODE
CONCATENATE
DOLLAR
EXACT
FIND
FIXED
JIS
LEFT
LEN
LOWER
MID
PROPER
REPLACE
REPT
RIGHT
SEARCH
SUBSTITUTE
T
TEXT
TRIM
"""

def functionName(name):
    #return name.strip().lower()
    return name.strip().replace('.','').replace('_','').lower()

functions1 = [ functionName(line) for line in [ k for k in [ i.strip() for i in functions.split("\n") ] if len(k)>0 ] ]

functions2 = []
path = os.path.join(os.path.split(sys.argv[0])[0],"../functions")
for n in [ f for f in os.listdir(path) if f.endswith(".cpp") ]:
    f = open(os.path.join(path,n), 'r')
    for t in [t.strip() for t in f.read().split("\n") ]:
        m = re.search('(?!//|/\*).*new\s+Function\s*\(\s*\"(.+)\"', t)
        if m:
            functions2.append( functionName(m.group(1)) )
        else:
            m = re.search('(?!//|/\*).*\-\>\s*setAlternateName\s*\(\s*\"(.+)\"', t)
            if m:
                functions2.append( functionName(m.group(1)) )

diff = list(set(functions1).difference(set(functions2)))
diff.sort()
print "%s missing OpenFormula functions (%s available):\n%s" % (len(diff), len(functions2), " ".join(diff))