From a974e752ab5328ed168151164a27f1422a70e65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Fri, 25 Mar 2016 14:08:14 +0100 Subject: [PATCH] english: new word count-of-things, it pluralizes depending on count --- extra/english/english-tests.factor | 4 ++++ extra/english/english.factor | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/extra/english/english-tests.factor b/extra/english/english-tests.factor index 93fa549322..e65b247c6e 100644 --- a/extra/english/english-tests.factor +++ b/extra/english/english-tests.factor @@ -10,3 +10,7 @@ IN: english { "a10n" } [ "abbreviation" a10n ] unit-test { "i18n" } [ "internationalization" a10n ] unit-test + +{ "3 babies" } [ 3 "baby" count-of-things ] unit-test +{ "1 pipe" } [ 1 "pipe" count-of-things ] unit-test +{ "0 pipes" } [ 0 "pipe" count-of-things ] unit-test diff --git a/extra/english/english.factor b/extra/english/english.factor index 42e820c36d..a8abe56b33 100644 --- a/extra/english/english.factor +++ b/extra/english/english.factor @@ -1,9 +1,7 @@ ! Copyright (C) 2015 John Benediktsson ! See http://factorcode.org/license.txt for BSD license - -USING: assocs assocs.extras combinators kernel literals locals -math math.parser sequences splitting unicode.case -unicode.categories ; +USING: assocs assocs.extras combinators formatting kernel literals +locals math math.parser sequences splitting unicode.case ; IN: english @@ -143,6 +141,9 @@ PRIVATE> [ "s" append ] } cond match-case ; +: count-of-things ( count word -- str ) + over 1 = [ pluralize ] unless "%d %s" sprintf ; + : a10n ( str -- str' ) dup length 3 > [ [ 1 head ] [ length 2 - number>string ] [ 1 tail* ] tri