gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Sat Jul 11 12:22:35 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/c87870f9 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b69d3fe3 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/a6ac9b74 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/738c04fe (commit)
	 via  https://github.com/Gnucash/gnucash/commit/c65d0ef1 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/309539b8 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/916bdc2a (commit)
	from  https://github.com/Gnucash/gnucash/commit/90c8a1e3 (commit)



commit c87870f9d080ee38fddd2678ee758f9d5312edcd
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sun Jul 12 00:12:51 2020 +0800

    [html-style-info] use srfi-9 records for <html-data-style-info>

diff --git a/gnucash/report/html-style-info.scm b/gnucash/report/html-style-info.scm
index 0da74ca2d..8975e7aa0 100644
--- a/gnucash/report/html-style-info.scm
+++ b/gnucash/report/html-style-info.scm
@@ -132,41 +132,25 @@
 ;;  style.  The return should be an HTML string.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define <html-data-style-info> 
-  (make-record-type "<html-data-style-info>"
-                    '(renderer data inheritable?))) 
-
-(define gnc:html-data-style-info? 
-  (record-predicate <html-data-style-info>))
-
-(define gnc:make-html-data-style-info-internal
-  (record-constructor <html-data-style-info>))
+(define-record-type <html-data-style-info>
+  (make-html-data-style-info-internal renderer data inheritable?)
+  data-style-info?
+  (renderer html-data-style-info-renderer html-data-style-info-set-renderer)
+  (data html-data-style-info-data html-data-style-info-set-data)
+  (inheritable? html-data-style-info-inherit html-data-style-info-set-inherit))
+
+(define gnc:make-html-data-style-info-internal make-html-data-style-info-internal)
+(define gnc:html-data-style-info? data-style-info?)
+(define gnc:html-data-style-info-renderer html-data-style-info-renderer)
+(define gnc:html-data-style-info-set-renderer! html-data-style-info-set-renderer)
+(define gnc:html-data-style-info-data html-data-style-info-data)
+(define gnc:html-data-style-info-set-data! html-data-style-info-set-data)
+(define gnc:html-data-style-info-inheritable? html-data-style-info-inherit)
+(define gnc:html-data-style-info-set-inheritable?! html-data-style-info-set-inherit)
 
 (define (gnc:make-html-data-style-info renderer data)
   (gnc:make-html-data-style-info-internal renderer data #t))
 
-(define gnc:html-data-style-info? 
-  (record-predicate <html-data-style-info>))
-
-(define gnc:html-data-style-info-renderer 
-  (record-accessor <html-data-style-info> 'renderer))
-
-(define gnc:html-data-style-info-set-renderer!
-  (record-modifier <html-data-style-info> 'renderer))
-
-(define gnc:html-data-style-info-data 
-  (record-accessor <html-data-style-info> 'data))
-
-(define gnc:html-data-style-info-set-data!
-  (record-modifier <html-data-style-info> 'data))
-
-(define gnc:html-data-style-info-inheritable? 
-  (record-accessor <html-data-style-info> 'inheritable?))
-
-(define gnc:html-data-style-info-set-inheritable?!
-  (record-modifier <html-data-style-info> 'inheritable?))
-
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;  default renderers for some data types.  
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

commit b69d3fe38a90001475a3217ee22ef8cd8b4175fb
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sun Jul 12 00:12:44 2020 +0800

    [html-style-info] use srfi-9 records for <html-markup-style-info>

diff --git a/gnucash/report/html-style-info.scm b/gnucash/report/html-style-info.scm
index 8c6da4aff..0da74ca2d 100644
--- a/gnucash/report/html-style-info.scm
+++ b/gnucash/report/html-style-info.scm
@@ -22,6 +22,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (use-modules (ice-9 match))
+(use-modules (srfi srfi-9))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; <html-markup-style-info> class 
@@ -38,31 +39,36 @@
 ;;  attribute   : single attribute-value pair in a list 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-
-(define <html-markup-style-info> 
-  (make-record-type "<html-markup-style-info>"
-                    '(tag 
-                      attributes
-                      inheritable?)))
-
-(define gnc:html-markup-style-info?
-  (record-predicate <html-markup-style-info>))
-
-(define gnc:make-html-markup-style-info-internal 
-  (record-constructor <html-markup-style-info>))
+(define-record-type <html-markup-style-info>
+  (make-html-markup-style-info-internal tag attributes inheritable?)
+  html-markup-style-info?
+  (tag style-info-tag style-info-set-tag)
+  (attributes style-info-attributes style-info-set-attributes)
+  (inheritable? style-info-inheritable? style-info-set-inheritable?))
+
+(define gnc:make-html-markup-style-info-internal make-html-markup-style-info-internal)
+(define gnc:html-markup-style-info? html-markup-style-info?)
+(define gnc:html-markup-style-info-tag style-info-tag)
+(define gnc:html-markup-style-info-set-tag! style-info-set-tag)
+(define gnc:html-markup-style-info-attributes style-info-attributes)
+(define gnc:html-markup-style-info-set-attributes! style-info-set-attributes)
+(define gnc:html-markup-style-info-inheritable? style-info-inheritable?)
+(define gnc:html-markup-style-info-set-inheritable?! style-info-set-inheritable?)
 
 (define (gnc:make-html-markup-style-info . rest)
-  (let ((retval (gnc:make-html-markup-style-info-internal 
-                 #f (make-hash-table) #t)))
+  (let ((retval (gnc:make-html-markup-style-info-internal #f (make-hash-table) #t)))
     (apply gnc:html-markup-style-info-set! retval rest)
     retval))
 
 (define (gnc:html-markup-style-info-set! style . rest)
   (let loop ((arglist rest))
     (match arglist
-      (('attribute (key . val) . rest)
-       (gnc:html-markup-style-info-set-attribute!
-        style key (and (pair? val) (car val)))
+      (('attribute (key val) . rest)
+       (gnc:html-markup-style-info-set-attribute! style key val)
+       (loop rest))
+
+      (('attribute (key) . rest)
+       (gnc:html-markup-style-info-set-attribute! style key #f)
        (loop rest))
 
       ((field value . rest)
@@ -71,24 +77,6 @@
 
       (else style))))
 
-(define gnc:html-markup-style-info-tag
-  (record-accessor <html-markup-style-info> 'tag))
-
-(define gnc:html-markup-style-info-set-tag!
-  (record-modifier <html-markup-style-info> 'tag))
-
-(define gnc:html-markup-style-info-attributes
-  (record-accessor <html-markup-style-info> 'attributes))
-
-(define gnc:html-markup-style-info-set-attributes!
-  (record-modifier <html-markup-style-info> 'attributes))
-
-(define gnc:html-markup-style-info-inheritable? 
-  (record-accessor <html-markup-style-info> 'inheritable?))
-
-(define gnc:html-markup-style-info-set-inheritable?!
-  (record-modifier <html-markup-style-info> 'inheritable?))
-
 (define (gnc:html-markup-style-info-set-attribute! info attr val)
   (hash-set! (gnc:html-markup-style-info-attributes info) attr val))
 

commit a6ac9b748c78e8aeff62f99b2e55771c08ac3c2f
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 11 23:16:54 2020 +0800

    [html-document] use srfi-9 records for <html-object>

diff --git a/gnucash/report/html-document.scm b/gnucash/report/html-document.scm
index 36f82cde9..47f544f31 100644
--- a/gnucash/report/html-document.scm
+++ b/gnucash/report/html-document.scm
@@ -265,14 +265,18 @@
 ;;  want.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define <html-object>
-  (make-record-type "<html-object>"
-                    '(renderer data)))
-(define gnc:html-object?
-  (record-predicate <html-object>))
-
-(define gnc:make-html-object-internal
-  (record-constructor <html-object>))
+(define-record-type <html-object>
+  (make-html-object-internal renderer data)
+  html-object?
+  (renderer html-object-renderer html-object-set-renderer!)
+  (data html-object-data html-object-set-data!))
+
+(define gnc:html-object? html-object?)
+(define gnc:make-html-object-internal make-html-object-internal)
+(define gnc:html-object-renderer html-object-renderer)
+(define gnc:html-object-set-renderer! html-object-set-renderer!)
+(define gnc:html-object-data html-object-data)
+(define gnc:html-object-set-data! html-object-set-data!)
 
 (define (gnc:make-html-object obj)
   (cond
@@ -320,18 +324,6 @@
      (lambda (obj doc)
        (gnc:html-document-render-data doc obj)) obj))))
 
-(define gnc:html-object-renderer
-  (record-accessor <html-object> 'renderer))
-
-(define gnc:html-object-set-renderer!
-  (record-modifier <html-object> 'renderer))
-
-(define gnc:html-object-data
-  (record-accessor <html-object> 'data))
-
-(define gnc:html-object-set-data!
-  (record-modifier <html-object> 'data))
-
 (define (gnc:html-object-render obj doc)
   (if (gnc:html-object? obj)
       ((gnc:html-object-renderer obj) (gnc:html-object-data obj) doc)

commit 738c04fe26b67835ac2aaa82bed036e8315a7926
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 11 23:16:37 2020 +0800

    [html-document] use srfi-9 records for <html-document>

diff --git a/gnucash/report/html-document.scm b/gnucash/report/html-document.scm
index a5a4c994b..36f82cde9 100644
--- a/gnucash/report/html-document.scm
+++ b/gnucash/report/html-document.scm
@@ -22,6 +22,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (use-modules (gnucash html))
+(use-modules (srfi srfi-9))
 (use-modules (ice-9 match))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -29,15 +30,35 @@
 ;;  this is the top-level object representing an entire HTML document.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define <html-document>
-  (make-record-type "<html-document>"
-                    '(style-sheet style-stack style style-text title headline objects)))
-
-(define gnc:html-document?
-  (record-predicate <html-document>))
-
-(define gnc:make-html-document-internal
-  (record-constructor <html-document>))
+(define-record-type <html-document>
+  (make-html-document-internal style-sheet style-stack style
+                               style-text title headline objects)
+  html-document?
+  (style-sheet html-document-style-sheet html-document-set-style-sheet)
+  (style-stack html-document-style-stack html-document-set-style-stack)
+  (style html-document-style html-document-set-style)
+  (style-text html-document-style-text html-document-set-style-text)
+  (title html-document-title html-document-set-title)
+  (headline html-document-headline html-document-set-headline)
+  (objects html-document-objects html-document-set-objects))
+
+(define gnc:html-document-set-title! html-document-set-title)
+(define gnc:html-document-title html-document-title)
+(define gnc:html-document-set-headline! html-document-set-headline)
+(define gnc:html-document-headline html-document-headline)
+(define gnc:html-document-set-style-sheet! html-document-set-style-sheet)
+(define gnc:html-document-set-style-sheet! html-document-set-style-sheet)
+(define gnc:html-document-style-sheet html-document-style-sheet)
+(define gnc:html-document-set-style-stack! html-document-set-style-stack)
+(define gnc:html-document-style-stack html-document-style-stack)
+(define gnc:html-document-set-style-text! html-document-set-style-text)
+(define gnc:html-document-style-text html-document-style-text)
+(define gnc:html-document-set-style-internal! html-document-set-style)
+(define gnc:html-document-style html-document-style)
+(define gnc:html-document-set-objects! html-document-set-objects)
+(define gnc:html-document-objects html-document-objects)
+(define gnc:html-document? html-document?)
+(define gnc:make-html-document-internal make-html-document-internal)
 
 (define (gnc:make-html-document)
   (gnc:make-html-document-internal
@@ -50,54 +71,6 @@
    '()                   ;; subobjects
    ))
 
-(define gnc:html-document-set-title!
-  (record-modifier <html-document> 'title))
-
-(define gnc:html-document-title
-  (record-accessor <html-document> 'title))
-
-(define gnc:html-document-set-headline!
-  (record-modifier <html-document> 'headline))
-
-(define gnc:html-document-headline
-  (record-accessor <html-document> 'headline))
-
-(define gnc:html-document-set-style-sheet!
-  (record-modifier <html-document> 'style-sheet))
-
-(define gnc:html-document-set-style-sheet!
-  (record-modifier <html-document> 'style-sheet))
-
-(define gnc:html-document-style-sheet
-  (record-accessor <html-document> 'style-sheet))
-
-(define gnc:html-document-set-style-stack!
-  (record-modifier <html-document> 'style-stack))
-
-(define gnc:html-document-style-stack
-  (record-accessor <html-document> 'style-stack))
-
-(define gnc:html-document-set-style-text!
-  (record-modifier <html-document> 'style-text))
-
-(define gnc:html-document-style-text
-  (record-accessor <html-document> 'style-text))
-
-(define gnc:html-document-set-style-internal!
-  (record-modifier <html-document> 'style))
-
-(define gnc:html-document-style
-  (record-accessor <html-document> 'style))
-
-(define gnc:html-document-set-objects!
-  (record-modifier <html-document> 'objects))
-
-(define gnc:html-document-objects
-  (record-accessor <html-document> 'objects))
-
-(define gnc:html-document?
-  (record-predicate <html-document>))
-
 (define (gnc:html-document-set-style! doc tag . rest)
   (gnc:html-style-table-set!
    (gnc:html-document-style doc) tag

commit c65d0ef1c391e551fdf9486479001870ee087809
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 11 23:01:56 2020 +0800

    [html-chart] use srfi-9 records for <html-chart>

diff --git a/gnucash/report/html-chart.scm b/gnucash/report/html-chart.scm
index 0ebf105b4..147bcc3b3 100644
--- a/gnucash/report/html-chart.scm
+++ b/gnucash/report/html-chart.scm
@@ -25,6 +25,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (use-modules (gnucash json builder))            ;for building JSON options
+(use-modules (srfi srfi-9))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -106,26 +107,42 @@
 ;; width - pair
 ;; height - pair
 
-(define <html-chart>
-  (make-record-type "<html-chart>"
-                    '(width
-                      height
-                      chart-options
-                      currency-iso
-                      currency-symbol
-                      custom-x-axis-ticks?
-                      custom-y-axis-ticks?)))
-
-(define gnc:html-chart?
-  (record-predicate <html-chart>))
+(define-record-type <html-chart>
+  (make-html-chart width height chart-options currency-iso
+                   currency-symbol custom-x-axis-ticks? custom-y-axis-ticks?)
+  html-chart?
+  (width html-chart-width html-chart-set-width)
+  (height html-chart-height html-chart-set-height)
+  (chart-options html-chart-chart-options html-chart-set-chart-options)
+  (currency-iso html-chart-currency-iso html-chart-set-currency-iso)
+  (currency-symbol html-chart-currency-symbol html-chart-set-currency-symbol)
+  (custom-x-axis-ticks? html-chart-custom-x-axis-ticks?
+                        html-chart-set-custom-x-axis-ticks?)
+  (custom-y-axis-ticks? html-chart-custom-y-axis-ticks?
+                        html-chart-set-custom-y-axis-ticks?))
+
+(define gnc:make-html-chart-internal make-html-chart)
+(define gnc:html-chart? html-chart?)
+(define gnc:html-chart-width html-chart-width)
+(define gnc:html-chart-set-width! html-chart-set-width)
+(define gnc:html-chart-height html-chart-height)
+(define gnc:html-chart-set-height! html-chart-set-height)
+(define gnc:html-chart-currency-iso html-chart-currency-iso)
+(define gnc:html-chart-set-currency-iso! html-chart-set-currency-iso)
+(define gnc:html-chart-currency-symbol html-chart-currency-symbol)
+(define gnc:html-chart-set-currency-symbol! html-chart-set-currency-symbol)
+(define gnc:html-chart-custom-x-axis-ticks? html-chart-custom-x-axis-ticks?)
+(define gnc:html-chart-set-custom-x-axis-ticks?! html-chart-set-custom-x-axis-ticks?)
+(define gnc:html-chart-custom-y-axis-ticks? html-chart-custom-y-axis-ticks?)
+(define gnc:html-chart-set-custom-y-axis-ticks?! html-chart-set-custom-y-axis-ticks?)
+(define gnc:html-chart-get-options-internal html-chart-chart-options)
+(define gnc:html-chart-set-options-internal! html-chart-set-chart-options)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;  <html-chart> class
 ;;  generate the <object> form for an html chart.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define gnc:make-html-chart-internal
-  (record-constructor <html-chart>))
 
 (define (gnc:make-html-chart)
   (gnc:make-html-chart-internal
@@ -207,18 +224,6 @@
    #t        ;custom y-axis ticks?
    ))
 
-(define gnc:html-chart-width
-  (record-accessor <html-chart> 'width))
-
-(define gnc:html-chart-set-width!
-  (record-modifier <html-chart> 'width))
-
-(define gnc:html-chart-height
-  (record-accessor <html-chart> 'height))
-
-(define gnc:html-chart-set-height!
-  (record-modifier <html-chart> 'height))
-
 (define (gnc:html-chart-type chart)
   (gnc:html-chart-get chart '(type)))
 
@@ -288,12 +293,6 @@
 (define-public (gnc:html-chart-set-y-axis-label! chart label)
   (gnc:html-chart-set! chart '(options scales yAxes (0) scaleLabel labelString) label))
 
-(define gnc:html-chart-get-options-internal
-  (record-accessor <html-chart> 'chart-options))
-
-(define gnc:html-chart-set-options-internal!
-  (record-modifier <html-chart> 'chart-options))
-
 (define (gnc:html-chart-get chart path)
   (let ((options (gnc:html-chart-get-options-internal chart)))
     (nested-alist-get options path)))
@@ -304,30 +303,6 @@
     (nested-alist-set! options path val-vec)
     (gnc:html-chart-set-options-internal! chart options)))
 
-(define gnc:html-chart-currency-iso
-  (record-accessor <html-chart> 'currency-iso))
-
-(define gnc:html-chart-set-currency-iso!
-  (record-modifier <html-chart> 'currency-iso))
-
-(define gnc:html-chart-currency-symbol
-  (record-accessor <html-chart> 'currency-symbol))
-
-(define gnc:html-chart-set-currency-symbol!
-  (record-modifier <html-chart> 'currency-symbol))
-
-(define gnc:html-chart-custom-x-axis-ticks?
-  (record-accessor <html-chart> 'custom-x-axis-ticks?))
-
-(define-public gnc:html-chart-set-custom-x-axis-ticks?!
-  (record-modifier <html-chart> 'custom-x-axis-ticks?))
-
-(define gnc:html-chart-custom-y-axis-ticks?
-  (record-accessor <html-chart> 'custom-y-axis-ticks?))
-
-(define-public gnc:html-chart-set-custom-y-axis-ticks?!
-  (record-modifier <html-chart> 'custom-y-axis-ticks?))
-
 (define JS-Number-to-String "
 // The following snippet from MDN
 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
diff --git a/gnucash/report/report.scm b/gnucash/report/report.scm
index e1a2eb7da..c5de10b9b 100644
--- a/gnucash/report/report.scm
+++ b/gnucash/report/report.scm
@@ -534,6 +534,8 @@
 (export gnc:html-chart-currency-symbol)
 (export gnc:html-chart-set-currency-symbol!)
 (export gnc:html-chart-render)
+(export gnc:html-chart-set-custom-x-axis-ticks?!)
+(export gnc:html-chart-set-custom-y-axis-ticks?!)
 
 ;; html-table.scm
 

commit 309539b80edbb5f63b1e38ca33361f20f0417941
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 11 22:43:08 2020 +0800

    [report-core] use srfi-9 records for <report>

diff --git a/gnucash/report/report-core.scm b/gnucash/report/report-core.scm
index fa0d9ecd1..97556a624 100644
--- a/gnucash/report/report-core.scm
+++ b/gnucash/report/report-core.scm
@@ -231,69 +231,42 @@ not found.")))
       options)))
 
 ;; A <report> represents an instantiation of a particular report type.
-(define <report>
-  (make-record-type
-   "<report>"
-   '(type id options dirty? needs-save? editor-widget ctext custom-template)))
-
-(define gnc:report-type
-  (record-accessor <report> 'type))
-
-(define gnc:report-set-type!
-  (record-modifier <report> 'type))
-
-(define gnc:report-id
-  (record-accessor <report> 'id))
-
-(define gnc:report-set-id!
-  (record-modifier <report> 'id))
-
-(define gnc:report-options
-  (record-accessor <report> 'options))
-
-(define gnc:report-set-options!
-  (record-modifier <report> 'options))
-
-(define gnc:report-needs-save?
-  (record-accessor <report> 'needs-save?))
-
-(define gnc:report-set-needs-save?!
-  (record-modifier <report> 'needs-save?))
-
-(define gnc:report-dirty?
-  (record-accessor <report> 'dirty?))
-
-(define gnc:report-set-dirty?-internal!
-  (record-modifier <report> 'dirty?))
+(define-record-type <report>
+  (make-report type id options dirty? needs-save? editor-widget ctext custom-template)
+  report?
+  (type report-type report-set-type!)
+  (id report-id report-set-id!)
+  (options report-options report-set-options!)
+  (dirty? report-dirty? report-set-dirty?!)
+  (needs-save? report-needs-save? report-set-needs-save?!)
+  (editor-widget report-editor-widget report-set-editor-widget!)
+  (ctext report-ctext report-set-ctext!)
+  (custom-template report-custom-template report-set-custom-template!))
+
+(define gnc:report-type report-type)
+(define gnc:report-set-type! report-set-type!)
+(define gnc:report-id report-id)
+(define gnc:report-set-id! report-set-id!)
+(define gnc:report-options report-options)
+(define gnc:report-set-options! report-set-options!)
+(define gnc:report-needs-save? report-needs-save?)
+(define gnc:report-set-needs-save?! report-set-needs-save?!)
+(define gnc:report-dirty? report-dirty?)
+(define gnc:report-set-dirty?-internal! report-set-dirty?!)
+(define gnc:report-editor-widget report-editor-widget)
+(define gnc:report-set-editor-widget! report-set-editor-widget!)
+(define gnc:report-ctext report-ctext)
+(define gnc:report-set-ctext! report-set-ctext!)
+(define gnc:report-custom-template report-custom-template)
+(define gnc:report-set-custom-template! report-set-custom-template!)
 
 (define (gnc:report-set-dirty?! report val)
   (gnc:report-set-dirty?-internal! report val)
-  (let* ((template (hash-ref *gnc:_report-templates_*
-                             (gnc:report-type report)))
+  (let* ((template (hash-ref *gnc:_report-templates_* (gnc:report-type report)))
          (cb (gnc:report-template-options-changed-cb template)))
     (if (and cb (procedure? cb))
         (cb report))))
 
-(define gnc:report-editor-widget
-  (record-accessor <report> 'editor-widget))
-
-(define gnc:report-set-editor-widget!
-  (record-modifier <report> 'editor-widget))
-
-;; ctext is for caching the rendered html
-(define gnc:report-ctext
-  (record-accessor <report> 'ctext))
-
-(define gnc:report-set-ctext!
-  (record-modifier <report> 'ctext))
-
-(define gnc:report-custom-template
-  (record-accessor <report> 'custom-template))
-
-(define gnc:report-set-custom-template!
-  (record-modifier <report> 'custom-template))
-
-
 ;; gnc:make-report instantiates a report from a report-template.
 ;; The actual report is stored away in a hash-table -- only the id is returned.
 (define (gnc:make-report template-id . rest)
@@ -301,7 +274,7 @@ not found.")))
                            (hash-ref *gnc:_report-templates_* template-id)))
          (report-type (or template-parent template-id))
          (custom-template (if template-parent template-id ""))
-         (r ((record-constructor <report>)
+         (r (make-report
              report-type     ;; type
              #f              ;; id
              #f              ;; options
@@ -329,8 +302,7 @@ not found.")))
 
 (define (gnc:restore-report-by-guid id template-id template-name options)
   (if options
-      (let* ((r ((record-constructor <report>)
-                 template-id id options #t #t #f #f ""))
+      (let* ((r (make-report template-id id options #t #t #f #f ""))
              (report-id (gnc-report-add r)))
         (if (number? report-id)
             (gnc:report-set-id! r report-id))
@@ -342,8 +314,7 @@ not found.")))
 (define (gnc:restore-report-by-guid-with-custom-template
          id template-id template-name custom-template-id options)
   (if options
-      (let* ((r ((record-constructor <report>)
-                 template-id id options #t #t #f #f custom-template-id))
+      (let* ((r (make-report template-id id options #t #t #f #f custom-template-id))
              (report-id (gnc-report-add r)))
         (if (number? report-id)
             (gnc:report-set-id! r report-id))

commit 916bdc2a021b2753068a8b6499e33e96b9245dd4
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 11 22:32:12 2020 +0800

    [report-core] use srfi-9 records for <report-template>

diff --git a/gnucash/report/report-core.scm b/gnucash/report/report-core.scm
index 3dce45f05..fa0d9ecd1 100644
--- a/gnucash/report/report-core.scm
+++ b/gnucash/report/report-core.scm
@@ -29,6 +29,7 @@
 (use-modules (sw_report))
 
 (use-modules (ice-9 match))
+(use-modules (srfi srfi-9))
 
 ; Export the swig-wrapped symbols in the public interface of this module
 (let ((i (module-public-interface (current-module))))
@@ -82,14 +83,46 @@
 (define gnc:optname-invoice-number (N_ "Invoice Number"))
 
 ;; A <report-template> represents one of the available report types.
-(define <report-template>
-  (make-record-type
-   "<report-template>"
-   ;; The data items in a report record
-   '(version name report-guid parent-type options-generator
-             options-cleanup-cb options-changed-cb
-             renderer in-menu? menu-path menu-name
-             menu-tip export-types export-thunk)))
+(define-record-type <report-template>
+  (make-new-record-template version name report-guid parent-type options-generator
+                            options-cleanup-cb options-changed-cb
+                            renderer in-menu? menu-path menu-name
+                            menu-tip export-types export-thunk)
+  report-template?
+  (version report-template-version)
+  (report-guid report-template-report-guid report-template-set-report-guid!)
+  (name report-template-name report-template-set-name)
+  (parent-type report-template-parent-type report-template-set-parent-type!)
+  (options-generator report-template-options-generator)
+  (options-cleanup-cb report-template-options-cleanup-cb)
+  (options-changed-cb report-template-options-changed-cb)
+  (renderer report-template-renderer)
+  (in-menu? report-template-in-menu?)
+  (menu-path report-template-menu-path)
+  (menu-name report-template-menu-name)
+  (menu-tip report-template-menu-tip)
+  (export-types report-template-export-types)
+  (export-thunk report-template-export-thunk))
+
+(define (make-report-template)
+  (make-new-record-template #f #f #f #f #f #f #f #f #t #f #f #f #f #f))
+(define gnc:report-template-version report-template-version)
+(define gnc:report-template-report-guid report-template-report-guid)
+(define gnc:report-template-set-report-guid! report-template-set-report-guid!)
+(define gnc:report-template-name report-template-name)
+(define gnc:report-template-set-name report-template-set-name)
+(define gnc:report-template-parent-type report-template-parent-type)
+(define gnc:report-template-set-parent-type! report-template-set-parent-type!)
+(define gnc:report-template-options-generator report-template-options-generator)
+(define gnc:report-template-options-cleanup-cb report-template-options-cleanup-cb)
+(define gnc:report-template-options-changed-cb report-template-options-changed-cb)
+(define gnc:report-template-renderer report-template-renderer)
+(define gnc:report-template-in-menu? report-template-in-menu?)
+(define gnc:report-template-menu-path report-template-menu-path)
+(define gnc:report-template-menu-name report-template-menu-name)
+(define gnc:report-template-menu-tip report-template-menu-tip)
+(define gnc:report-template-export-types report-template-export-types)
+(define gnc:report-template-export-thunk report-template-export-thunk)
 
 ;; define strings centrally to ease code clarity
 (define rpterr-dupe
@@ -121,14 +154,16 @@ not found.")))
   ;; The renderer should be a function that accepts one argument, a
   ;; set of options, and generates the report. the renderer must
   ;; return as its final value an <html-document> object.
+  (define report-rec (make-report-template))
 
-  (let* ((report-rec (let loop ((report-rec (make-report-template)) (args args))
-                       (match args
-                         (() report-rec)
-                         ((field val . rest)
-                          ((record-modifier <report-template> field) report-rec val)
-                          (loop report-rec rest)))))
-         (report-guid (gnc:report-template-report-guid report-rec))
+  (let loop ((args args))
+    (match args
+      (() #f)
+      ((field val . rest)
+       ((record-modifier <report-template> field) report-rec val)
+       (loop rest))))
+
+  (let* ((report-guid (gnc:report-template-report-guid report-rec))
          (report-name (gnc:report-template-name report-rec)))
     (cond
 
@@ -144,60 +179,6 @@ not found.")))
      (else
       (hash-set! *gnc:_report-templates_* report-guid report-rec)))))
 
-(define gnc:report-template-version
-  (record-accessor <report-template> 'version))
-(define gnc:report-template-report-guid
-  (record-accessor <report-template> 'report-guid))
-(define gnc:report-template-set-report-guid!
-  (record-modifier <report-template> 'report-guid))
-(define gnc:report-template-name
-  (record-accessor <report-template> 'name))
-(define gnc:report-template-set-name
-  (record-modifier <report-template> 'name))
-(define gnc:report-template-parent-type
-  (record-accessor <report-template> 'parent-type))
-(define gnc:report-template-set-parent-type!
-  (record-modifier <report-template> 'parent-type))
-(define gnc:report-template-options-generator
-  (record-accessor <report-template> 'options-generator))
-(define gnc:report-template-options-cleanup-cb
-  (record-accessor <report-template> 'options-cleanup-cb))
-(define gnc:report-template-options-changed-cb
-  (record-accessor <report-template> 'options-changed-cb))
-(define gnc:report-template-renderer
-  (record-accessor <report-template> 'renderer))
-(define gnc:report-template-in-menu?
-  (record-accessor <report-template> 'in-menu?))
-(define gnc:report-template-menu-path
-  (record-accessor <report-template> 'menu-path))
-(define gnc:report-template-menu-name
-  (record-accessor <report-template> 'menu-name))
-(define gnc:report-template-menu-tip
-  (record-accessor <report-template> 'menu-tip))
-(define gnc:report-template-export-types
-  (record-accessor <report-template> 'export-types))
-(define gnc:report-template-export-thunk
-  (record-accessor <report-template> 'export-thunk))
-(define (make-report-template)
-  ((record-constructor <report-template>)
-   #f                         ;; version
-   #f                         ;; name
-   #f                         ;; report-guid
-   #f                         ;; parent-type (meaning guid of
-                              ;; report-template this template is
-                              ;; based on)
-   #f                         ;; options-generator
-   #f                         ;; options-cleanup-cb
-   #f                         ;; options-changed-cb
-   #f                         ;; renderer
-   #t                         ;; in-menu?
-   #f                         ;; menu-path
-   #f                         ;; menu-name
-   #f                         ;; menu-tip
-   #f                         ;; export-types
-   #f                         ;; export-thunk
-   ))
-
 (define (gnc:report-template-new-options/report-guid template-id template-name)
   (let ((templ (hash-ref *gnc:_report-templates_* template-id)))
     (and templ



Summary of changes:
 gnucash/report/html-chart.scm      |  87 ++++++---------
 gnucash/report/html-document.scm   | 117 +++++++-------------
 gnucash/report/html-style-info.scm | 104 +++++++-----------
 gnucash/report/report-core.scm     | 212 ++++++++++++++-----------------------
 gnucash/report/report.scm          |   2 +
 5 files changed, 194 insertions(+), 328 deletions(-)



More information about the gnucash-changes mailing list