CyrillicLocale.avt

Переключить прокрутку окна
Загрузить этот исходный код

/*
    Реализация среды исполнения языка программирования
    Объектно-ориентированный продвинутый векторный транслятор

    Copyright © 2021, 2024 Малик Разработчик

    Это свободная программа: вы можете перераспространять ее и/или изменять
    ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она будет полезной,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <https://www.gnu.org/licenses/>.
*/

package avt.lang.locale.rtlang;

import avt.lang.locale.*;

public class CyrillicLocale(Locale)
{
    public (): super("ru-RU", null) {  }

    public boolean isLowerCase(char character) {
        return character >= '\u0430' && character <= '\u045f';
    }

    public boolean isUpperCase(char character) {
        return character >= '\u0400' && character <= '\u042f';
    }

    public char toLowerCase(char character) {
        return character >= '\u0400' && character <= '\u040f' ? (char) (character + 0x0050) : character >= '\u0410' && character <= '\u042f' ? (char) (character + 0x0020) : character;
    }

    public char toUpperCase(char character) {
        return character >= '\u0430' && character <= '\u044f' ? (char) (character - 0x0020) : character >= '\u0450' && character <= '\u045f' ? (char) (character - 0x0050) : character;
    }

    public int orderOf(char character) {
        if(character >= '\u0430' && character <= '\u044f') character -= 0x0020;
        if(character >= '\u0450' && character <= '\u045f') character -= 0x0050;
        return
            character == '\u0401' ? 6 :
            character >= '\u0410' && character <= '\u0415' ? character - '\u0410' :
            character >= '\u0416' && character <= '\u042f' ? character - ('\u0410' - 1) :
            super.orderOf(character) + 33;
        ;
    }
}