Skip to content

Commit

Permalink
[html-document] compact functions
Browse files Browse the repository at this point in the history
These functions were unnecessarily complex and used to build html
report. Tests are not mandatory here... All tests still pass which
means the html-documents are being built up correctly.
  • Loading branch information
christopherlam committed Feb 20, 2019
1 parent fe6cc53 commit 25f2abb
Showing 1 changed file with 59 additions and 75 deletions.
134 changes: 59 additions & 75 deletions gnucash/report/report-system/html-document.scm
Expand Up @@ -109,19 +109,17 @@

(define (gnc:html-document-tree-collapse tree)
(let ((retval '()))
(define (do-list list)
(let loop ((lst tree))
(for-each
(lambda (elt)
(if (string? elt)
(set! retval (cons elt retval))
(if (not (list? elt))
(set! retval
(cons (with-output-to-string
(lambda () (display elt)))
retval))
(do-list elt))))
list))
(do-list tree)
(cond
((string? elt)
(set! retval (cons elt retval)))
((not (list? elt))
(set! retval (cons (object->string elt) retval)))
(else
(loop elt))))
lst))
retval))

;; first optional argument is "headers?"
Expand Down Expand Up @@ -247,10 +245,7 @@

(define (gnc:html-document-markup-start doc markup end-tag? . rest)
(let ((childinfo (gnc:html-document-fetch-markup-style doc markup))
(extra-attrib
(if (not (null? rest))
rest #f))
(show-result #f))
(extra-attrib (and (pair? rest) rest)))
;; now generate the start tag
(let ((tag (gnc:html-markup-style-info-tag childinfo))
(attr (gnc:html-markup-style-info-attributes childinfo))
Expand Down Expand Up @@ -343,21 +338,14 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(define (gnc:html-document-render-data doc data)
(let ((style-info #f)
(data-type #f))
(cond
((number? data)
(set! data-type "<number>"))
((string? data)
(set! data-type "<string>"))
((boolean? data)
(set! data-type "<boolean>"))
((record? data)
(set! data-type (record-type-name (record-type-descriptor data))))
(#t
(set! data-type "<generic>")))

(set! style-info (gnc:html-document-fetch-data-style doc data-type))
(let* ((data-type (cond
((number? data) "<number>")
((string? data) "<string>")
((boolean? data) "<boolean>")
((record? data) (record-type-name
(record-type-descriptor data)))
(else "<generic>")))
(style-info (gnc:html-document-fetch-data-style doc data-type)))

((gnc:html-data-style-info-renderer style-info)
data (gnc:html-data-style-info-data style-info))))
Expand All @@ -380,51 +368,47 @@
(record-constructor <html-object>))

(define (gnc:make-html-object obj)
(let ((o #f))
(if (not (record? obj))
;; for literals (strings/numbers)
(set! o
(gnc:make-html-object-internal
(lambda (obj doc)
(gnc:html-document-render-data doc obj))
;; if the object is #f, make it a placeholder
(if obj obj " ")))
(cond
((gnc:html-text? obj)
(set! o (gnc:make-html-object-internal
gnc:html-text-render obj)))
((gnc:html-table? obj)
(set! o (gnc:make-html-object-internal
gnc:html-table-render obj)))
((gnc:html-anytag? obj)
(set! o (gnc:make-html-object-internal
gnc:html-anytag-render obj)))
((gnc:html-table-cell? obj)
(set! o (gnc:make-html-object-internal
gnc:html-table-cell-render obj)))
((gnc:html-barchart? obj)
(set! o (gnc:make-html-object-internal
gnc:html-barchart-render obj)))
((gnc:html-piechart? obj)
(set! o (gnc:make-html-object-internal
gnc:html-piechart-render obj)))
((gnc:html-scatter? obj)
(set! o (gnc:make-html-object-internal
gnc:html-scatter-render obj)))
((gnc:html-linechart? obj)
(set! o (gnc:make-html-object-internal
gnc:html-linechart-render obj)))
((gnc:html-object? obj)
(set! o obj))

;; other record types that aren't HTML objects
(#t
(set! o
(gnc:make-html-object-internal
(lambda (obj doc)
(gnc:html-document-render-data doc obj))
obj)))))
o))
(cond
((not (record? obj))
;; for literals (strings/numbers)
;; if the object is #f, make it a placeholder
(gnc:make-html-object-internal
(lambda (obj doc)
(gnc:html-document-render-data doc obj))
(or obj " ")))

((gnc:html-text? obj)
(gnc:make-html-object-internal gnc:html-text-render obj))

((gnc:html-table? obj)
(gnc:make-html-object-internal gnc:html-table-render obj))

((gnc:html-anytag? obj)
(gnc:make-html-object-internal gnc:html-anytag-render obj))

((gnc:html-table-cell? obj)
(gnc:make-html-object-internal gnc:html-table-cell-render obj))

((gnc:html-barchart? obj)
(gnc:make-html-object-internal gnc:html-barchart-render obj))

((gnc:html-piechart? obj)
(gnc:make-html-object-internal gnc:html-piechart-render obj))

((gnc:html-scatter? obj)
(gnc:make-html-object-internal gnc:html-scatter-render obj))

((gnc:html-linechart? obj)
(gnc:make-html-object-internal gnc:html-linechart-render obj))

((gnc:html-object? obj)
obj)

;; other record types that aren't HTML
(else
(gnc:make-html-object-internal
(lambda (obj doc)
(gnc:html-document-render-data doc obj)) obj))))

(define gnc:html-object-renderer
(record-accessor <html-object> 'renderer))
Expand Down

0 comments on commit 25f2abb

Please sign in to comment.