arturo-lang / arturo

Simple, expressive & portable programming language for efficient scripting
http://arturo-lang.io
MIT License
700 stars 33 forks source link

[Strings\alphabet] add support for Vietnamese alphabet -> vi #558

Closed github-actions[bot] closed 1 year ago

github-actions[bot] commented 2 years ago

[Strings\alphabet] add support for Vietnamese alphabet -> vi

label: library, enhancement, easy

https://github.com/arturo-lang/arturo/blob/a52e6de9dcf16db4f62c9007a76cf6fa7f12a11e/src/helpers/charsets.nim#L111

# TODO(Strings\alphabet) add support for Faroese alphabet -> fo
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Finnish alphabet -> fi
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for French alphabet -> fr
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Georgian alphabet -> ka
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for German alphabet -> de
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Hungarian alphabet -> hu
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Icelandic alphabet -> is
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Igbo alphabet -> ig
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Indonesian alphabet -> id
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Irish Gaelic alphabet -> ga
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Italian alphabet -> it
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Latin alphabet -> la
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Latvian alphabet -> lv
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Lithuanian alphabet -> lt
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Luxemourgish alphabet -> lb
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Macedonian alphabet -> mk
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Malay alphabet -> ms
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Maltese alphabet -> mt
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Maori alphabet -> mi
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Norwegian alphabet -> no
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Polish alphabet -> pl
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Portuguese alphabet -> pt
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Romanian alphabet -> ro
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Russian alphabet -> ru
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Serbian alphabet -> sr
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Scots Gaelic alphabet -> gd
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Slovak alphabet -> sk
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Slovenian alphabet -> sl
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Swahili alphabet -> sw
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Swedish alphabet -> se
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Turkish alphabet -> tr
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Ukrainian alphabet -> uk
#  label: library, enhancement, easy
# TODO(Strings\alphabet) add support for Vietnamese alphabet -> vi
#  label: library, enhancement, easy

const
    # the main alphabet, by ISO-2 code, 
    # containing only characters that can be found in a dictionary index
    # and in the exact same order as found in a dictionary
    charsets = {
        "el": "αβγδεζηθικλμνξοπρστυφχψω",
        "en": "abcdefghijklmnopqrstuvwxyz",
        "es": "abcdefghijklmnñopqrstuvwxyz"
    }.toTable

    # extra characters that can be found in a given language, by ISO-2 code,
    # but would not form part of its dictionary index
    extras = {
        "el": "άέίόύϊϋΐΰ",
        "en": "",
        "es": "áéíóúü"
    }.toTable

#=======================================
# Methods
#=======================================

proc getCharset*(locale: string, withExtras = false, doUppercase = false): ValueArray =
    var ret: seq[Rune] = @[]

    if doUppercase:
        ret = toSeq(runes(charsets[locale])).map((x)=>toUpper(x))
    else:
        ret = toSeq(runes(charsets[locale]))

    if withExtras:
        var extra: seq[Rune] = @[]
        if doUppercase:
            extra = toSeq(runes(extras[locale])).map((x)=>toUpper(x))
        else:
            extra = toSeq(runes(extras[locale]))

        ret.add(extra)

    result = ret.map((x)=>newChar(x))
ndex 0ea6473a3..2343de1a2 100644
++ b/src/library/Strings.nim

c7d239f2b87bd9a70f358f38455bc8186cb41149

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 1 year ago

Closing issue as stale.