Feature: Converting numbers to ordinals using CSL locales
In order to support the requirements of CSL styles that use ordinals
As a hacker of CSL styles
I want to be able to convert numbers to ordinals
@v1.0 @locale @ordinals @i18n @lang-en
Scenario: English CSL 1.0 locales
Given the locale:
"""
st
nd
rd
th
"""
When I ordinalize these numbers:
| number |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 10 |
| 11 |
| 12 |
| 13 |
| 20 |
| 21 |
| 22 |
| 23 |
| 111 |
| 112 |
| 113 |
| -102 |
Then the ordinals should be:
| ordinal |
| 0th |
| 1st |
| 2nd |
| 3rd |
| 4th |
| 5th |
| 10th |
| 11th |
| 12th |
| 13th |
| 20th |
| 21st |
| 22nd |
| 23rd |
| 111th |
| 112th |
| 113th |
| -102nd |
@v1.0.1 @locale @ordinals @i18n @lang-en
Scenario: English CSL 1.0.1 locales
Given the locale:
"""
th
st
nd
rd
th
th
th
"""
When I ordinalize these numbers:
| num | form | gender | number |
| 0 | | | |
| 1 | | | |
| 2 | | | |
| 3 | | | |
| 4 | | | |
| 5 | | | |
| 10 | | | |
| 11 | | | |
| 12 | | | |
| 13 | | | |
| 20 | | | |
| 21 | | | |
| 22 | | | |
| 23 | | | |
| 111 | | | |
| 112 | | | |
| 113 | | | |
| -102 | | | |
# | 1 | | masculine | |
# | 2 | | feminine | |
# | 3 | | | plural |
Then the ordinals should be:
| ordinal |
| 0th |
| 1st |
| 2nd |
| 3rd |
| 4th |
| 5th |
| 10th |
| 11th |
| 12th |
| 13th |
| 20th |
| 21st |
| 22nd |
| 23rd |
| 111th |
| 112th |
| 113th |
| -102nd |
# | 1st |
# | 2nd |
# | 3rd |
@v1.0.1 @locale @ordinals @i18n @gender @lang-de
Scenario: Gendered German CSL 1.0.1 locales
Given the locale:
"""
.
erstes
erste
ersten
erster
ersten
zweites
zweite
zweiter
"""
When I ordinalize these numbers:
| num | form | gender | number |
| 0 | | | |
| 1 | | | |
| 2 | | | |
| 3 | | | |
| 101 | | | |
| 1 | long | | |
| 2 | long | | |
| 3 | long | | |
| 1 | long | feminine | |
| 1 | long | feminine | plural |
| 1 | long | feminine | singular |
| 2 | long | feminine | |
| 3 | long | feminine | |
| 1 | long | masculine | |
| 2 | long | masculine | |
| 3 | long | masculine | |
Then the ordinals should be:
| ordinal |
| 0. |
| 1. |
| 2. |
| 3. |
| 101. |
| erstes |
| zweites |
| 3. |
| erste |
| ersten |
| erste |
| zweite |
| 3. |
| erster |
| zweiter |
| 3. |
@v1.0.1 @locale @ordinals @i18n @gender @lang-fr
Scenario: Gendered French CSL 1.0.1 locales
Given the locale:
"""
e
es
re
res
re
res
er
ers
"""
When I ordinalize these numbers:
| num | form | gender | number |
| 0 | | | |
| 1 | | | |
| 1 | | feminine | |
| 1 | | masculine | |
| 1 | | neutral | |
| 1 | | feminine | plural |
| 1 | | masculine | plural |
| 2 | | | |
| 3 | | | |
| 3 | | | plural |
| 999 | | | |
| 11 | | | |
| 21 | | | |
| 101 | | | |
| 1001 | | | |
| 301 | | | |
| 21 | | masculine | |
| 1001 | | masculine | |
| 42 | | masculine | |
| 42 | | masculine | plural |
Then the ordinals should be:
| ordinal |
| 0e |
| 1re |
| 1re |
| 1er |
| 1re |
| 1res |
| 1ers |
| 2e |
| 3e |
| 3es |
| 999e |
| 11e |
| 21e |
| 101e |
| 1001e |
| 301e |
| 21e |
| 1001e |
| 42e |
| 42es |
@v1.0.1 @locale @ordinals @i18n @lang-nl
Scenario: Dutch CSL 1.0.1 locales (nulde form)
Given the locale:
"""
ste
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
"""
When I ordinalize these numbers:
| number |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 41 |
| 52 |
| 63 |
| 74 |
| 88 |
| 99 |
| 101 |
| 102 |
| 108 |
| 111 |
| 112 |
| 113 |
Then the ordinals should be:
| ordinal |
| 0de |
| 1ste |
| 2de |
| 3de |
| 4de |
| 5de |
| 6de |
| 7de |
| 8ste |
| 9de |
| 10de |
| 11de |
| 12de |
| 13de |
| 14de |
| 15de |
| 16de |
| 17de |
| 18de |
| 19de |
| 20ste |
| 21ste |
| 22ste |
| 23ste |
| 41ste |
| 52ste |
| 63ste |
| 74ste |
| 88ste |
| 99ste |
| 101ste |
| 102de |
| 108ste |
| 111de |
| 112de |
| 113de |
@v1.0.1 @locale @ordinals @i18n @lang-nl
Scenario: Dutch CSL 1.0.1 locales (nulste form)
Given the locale:
"""
ste
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
de
"""
When I ordinalize these numbers:
| number |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 41 |
| 52 |
| 63 |
| 74 |
| 88 |
| 99 |
| 101 |
| 102 |
| 108 |
| 111 |
| 112 |
| 113 |
| 142 |
| 163 |
| 1216 |
| 919 |
| 379 |
| 420 |
Then the ordinals should be:
| ordinal |
| 0ste |
| 1ste |
| 2de |
| 3de |
| 4de |
| 5de |
| 6de |
| 7de |
| 8ste |
| 9de |
| 10de |
| 11de |
| 12de |
| 13de |
| 14de |
| 15de |
| 16de |
| 17de |
| 18de |
| 19de |
| 20ste |
| 21ste |
| 22ste |
| 23ste |
| 41ste |
| 52ste |
| 63ste |
| 74ste |
| 88ste |
| 99ste |
| 101ste |
| 102de |
| 108ste |
| 111de |
| 112de |
| 113de |
| 142ste |
| 163ste |
| 1216de |
| 919de |
| 379ste |
| 420ste |
@v1.0.1 @locale @ordinals @i18n @gender @lang-es
Scenario: Gendered Spanish CSL 1.0.1 locales
Given the locale:
"""
.º
.º
.ª
"""
When I ordinalize these numbers:
| num | form | gender | number |
| 0 | | | |
| 1 | | | |
| 2 | | | |
| 3 | | | |
| 4 | | | |
| 5 | | | |
| 6 | | | |
| 7 | | | |
| 8 | | | |
| 9 | | | |
| 10 | | | |
| 1 | | feminine | |
| 1 | | masculine | |
| 1 | | masculine | singular |
| 1 | | masculine | plural |
| 3 | | feminine | |
| 3 | | masculine | |
| 2 | | feminine | |
| 23 | | | |
| 999 | | | |
| 11 | | | |
| 11 | | feminine | |
| 11 | | masculine | |
| 21 | | | |
| 101 | | | |
| 1001 | | feminine | |
| 301 | | | |
| 21 | | masculine | singular |
| 21 | | masculine | plural |
| 1001 | | masculine | |
Then the ordinals should be:
| ordinal |
| 0.º |
| 1.º |
| 2.º |
| 3.º |
| 4.º |
| 5.º |
| 6.º |
| 7.º |
| 8.º |
| 9.º |
| 10.º |
| 1.ª |
| 1.º |
| 1.º |
| 1.º |
| 3.ª |
| 3.º |
| 2.ª |
| 23.º |
| 999.º |
| 11.º |
| 11.ª |
| 11.º |
| 21.º |
| 101.º |
| 1001.ª |
| 301.º |
| 21.º |
| 21.º |
| 1001.º |
@v1.0.1 @locale @ordinals @i18n @gender @lang-it
Scenario: Gendered Italian CSL 1.0.1 locales
Given the locale:
"""
º
º
ª
"""
When I ordinalize these numbers:
| num | form | gender | number |
| 0 | | | |
| 1 | | | |
| 2 | | | |
| 3 | | | |
| 4 | | | |
| 5 | | | |
| 6 | | | |
| 7 | | | |
| 8 | | | |
| 9 | | | |
| 10 | | | |
| 1 | | feminine | |
| 1 | | masculine | |
| 1 | | masculine | singular |
| 1 | | masculine | plural |
| 3 | | feminine | |
| 3 | | masculine | |
| 2 | | feminine | |
| 23 | | | |
| 999 | | | |
| 11 | | | |
| 11 | | feminine | |
| 11 | | masculine | |
| 21 | | | |
| 101 | | | |
| 1001 | | feminine | |
| 301 | | | |
| 21 | | masculine | singular |
| 21 | | masculine | plural |
| 1001 | | masculine | |
Then the ordinals should be:
| ordinal |
| 0º |
| 1º |
| 2º |
| 3º |
| 4º |
| 5º |
| 6º |
| 7º |
| 8º |
| 9º |
| 10º |
| 1ª |
| 1º |
| 1º |
| 1º |
| 3ª |
| 3º |
| 2ª |
| 23º |
| 999º |
| 11º |
| 11ª |
| 11º |
| 21º |
| 101º |
| 1001ª |
| 301º |
| 21º |
| 21º |
| 1001º |
# @v1.0.1 @locale @ordinals @i18n @gender @lang-sv
# Scenario: Gendered Swedish CSL 1.0.1 locales
# Given the locale:
# """
#
#
#
# :e
#
# :a
# :e
# :a
#
# :a
# :e
# :a
#
# :e
# :e
# :e
# :e
#
# :e
# :e
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
# :e
# :e
#
#
# """
# When I ordinalize these numbers:
# | num | form | gender | number |
# | 0 | | | |
# | 1 | | | |
# | 2 | | | |
# | 3 | | | |
# | 4 | | | |
# | 5 | | | |
# | 6 | | | |
# | 7 | | | |
# | 8 | | | |
# | 9 | | | |
# | 10 | | | |
# | 1 | | feminine | |
# | 1 | | masculine | |
# | 2 | | feminine | |
# | 2 | | masculine | |
# | 23 | | | |
# | 999 | | | |
# | 11 | | | |
# | 11 | | feminine | |
# | 11 | | masculine | |
# | 21 | | | |
# # | 101 | | | |
# # | 1001 | | feminine | |
# # | 301 | | | |
# | 21 | | masculine | singular |
# | 21 | | masculine | plural |
# # | 1001 | | masculine | |
# Then the ordinals should be:
# | ordinal |
# | 0:e |
# | 1:a |
# | 2:a |
# | 3:e |
# | 4:e |
# | 5:e |
# | 6:e |
# | 7:e |
# | 8:e |
# | 9:e |
# | 10:e |
# | 1:a |
# | 1:e |
# | 2:a |
# | 2:e |
# | 23:e |
# | 999:e |
# | 11:e |
# | 11:e |
# | 11:e |
# | 21:e |
# # | 101:e |
# # | 1001:e |
# # | 301:e |
# | 21:e |
# | 21:e |
# # | 1001:e |
# @v1.0.1 @locale @ordinals @i18n @gender @lang-pl
# Scenario: Gendered Polish CSL 1.0.1 locales
# Given the locale:
# """
#
#
#
# :e
#
#
#
# """
# When I ordinalize these numbers:
# | num | form | gender | number |
# | 0 | | | |
# | 1 | | | |
# | 2 | | | |
# | 3 | | | |
# | 4 | | | |
# | 5 | | | |
# | 6 | | | |
# | 7 | | | |
# | 8 | | | |
# | 9 | | | |
# | 10 | | | |
# | 1 | | feminine | |
# | 1 | | masculine | |
# | 2 | | feminine | |
# | 2 | | masculine | |
# | 23 | | | |
# | 999 | | | |
# | 11 | | | |
# | 11 | | feminine | |
# | 11 | | masculine | |
# | 21 | | | |
# Then the ordinals should be:
# | ordinal |
# | 0:e |
# | 1:a |
# | 2:a |
# | 3:e |
# | 4:e |
# | 5:e |
# | 6:e |
# | 7:e |
# | 8:e |
# | 9:e |
# | 10:e |
# | 1:a |
# | 1:e |
# | 2:a |
# | 2:e |
# | 23:e |
# | 999:e |
# | 11:e |
# | 11:e |
# | 11:e |
# | 21:e |