numerals-0.4: src-test/Text/Numeral/Language/SV/TestData.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UnicodeSyntax #-}
{-|
[@ISO639-1@] sv
[@ISO639-2B@] swe
[@ISO639-3@] swe
[@Native name@] svenska
[@English name@] Swedish
-}
module Text.Numeral.Language.SV.TestData
( cardinals
, ordinals
, partitives
) where
--------------------------------------------------------------------------------
-- Imports
--------------------------------------------------------------------------------
import "base" Prelude ( Integral )
import "base-unicode-symbols" Prelude.Unicode ( (⋅) )
import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )
import "numerals" Text.Numeral.Grammar ( neuter, common )
import "numerals" Text.Numeral.Misc ( dec )
import "this" Text.Numeral.Test ( TestData )
--------------------------------------------------------------------------------
-- Test data
--------------------------------------------------------------------------------
-- Sources:
-- http://en.wikipedia.org/wiki/Swedish_grammar#Numerals
-- http://publications.europa.eu/code/sv/sv-4100600sv.htm
-- http://www.lysator.liu.se/language/Languages/Swedish/Grammar.html#numbers
-- http://en.wikibooks.org/wiki/Swedish/Numerals
-- http://www.speakswedish.co.uk/vocab/numbers
-- http://aclweb.org/anthology/C/C73/C73-2031.pdf
--
-- Rules for writing large words seem hard to come by online.
-- http://publications.europa.eu/code/sv/sv-4100600sv.htm provides
-- some guidelines:
--
-- Rule 1: Even hundreds, thousands, and so on, are generally written
-- as two words: två tusen, fyra hundra, sex miljoner
--
-- Rule 2: Numbers smaller than one hundred are always written as one
-- word, as are other number under one million: fyrtiosju,
-- niotusenfemhundrasexton
--
-- Rule 3: Numbers larger than one million should be written so that
-- the words tusen, miljon, miljard, and so on always stand on their
-- own: tjugofem miljarder tre miljoner
cardinals ∷ (Integral i) ⇒ TestData i
cardinals =
[ ( "neuter"
, neuter defaultInflection
-- Rule 2 (one word)
, [ (0, "noll")
, (1, "ett")
, (2, "två")
, (3, "tre")
, (4, "fyra")
, (5, "fem")
, (6, "sex")
, (7, "sju")
, (8, "åtta")
, (9, "nio")
, (10, "tio")
, (11, "elva")
, (12, "tolv")
, (13, "tretton")
, (14, "fjorton")
, (15, "femton")
, (16, "sexton")
, (17, "sjutton")
, (18, "arton")
, (19, "nitton")
, (20, "tjugo")
, (21, "tjugoett")
, (22, "tjugotvå")
, (23, "tjugotre")
, (24, "tjugofyra")
, (25, "tjugofem")
, (26, "tjugosex")
, (27, "tjugosju")
, (28, "tjugoåtta")
, (29, "tjugonio")
, (30, "trettio")
, (31, "trettioett")
, (32, "trettiotvå")
, (33, "trettiotre")
, (34, "trettiofyra")
, (35, "trettiofem")
, (36, "trettiosex")
, (37, "trettiosju")
, (38, "trettioåtta")
, (39, "trettionio")
, (40, "fyrtio")
, (41, "fyrtioett")
, (42, "fyrtiotvå")
, (43, "fyrtiotre")
, (44, "fyrtiofyra")
, (45, "fyrtiofem")
, (46, "fyrtiosex")
, (47, "fyrtiosju")
, (48, "fyrtioåtta")
, (49, "fyrtionio")
, (50, "femtio")
, (51, "femtioett")
, (52, "femtiotvå")
, (53, "femtiotre")
, (54, "femtiofyra")
, (55, "femtiofem")
, (56, "femtiosex")
, (57, "femtiosju")
, (58, "femtioåtta")
, (59, "femtionio")
, (60, "sextio")
, (61, "sextioett")
, (62, "sextiotvå")
, (63, "sextiotre")
, (64, "sextiofyra")
, (65, "sextiofem")
, (66, "sextiosex")
, (67, "sextiosju")
, (68, "sextioåtta")
, (69, "sextionio")
, (70, "sjuttio")
, (71, "sjuttioett")
, (72, "sjuttiotvå")
, (73, "sjuttiotre")
, (74, "sjuttiofyra")
, (75, "sjuttiofem")
, (76, "sjuttiosex")
, (77, "sjuttiosju")
, (78, "sjuttioåtta")
, (79, "sjuttionio")
, (80, "åttio")
, (81, "åttioett")
, (82, "åttiotvå")
, (83, "åttiotre")
, (84, "åttiofyra")
, (85, "åttiofem")
, (86, "åttiosex")
, (87, "åttiosju")
, (88, "åttioåtta")
, (89, "åttionio")
, (90, "nittio")
, (91, "nittioett")
, (92, "nittiotvå")
, (93, "nittiotre")
, (94, "nittiofyra")
, (95, "nittiofem")
, (96, "nittiosex")
, (97, "nittiosju")
, (98, "nittioåtta")
, (99, "nittionio")
, (101, "etthundraett")
, (102, "etthundratvå")
, (549, "femhundrafyrtionio")
-- "ettusen" is a special spelling case where "ett tusen"
-- written as one word becomes ettusen, dropping one 't'.
, (1349, "ettusentrehundrafyrtionio")
, (3502, "tretusenfemhundratvå")
, (9516, "niotusenfemhundrasexton")
, (30934, "trettiotusenniohundratrettiofyra")
, (837132, "åttahundratrettiosjutusenetthundratrettiotvå")
, (999999, "niohundranittioniotusenniohundranittionio")
-- Rule 1 (even hundreds and so on)
, (100, "ett hundra")
, (200, "två hundra")
, (300, "tre hundra")
, (500, "fem hundra")
, (600, "sex hundra")
, (800, "åtta hundra")
, (1000, "ett tusen")
, (3000, "tre tusen")
, (5000, "fem tusen")
, (10000, "tio tusen")
, (20000, "tjugo tusen")
, (50000, "femtio tusen")
, (dec 5, "etthundra tusen")
, (dec 6, "en miljon")
, (2 ⋅ dec 6, "två miljoner")
, (10 ⋅ dec 6, "tio miljoner")
, (dec 8, "etthundra miljoner")
, (2 ⋅ dec 8, "tvåhundra miljoner")
, (dec 9, "en miljard")
, (dec 12, "en biljon")
, (dec 15, "en biljard")
, (dec 18, "en triljon")
, (dec 24, "en kvadriljon")
, (dec 30, "en kvintiljon")
, (dec 36, "en sextiljon")
, (dec 42, "en septiljon")
, (dec 48, "en oktiljon")
, (dec 54, "en noniljon")
, (dec 60, "en deciljon")
, (dec 66, "en undeciljon")
-- Rule 3: Numbers larger than one million split up on tusen, miljon, etc
, (123456789, "etthundratjugotre miljoner fyrahundrafemtiosex tusen sjuhundraåttionio")
, (37149204, "trettiosju miljoner etthundrafyrtionio tusen tvåhundrafyra")
, (302145568, "trehundratvå miljoner etthundrafyrtiofem tusen femhundrasextioåtta")
, (1000100, "en miljon etthundra")
, (1305100, "en miljon trehundrafem tusen etthundra")
, (300000102, "trehundra miljoner etthundratvå")
, (300500000, "trehundra miljoner femhundra tusen")
, (25003000000, "tjugofem miljarder tre miljoner")
]
)
, ( "common"
, common defaultInflection
, [ (1, "en")
, (21, "tjugoen")
]
)
]
ordinals ∷ (Integral i) ⇒ TestData i
ordinals =
[ ( "neuter"
, neuter defaultInflection
, [ (0, "nollte")
, (1, "första")
, (2, "andra")
, (3, "tredje")
, (4, "fjärde")
, (5, "femte")
, (6, "sjätte")
, (7, "sjunde")
, (8, "åttonde")
, (9, "nionde")
, (10, "tionde")
, (11, "elfte")
, (12, "tolfte")
, (13, "trettonde")
, (14, "fjortonde")
, (15, "femtonde")
, (16, "sextonde")
, (17, "sjuttonde")
, (18, "artonde")
, (19, "nittonde")
, (20, "tjugonde")
, (21, "tjugoförsta")
, (22, "tjugoandra")
, (23, "tjugotredje")
, (30, "trettionde")
, (40, "fyrtionde")
, (50, "femtionde")
, (60, "sextionde")
, (70, "sjuttionde")
, (80, "åttionde")
, (90, "nittionde")
, (100, "ett hundrade")
, (200, "två hundrade")
, (500, "fem hundrade")
, (1000, "ett tusende")
, (2000, "två tusende")
, (5000, "fem tusende")
, (10000, "tio tusende")
, (20000, "tjugo tusende")
, (50000, "femtio tusende")
, (dec 6, "en miljonte")
, (dec 9, "en miljarte")
, (dec 12, "en biljonte")
, (dec 18, "en triljonte")
]
)
]
partitives ∷ (Integral i) ⇒ TestData (i, i)
partitives =
[ ( "default"
, defaultInflection
, [ ((1, 2), "en halv")
, ((1, 3), "en tredjedel")
, ((3, 4), "tre fjärdedelar")
, ((2, 5), "två femtedelar")
, ((5, 6), "fem sjättedelar")
, ((4, 7), "fyra sjundedelar")
, ((1, 8), "en åttondel")
, ((8, 9), "åtta niondelar")
, ((1, 10), "en tiondel")
, ((1, 11), "en elftedel")
, ((1, 12), "en tolftedel")
, ((1, 13), "en trettondel")
, ((1, 14), "en fjortondel")
, ((1, 15), "en femtondel")
, ((1, 16), "en sextondel")
, ((1, 17), "en sjuttondel")
, ((1, 18), "en artondel")
, ((1, 19), "en nittondel")
, ((1, 20), "en tjugondel")
]
)
]