Make the pluralization slightly less awful
author |
Steve Losh <steve@stevelosh.com> |
date |
Mon, 06 Feb 2017 21:24:37 +0000 |
parents |
3d7298dcd3ef
|
children |
3d06e5b432c9
|
branches/tags |
(none) |
files |
src/chancery.lisp |
Changes
--- a/src/chancery.lisp Fri Jan 20 23:25:35 2017 +0000
+++ b/src/chancery.lisp Mon Feb 06 21:24:37 2017 +0000
@@ -256,13 +256,17 @@
(defun s (string)
"Pluralize `string`."
;; todo: fix for caps
+ ;; todo: make this suck less in general, see http://blog.writeathome.com/index.php/2011/12/how-to-make-nouns-plural/
(assert-nonempty string "Cannot pluralize an empty string.")
- (case (ch string -1)
- ((#\y #\Y) (if (vowelp (ch string -2))
- (cat string "s")
- (cat (chop string 1) "ies")))
- ((#\x #\X) (cat (chop string 1) "en"))
- ((#\z #\h #\Z #\H) (cat (chop string 1) "es"))
+ (case (char-downcase (ch string -1))
+ (#\y (if (vowelp (ch string -2))
+ (cat string "s")
+ (cat (chop string 1) "ies")))
+ ((#\x #\s #\z) (cat string "es"))
+ (#\h (cat string
+ (case (ch string -2)
+ ((#\c #\s) "es")
+ (t "s"))))
(t (cat string "s"))))
(defun pos (string)