From e4b41df44abad660f3bbbcf28abcd5838068c14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 1 Nov 2023 03:14:05 +0100 Subject: Fix API for each-string. --- doc/ref/text/numbers.texi | 8 +++++--- module/text/numbers.scm | 14 +++----------- module/text/numbers/sv.scm | 2 +- module/vcomponent/recurrence/display/en.scm | 3 ++- module/vcomponent/recurrence/display/sv.scm | 3 ++- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/doc/ref/text/numbers.texi b/doc/ref/text/numbers.texi index fce5c9fa..450b0b73 100644 --- a/doc/ref/text/numbers.texi +++ b/doc/ref/text/numbers.texi @@ -17,13 +17,15 @@ exists. Note that English uses the term cardinal and ordinal @emph{numeral}, rather than @emph{number}. +Most of these procedures takes optional keyword arguments, these +depend on the language. See the relevant implementation for details. -@defun number->string-ordinal n [language=(resolve-language)] +@defun number->string-ordinal n [language=(resolve-language)] [other-kvs ...] Convert a string into an ordinal number. These are the ``ranking'' numbers, e.g. ``first'', ``second'', ... @end defun -@defun number->string-cardinal n [language=(resolve-language)] +@defun number->string-cardinal n [language=(resolve-language)] [other-kvs ...] Convert a string into a cardinal number. These are the ``ordinary'' counting numbers, e.g. ``one'', ``two'', ... @end defun @@ -32,7 +34,7 @@ counting numbers, e.g. ``one'', ``two'', ... Return the current language. @end defun -@defun each-string count args ... +@defun each-string count [language=(resolve-language)] [other-kvs ...] Return a (locale dependant) string indicating which elements of a set are targeted, such as ``each'', ``every other'', ... diff --git a/module/text/numbers.scm b/module/text/numbers.scm index debd7f17..ad859a16 100644 --- a/module/text/numbers.scm +++ b/module/text/numbers.scm @@ -27,16 +27,8 @@ rest: extra-kvs) (apply (get language 'number->string-ordinal) n extra-kvs)) -;; TODO change API to allow language, and stop having random extra -;; arguments for implementations. -(define* (each-string count . args) - (define language (resolve-language)) +(define* (each-string count + optional: (language (resolve-language)) + rest: extra-kvs) (apply (get language 'each-string) count args)) - -;; scheme@(guile-user)> (number->string-cardinal 123) -;; $10 = "hundratjugotre" -;; scheme@(guile-user)> (number->string-ordinal 123) -;; $11 = "hundratjugotredje" -;; scheme@(guile-user)> (each-string 10) -;; $12 = "var tionde" diff --git a/module/text/numbers/sv.scm b/module/text/numbers/sv.scm index 317a0fa4..5d6e8952 100644 --- a/module/text/numbers/sv.scm +++ b/module/text/numbers/sv.scm @@ -181,7 +181,7 @@ ;; (each-string 2) ; => "varannan" ;; (each-string 3) ; => "var tredje" ;; (each-string 3 #t) ; => "vart tredje" -(define* (each-string count optional: neutrum) +(define* (each-string count key: neutrum allow-other-keys:) (string-flatten (cons "var" diff --git a/module/vcomponent/recurrence/display/en.scm b/module/vcomponent/recurrence/display/en.scm index 18d11dba..a361be1e 100644 --- a/module/vcomponent/recurrence/display/en.scm +++ b/module/vcomponent/recurrence/display/en.scm @@ -83,7 +83,8 @@ [else (list " " - (each-string (interval rrule) (eq? 'YEARLY (freq rrule))) + (each-string (interval rrule) + neutrum: (eq? 'YEARLY (freq rrule))) " " (case (freq rrule) ;; p.44 RFC 5545 diff --git a/module/vcomponent/recurrence/display/sv.scm b/module/vcomponent/recurrence/display/sv.scm index ee8fc3fd..14ddc2c3 100644 --- a/module/vcomponent/recurrence/display/sv.scm +++ b/module/vcomponent/recurrence/display/sv.scm @@ -91,7 +91,8 @@ [else (list " " - (each-string (interval rrule) (eq? 'YEARLY (freq rrule))) + (each-string (interval rrule) + neutrum: (eq? 'YEARLY (freq rrule))) " " (case (freq rrule) ;; p.44 RFC 5545 -- cgit v1.2.3