aboutsummaryrefslogtreecommitdiff
path: root/module/text/numbers.scm
blob: ad859a1656d6ddfd8f12aa591c74bea1a3b32364 (plain)
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
(define-module (text numbers)
  :use-module (srfi srfi-71)
  :use-module (srfi srfi-88)
  :use-module ((hnh util language) :select (resolve-language))
  :export (number->string-cardinal
           number->string-ordinal
           resolve-language
           each-string))

(define (get mod-symb proc-symb)
  (module-ref (catch 'misc-error
                (lambda () (resolve-interface `(text numbers ,mod-symb)))
                (lambda (err proc fmt args data)
                  ;; Possibly check if the err message starts with
                  ;; "no code for module"
                  (resolve-interface '(text numbers en))))
              proc-symb))

(define* (number->string-cardinal
          n optional: (language (resolve-language))
          rest: extra-kvs)
  (apply (get language 'number->string-cardinal) n extra-kvs))

(define* (number->string-ordinal
          n
          optional: (language (resolve-language))
          rest: extra-kvs)
  (apply (get language 'number->string-ordinal) n extra-kvs))

(define* (each-string count
                      optional: (language (resolve-language))
                      rest: extra-kvs)
  (apply (get language 'each-string)
         count args))