diff --git a/src/libraries/OS-Independent/Text/Language.dcl b/src/libraries/OS-Independent/Text/Language.dcl new file mode 100644 index 0000000000000000000000000000000000000000..3392a921f684fa08dd5bba23c3449424490a5d73 --- /dev/null +++ b/src/libraries/OS-Independent/Text/Language.dcl @@ -0,0 +1,9 @@ +definition module Text.Language + +:: Language = English + +isVowel :: Language Char -> Bool +isConsonant :: Language Char -> Bool + +pluralise :: Language String -> String +pluralisen :: Language Int String -> String diff --git a/src/libraries/OS-Independent/Text/Language.icl b/src/libraries/OS-Independent/Text/Language.icl new file mode 100644 index 0000000000000000000000000000000000000000..1ce9e92a3493a3a071ff2906fb10eed5f01cd373 --- /dev/null +++ b/src/libraries/OS-Independent/Text/Language.icl @@ -0,0 +1,25 @@ +implementation module Text.Language + +import StdArray +import StdBool +from StdFunc import id +import StdList +import StdString + +import Text + +isVowel :: Language Char -> Bool +isVowel English c = isMember c ['aeiou'] + +isConsonant :: Language Char -> Bool +isConsonant l c = not (isVowel l c) + +pluralise :: Language String -> String +pluralise English s + | last == 'y' && (isConsonant English forelast || forelast == 'u') + = s % (0, size s-2) +++ "ies" + = s +++ "s" + where (last, forelast) = (s.[size s-1], s.[size s-2]) + +pluralisen :: Language Int String -> String +pluralisen English n s = n <+ " " <+ if (n == 1) id (pluralise English) s diff --git a/tests/linux64/test.icl b/tests/linux64/test.icl index 27f5a1093260876afd4799c5816fc56dbdda3e03..6c27dab2ac2d943e42c3b0861e5d9f39156f4dc8 100644 --- a/tests/linux64/test.icl +++ b/tests/linux64/test.icl @@ -132,6 +132,7 @@ import qualified Text.Encodings.MIME import qualified Text.Encodings.UrlEncoding import qualified Text.HTML import qualified Text.JSON +import qualified Text.Language import qualified Text.LaTeX import qualified Text.PPrint import qualified Text.Parsers.CParsers.ParserCombinators