mirror of
https://github.com/alvierahman90/otfmacros.git
synced 2024-12-15 12:01:59 +00:00
fix pymacro not using custom defined plurals
This commit is contained in:
parent
7f19892571
commit
10d0b76087
@ -26,8 +26,18 @@ def get_args():
|
|||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def pluralize(word):
|
def pluralize(input):
|
||||||
""" Returns the plural form of a word. """
|
""" Returns the plural form of a word. """
|
||||||
|
if isinstance(input, list):
|
||||||
|
# use custom plural if defined
|
||||||
|
if len(input) > 1:
|
||||||
|
return input[1]
|
||||||
|
|
||||||
|
return pluralize_word(input[0])
|
||||||
|
|
||||||
|
return pluralize_word(input)
|
||||||
|
|
||||||
|
def pluralize_word(word):
|
||||||
def is_vowel(letter):
|
def is_vowel(letter):
|
||||||
if not isinstance(letter, str):
|
if not isinstance(letter, str):
|
||||||
raise ValueError("Argument 'letter' must be type str")
|
raise ValueError("Argument 'letter' must be type str")
|
||||||
@ -35,7 +45,6 @@ def pluralize(word):
|
|||||||
raise ValueError("Argument 'letter' must be 1 long")
|
raise ValueError("Argument 'letter' must be 1 long")
|
||||||
return letter in 'aeiou'
|
return letter in 'aeiou'
|
||||||
|
|
||||||
|
|
||||||
# TODO add more complex plural forms
|
# TODO add more complex plural forms
|
||||||
if word[-1] in 'sxz' or word[-2:] in ['ch', 'sh']:
|
if word[-1] in 'sxz' or word[-2:] in ['ch', 'sh']:
|
||||||
return word + 'es'
|
return word + 'es'
|
||||||
@ -130,7 +139,7 @@ def process(input, macros):
|
|||||||
value = token
|
value = token
|
||||||
|
|
||||||
if token.lower() in macros.keys():
|
if token.lower() in macros.keys():
|
||||||
value = macros[token.lower()]
|
value = macros[token.lower()][0]
|
||||||
elif token.lower() in [f"{m}s" for m in macros.keys()]:
|
elif token.lower() in [f"{m}s" for m in macros.keys()]:
|
||||||
value = pluralize(macros[token.lower()[:-1]])
|
value = pluralize(macros[token.lower()[:-1]])
|
||||||
|
|
||||||
@ -193,7 +202,7 @@ def get_macros(input, child=False):
|
|||||||
# store macros as dict and return
|
# store macros as dict and return
|
||||||
for index, macro in enumerate(macros):
|
for index, macro in enumerate(macros):
|
||||||
if len(macro) >= 2:
|
if len(macro) >= 2:
|
||||||
response[macro[0].lower()] = macro[1]
|
response[macro[0].lower()] = macro[1:]
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def is_otf_macro_start(token, line):
|
def is_otf_macro_start(token, line):
|
||||||
|
Loading…
Reference in New Issue
Block a user