diff --git a/gnucash/report/html-style-sheet.scm b/gnucash/report/html-style-sheet.scm index 9a05c31169..5fb0b1a677 100644 --- a/gnucash/report/html-style-sheet.scm +++ b/gnucash/report/html-style-sheet.scm @@ -21,42 +21,30 @@ ;; Boston, MA 02110-1301, USA gnu@gnu.org ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(use-modules (srfi srfi-9)) (use-modules (ice-9 match)) (use-modules (gnucash core-utils)) (define *gnc:_style-sheet-templates_* (make-hash-table 23)) (define *gnc:_style-sheets_* (make-hash-table 23)) -(define - (make-record-type "" - '(version name options-generator renderer))) +(define-record-type + (make-ss-template version name options-generator renderer) + ss-template? + (version ss-template-version ss-template-set-version!) + (name ss-template-name ss-template-set-name!) + (options-generator ss-template-options-generator ss-template-set-options-generator!) + (renderer ss-template-renderer ss-template-set-renderer!)) -(define gnc:html-style-sheet-template? - (record-predicate )) - -(define gnc:html-style-sheet-template-version - (record-accessor 'version)) - -(define gnc:html-style-sheet-template-set-version! - (record-modifier 'version)) - -(define gnc:html-style-sheet-template-name - (record-accessor 'name)) - -(define gnc:html-style-sheet-template-set-name! - (record-modifier 'name)) - -(define gnc:html-style-sheet-template-options-generator - (record-accessor 'options-generator)) - -(define gnc:html-style-sheet-template-set-options-generator! - (record-modifier 'options-generator)) - -(define gnc:html-style-sheet-template-renderer - (record-accessor 'renderer)) - -(define gnc:html-style-sheet-template-set-renderer! - (record-modifier 'renderer)) +(define gnc:html-style-sheet-template? ss-template?) +(define gnc:html-style-sheet-template-version ss-template-version) +(define gnc:html-style-sheet-template-set-version! ss-template-set-version!) +(define gnc:html-style-sheet-template-name ss-template-name) +(define gnc:html-style-sheet-template-set-name! ss-template-set-name!) +(define gnc:html-style-sheet-template-options-generator ss-template-options-generator) +(define gnc:html-style-sheet-template-set-options-generator! ss-template-set-options-generator!) +(define gnc:html-style-sheet-template-renderer ss-template-renderer) +(define gnc:html-style-sheet-template-set-renderer! ss-template-set-renderer!) (define (gnc:html-style-sheet-template-find tname) (hash-ref *gnc:_style-sheet-templates_* tname)) @@ -68,56 +56,38 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (gnc:define-html-style-sheet . args) - (let loop ((args args) - (ss ((record-constructor ) #f #f #f #f))) + (let loop ((args args) (ss (make-ss-template #f #f #f #f))) (match args ((field value . rest) ((record-modifier field) ss value) (loop rest ss)) - (else ;; store the style sheet template - (hash-set! *gnc:_style-sheet-templates_* - (gnc:html-style-sheet-template-name ss) ss))))) + (_ (hash-set! *gnc:_style-sheet-templates_* + (gnc:html-style-sheet-template-name ss) ss))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define - (make-record-type "" - '(name type options renderer style))) +(define-record-type + (make-html-ss name type options renderer style) + html-ss? + (name ss-name ss-set-name!) + (type ss-type ss-set-type!) + (options ss-options ss-set-options!) + (renderer ss-renderer ss-set-renderer!) + (style ss-style)) -(define gnc:html-style-sheet? - (record-predicate )) - -(define gnc:html-style-sheet-name - (record-accessor 'name)) - -(define gnc:html-style-sheet-set-name! - (record-modifier 'name)) - -(define gnc:html-style-sheet-type - (record-accessor 'type)) - -(define gnc:html-style-sheet-set-type! - (record-modifier 'type)) - -(define gnc:html-style-sheet-options - (record-accessor 'options)) - -(define gnc:html-style-sheet-set-options! - (record-modifier 'options)) - -(define gnc:html-style-sheet-renderer - (record-accessor 'renderer)) - -(define gnc:html-style-sheet-set-renderer! - (record-modifier 'renderer)) - -(define gnc:make-html-style-sheet-internal - (record-constructor )) - -(define gnc:html-style-sheet-style - (record-accessor 'style)) +(define gnc:make-html-style-sheet-internal make-html-ss) +(define gnc:html-style-sheet? html-ss?) +(define gnc:html-style-sheet-name ss-name) +(define gnc:html-style-sheet-set-name! ss-set-name!) +(define gnc:html-style-sheet-type ss-type) +(define gnc:html-style-sheet-set-type! ss-set-type!) +(define gnc:html-style-sheet-options ss-options) +(define gnc:html-style-sheet-set-options! ss-set-options!) +(define gnc:html-style-sheet-renderer ss-renderer) +(define gnc:html-style-sheet-set-renderer! ss-set-renderer!) +(define gnc:html-style-sheet-style ss-style) (define gnc:current-saved-stylesheets (gnc-build-userdata-path "stylesheets-2.0"))