/usr/share/gnucash/scm/gnumeric/table-utils.scm is in gnucash-common 1:2.6.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | (define (make-table-collector)
(let ;;; variable slots
((total 0) ;;; Numeric total
(rows '()) ;;; Collection of items into total
(count 0)) ;;; Number of elements
(let
((adder (lambda (amount pos)
(set! total (+ total amount))
(set! rows (cons pos rows))
(set! count (+ count 1))))
(gettotal (lambda () total))
(getcount (lambda () count))
(getrows (lambda () rows))
(resetall (lambda ()
(set! total 0)
(set! rows '())
(set! count 0))))
(lambda (action value . rowdata)
(case action
((add) (adder value rowdata))
((total) (gettotal))
((getcount) (getcount))
((getrows) (getrows))
((reset) (resetall)))))))
;;; Here's how it looks:
; > (define a (make-table-collector))
; > (a 'add 2)
; > (a 'add 4 5 6)
; > (a 'add 6 7 8)
; > (a 'add 9 10)
; > (a 'getcount #f)
; 4
; > (a 'total #f)
; 21
; > (a 'getrows #f)
; ((10) (7 8) (5 6) ())
; > (a 'reset #f)
; > (list (a 'getcount #f) (a 'total #f) (a 'getrows #f))
; (0 0 ())
; >
|