;; ;; util-format.scm ;; ;; Less-common formatting functions. ;; ;; ISC License ;; ;; Copyright 2023 Brmlab, z.s. ;; Dominik Pantůček ;; ;; Permission to use, copy, modify, and/or distribute this software ;; for any purpose with or without fee is hereby granted, provided ;; that the above copyright notice and this permission notice appear ;; in all copies. ;; ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE ;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR ;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS ;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, ;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ;; (declare (unit util-format)) (module util-format ( format-amount ) (import scheme (chicken string) (chicken format)) ;; Formats amount in currency (define (format-amount amt) (if amt (let* ((str (number->string amt)) (flds (string-split str ".")) (integer? (null? (cdr flds)))) (if (or integer? (string=? (cadr flds) "0")) (format "~A.--" (car flds)) (format "~A.~A" (car flds) (substring (string-append (cadr flds) "0") 0 2)))) "ERR.OR")) )