diff options
author | Eduardo Julian | 2020-08-12 01:01:30 -0400 |
---|---|---|
committer | Eduardo Julian | 2020-08-12 01:01:30 -0400 |
commit | ddcc768d9d2e798814989037a286df9951840bcd (patch) | |
tree | 1db8ae1685671765dc71358853b412b279007f1d /stdlib/source/test/lux/locale/language.lux | |
parent | 56fa0ab84c1112ea297c46814e580ca8d11b101e (diff) |
WIP: New build-tool named Aedifex (can read project descriptions).
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/test/lux/locale/language.lux | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/stdlib/source/test/lux/locale/language.lux b/stdlib/source/test/lux/locale/language.lux new file mode 100644 index 000000000..1bb81e06a --- /dev/null +++ b/stdlib/source/test/lux/locale/language.lux @@ -0,0 +1,266 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + [monad (#+ do)] + [hash (#+ Hash)]] + [data + ["." text] + [number + ["n" nat]] + [collection + ["." set (#+ Set)] + ["." list ("#@." functor fold)]]] + [macro + ["." template]] + [math + ["." random]]] + {1 + ["." /]}) + +(type: Bundle + {#count Nat + #names (Set Text) + #codes (Set Text) + #languages (Set /.Language) + #test Test}) + +(template [<bundle> <languages>] + [(def: <bundle> + Bundle + (let [count (template.count <languages>) + languages (: (List /.Language) + (`` (list (~~ (template.splice <languages>)))))] + {#count count + #names (|> languages (list@map /.name) (set.from-list text.hash)) + #codes (|> languages (list@map /.code) (set.from-list text.hash)) + #languages (|> languages (set.from-list /.hash)) + #test (_.cover <languages> + true)}))] + + [languages/a [/.afar /.abkhazian /.achinese /.acoli /.adangme + /.adyghe /.afro-asiatic /.afrihili /.afrikaans /.ainu + /.akan /.akkadian /.aleut /.algonquian /.southern-altai + /.amharic /.old-english /.angika /.apache /.arabic + /.official-aramaic /.aragonese /.mapudungun /.arapaho /.artificial + /.arawak /.assamese /.asturian /.athapascan /.australian + /.avaric /.avestan /.awadhi /.aymara /.azerbaijani]] + [languages/b [/.banda /.bamileke /.bashkir /.baluchi /.bambara + /.balinese /.basa /.baltic /.beja /.belarusian + /.bemba /.bengali /.berber /.bhojpuri /.bihari + /.bikol /.bini /.bislama /.siksika /.bantu + /.tibetan /.bosnian /.braj /.breton /.batak + /.buriat /.buginese /.bulgarian /.blin]] + [languages/c [/.caddo /.central-american-indian /.galibi-carib /.catalan /.caucasian + /.cebuano /.celtic /.czech /.chamorro /.chibcha + /.chechen /.chagatai /.chuukese /.mari /.chinook + /.choctaw /.chipewyan /.cherokee /.church-slavic /.chuvash + /.cheyenne /.chamic /.montenegrin /.coptic /.cornish + /.corsican /.creoles-and-pidgins/english /.creoles-and-pidgins/french /.creoles-and-pidgins/portuguese /.cree + /.crimean /.creoles-and-pidgins /.kashubian /.cushitic /.welsh]] + [languages/d [/.dakota /.danish /.dargwa /.land-dayak /.delaware + /.slavey /.dogrib /.dinka /.dhivehi /.dogri + /.dravidian /.lower-sorbian /.duala /.middle-dutch /.dyula + /.dzongkha]] + [languages/e [/.efik /.egyptian /.ekajuk /.greek /.elamite + /.english /.middle-english /.esperanto /.estonian /.basque + /.ewe /.ewondo]] + [languages/f [/.fang /.faroese /.persian /.fanti /.fijian + /.filipino /.finnish /.finno-ugrian /.fon /.french + /.middle-french /.old-french /.northern-frisian /.eastern-frisian /.western-frisian + /.fulah /.friulian]] + [languages/g [/.ga /.gayo /.gbaya /.germanic /.german + /.geez /.gilbertese /.gaelic /.irish /.galician + /.manx /.middle-high-german /.old-high-german /.gondi /.gorontalo + /.gothic /.grebo /.ancient-greek /.guarani /.swiss-german + /.gujarati /.gwich'in]] + [languages/h [/.haida /.haitian /.hausa /.hawaiian /.hebrew + /.herero /.hiligaynon /.himachali /.hindi /.hittite + /.hmong /.hiri-motu /.croatian /.upper-sorbian /.hungarian + /.hupa /.armenian]] + [languages/i [/.iban /.igbo /.ido /.sichuan-yi /.ijo + /.inuktitut /.interlingue /.iloko /.interlingua /.indic + /.indonesian /.indo-european /.ingush /.inupiaq /.iranian + /.iroquoian /.icelandic /.italian]] + [languages/j [/.javanese /.lojban /.japanese /.judeo-persian /.judeo-arabic]] + [languages/k [/.kara-kalpak /.kabyle /.kachin /.kalaallisut /.kamba + /.kannada /.karen /.kashmiri /.georgian /.kanuri + /.kawi /.kazakh /.kabardian /.khasi /.khoisan + /.central-khmer /.khotanese /.gikuyu /.kinyarwanda /.kyrgyz + /.kimbundu /.konkani /.komi /.kongo /.korean + /.kosraean /.kpelle /.karachay-balkar /.karelian /.kru + /.kurukh /.kwanyama /.kumyk /.kurdish /.kutenai]] + [languages/l [/.ladino /.lahnda /.lamba /.lao /.latin + /.latvian /.lezghian /.limburgan /.lingala /.lithuanian + /.mongo /.lozi /.luxembourgish /.luba-lulua /.luba-katanga + /.ganda /.luiseno /.lunda /.luo /.lushai]] + [languages/m [/.madurese /.magahi /.marshallese /.maithili /.makasar + /.malayalam /.mandingo /.austronesian /.marathi /.masai + /.moksha /.mandar /.mende /.middle-irish /.mi'kmaq + /.minangkabau /.macedonian /.mon-khmer /.malagasy /.maltese + /.manchu /.manipuri /.manobo /.mohawk /.mongolian + /.mossi /.maori /.malay /.munda /.creek + /.mirandese /.marwari /.burmese /.mayan /.erzya]] + [languages/n [/.nahuatl /.north-american-indian /.neapolitan /.nauru /.navajo + /.south-ndebele /.north-ndebele /.ndonga /.low-german /.nepali + /.newari /.nias /.niger-kordofanian /.niuean /.dutch + /.nynorsk /.bokmal /.nogai /.old-norse /.norwegian + /.n'ko /.northern-sotho /.nubian /.old-newari /.nyanja + /.nyamwezi /.nyankole /.nyoro /.nzima]] + [languages/o [/.occitan /.ojibwa /.oriya /.oromo /.osage + /.ossetic /.ottoman-turkish /.otomian]] + [languages/p [/.papuan /.pangasinan /.pahlavi /.pampanga /.punjabi + /.papiamento /.palauan /.old-persian /.philippine /.phoenician + /.pali /.polish /.pohnpeian /.portuguese /.prakrit + /.old-provencal /.pashto]] + [languages/q [/.quechua]] + [languages/r [/.rajasthani /.rapanui /.rarotongan /.romance /.romansh + /.romany /.romanian /.rundi /.aromanian /.russian]] + [languages/s [/.sandawe /.sango /.yakut /.south-american-indian /.salishan + /.samaritan-aramaic /.sanskrit /.sasak /.santali /.sicilian + /.scots /.selkup /.semitic /.old-irish /.sign + /.shan /.sidamo /.sinhalese /.siouan /.sino-tibetan + /.slavic /.slovak /.slovenian /.southern-sami /.northern-sami + /.sami /.lule /.inari /.samoan /.skolt-sami + /.shona /.sindhi /.soninke /.sogdian /.somali + /.songhai /.southern-sotho /.spanish /.albanian /.sardinian + /.sranan-tongo /.serbian /.serer /.nilo-saharan /.swati + /.sukuma /.sundanese /.susu /.sumerian /.swahili + /.swedish /.classical-syriac /.syriac]] + [languages/t [/.tahitian /.tai /.tamil /.tatar /.telugu + /.timne /.tereno /.tetum /.tajik /.tagalog + /.thai /.tigre /.tigrinya /.tiv /.tokelau + /.klingon /.tlingit /.tamashek /.tonga /.tongan + /.tok-pisin /.tsimshian /.tswana /.tsonga /.turkmen + /.tumbuka /.tupi /.turkish /.altaic /.tuvalu + /.twi /.tuvinian]] + [languages/u [/.udmurt /.ugaritic /.uyghur /.ukrainian /.umbundu + /.urdu /.uzbek]] + [languages/v [/.vai /.venda /.vietnamese /.volapük /.votic]] + [languages/w [/.wakashan /.walamo /.waray /.washo /.sorbian + /.walloon /.wolof]] + [languages/x [/.kalmyk /.xhosa]] + [languages/y [/.yao /.yapese /.yiddish /.yoruba /.yupik]] + [languages/z [/.zapotec /.blissymbols /.zenaga /.standard-moroccan-tamazight /.zhuang + /.chinese /.zande /.zulu /.zuni /.zaza]] + [languages/etc [/.uncoded /.multiple /.undetermined /.not-applicable]] + ) + +(def: languages + (List Bundle) + (list ..languages/a + ..languages/b + ..languages/c + ..languages/d + ..languages/e + ..languages/f + ..languages/g + ..languages/h + ..languages/i + ..languages/j + ..languages/k + ..languages/l + ..languages/m + ..languages/n + ..languages/o + ..languages/p + ..languages/q + ..languages/r + ..languages/s + ..languages/t + ..languages/u + ..languages/v + ..languages/w + ..languages/x + ..languages/y + ..languages/z + ..languages/etc)) + +(def: (aggregate lens hash territories) + (All [a] (-> (-> Bundle (Set a)) + (Hash a) + (List Bundle) + [Nat (Set a)])) + (list@fold (function (_ bundle [count set]) + [(n.+ count (get@ #count bundle)) + (set.union set (lens bundle))]) + [0 (set.new hash)] + territories)) + +(def: languages-test + Test + (|> ..languages + list.reverse + (list@map (get@ #test)) + (list@fold _.and + (`` ($_ _.and + (~~ (template [<lens> <tag> <hash>] + [(let [[count set] (..aggregate (get@ <tag>) <hash> ..languages)] + (_.cover [<lens>] + (n.= count (set.size set))))] + + [/.name #names text.hash] + [/.code #codes text.hash] + [/.equivalence #languages /.hash] + )) + ))))) + +(template: (!aliases <reference> <aliases>) + (_.cover <aliases> + (list.every? (:: /.equivalence = <reference>) + (`` (list (~~ (template.splice <aliases>))))))) + +(def: aliases-test + Test + ($_ _.and + ## A + (!aliases /.official-aramaic [/.imperial-aramaic]) + (!aliases /.asturian [/.bable /.leonese /.asturleonese]) + ## B + (!aliases /.bini [/.edo]) + (!aliases /.blin [/.bilin]) + ## C + (!aliases /.catalan [/.valencian]) + (!aliases /.church-slavic [/.old-slavonic /.church-slavonic /.old-bulgarian /.old-church-slavonic]) + ## D + (!aliases /.dhivehi [/.maldivian]) + ## G + (!aliases /.swiss-german [/.alemannic /.alsatian]) + ## I + (!aliases /.sichuan-yi [/.nuosu]) + ## K + (!aliases /.kachin [/.jingpho]) + (!aliases /.kalaallisut [/.greenlandic]) + (!aliases /.khotanese [/.sakan]) + ## M + (!aliases /.mi'kmaq [/.micmac]) + ## N + (!aliases /.newari [/.nepal-bhasa]) + (!aliases /.dutch [/.flemish]) + (!aliases /.northern-sotho [/.pedi /.sepedi]) + (!aliases /.old-newari [/.classical-newari /.classical-nepal-bhasa]) + (!aliases /.nyanja [/.chichewa /.chewa]) + ## O + (!aliases /.occitan [/.provencal]) + ## P + (!aliases /.pampanga [/.kapampangan]) + ## R + (!aliases /.rarotongan [/.cook-islands-maori]) + (!aliases /.romanian [/.moldavian /.moldovan]) + (!aliases /.aromanian [/.arumanian /.macedo-romanian]) + ## S + (!aliases /.spanish [/.castilian]) + ## X + (!aliases /.kalmyk [/.oirat]) + ## Z + (!aliases /.zaza [/.dimili /.dimli /.kirdki /.kirmanjki /.zazaki]) + )) + +(def: #export test + Test + (<| (_.covering /._) + (_.with-cover [/.Language]) + ($_ _.and + ..languages-test + ..aliases-test + ))) |