SpelledOut.jl
SpelledOut.jl copied to clipboard
nicer way to add new languages
in master, the list of languages supported is hardcoded. what if we dispatch on Val{:sym}? something like:
function spelled_out(
number::Number;
lang::Symbol = Symbol(first(split(ENV["LANG"], '.'))),
dict::Symbol = :modern
)
return spelled_out_impl(number,Val{lang},dict)
end
#catchall
function spelled_out_impl(number,lang,dict)
throw(error("We do not support $lang yet. Please make an issue and someone might be able to help you, or feel free to contribute."))
end
and each impl. could just simply do:
function spelled_out_impl(number,lang::Type{Val{:ru}},dict)
the use of the type instead of building the val is because there is a cost on building the struct, that is elided completely when only using the type
as a nice consequence of using this, an external user could plug its own spelling function, or modify the output of existing ones
This is a good idea! Do you want to make a PR or should I do this?
I'm writing the Spanish support, I could add the modification in that PR
That would be good, thank you Andrés.
Would it still be a keyword argument? I.e., would I be able to write
spelled_out(123467, lang = :ru)
?
And would we still be able to have aliases and equivalences?