From 3774e426f8c401af8f89ef1df6864df22624fe77 Mon Sep 17 00:00:00 2001 From: babaev-an Date: Wed, 1 Oct 2025 07:15:15 +0300 Subject: [PATCH] 20250930-1 --- .../extensions/string_extension.py | 90 +++++-------------- .../extensions/string_extension_constant.py | 21 +++++ 2 files changed, 41 insertions(+), 70 deletions(-) create mode 100644 anb_python_components/extensions/string_extension_constant.py diff --git a/anb_python_components/extensions/string_extension.py b/anb_python_components/extensions/string_extension.py index 5565ef1..ac4ac59 100644 --- a/anb_python_components/extensions/string_extension.py +++ b/anb_python_components/extensions/string_extension.py @@ -1,77 +1,27 @@ # anb_python_components/extensions/string_extension.py +from string_extension_constant import StringExtensionConstant + class StringExtension: """ Расширение строк. """ - __RUSSIAN_LETTERS = set('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я') - / ** - * @ var - array | string[] $RussianLettersTransliteration - Набор - русских - букв - в - транслитерации - * / - private - static - array $RussianLettersTransliteration = - [ - "a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", - "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", - "h", "c", "ch", "sh", "sch", "j", "i", "j", "e", "yu", "ya", - "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", - "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", - "H", "C", "Ch", "Sh", "Sch", "J", "I", "J", "E", "Yu", "Ya" - ]; - -/ ** -*Сравнивает -две -строки. -* -* @ param -string | null $str1 -Первая -строка. -* @ param -string | null $str2 -Вторая -строка. -* @ param -bool $ignoreCase -Игнорировать -регистр. -* -* @ return int -Результат -сравнения.Возвращаемые -значения: -* -*-1 | значение $str1 -меньше -значения $str2. -*0 | значения $str1 -и $str2 -равны. -*1 | значение $str1 -больше -значения $str2. -* / -public -static -function -Compare(string | null $str1, string | null $str2, bool $ignoreCase = false): int -{ -// Если -оба -пусты -if (self::IsNullOrWhitespace($str1) & & self: : - IsNullOrWhitespace($str2)) -// - то + def Compare(self, str1, str2, ignore_case=False): + (""" + Сравнивает две строки. + :param str1: Первая строка. + :param str2: Вторая строка. + :param ignore_case: Игнорировать регистр. По умолчанию, False. + :return: Результат сравнения. Возвращаемые значения: + -1 | значение $str1 меньше значения $str2. + 0 | значения $str1 и $str2 равны. + 1 | значение $str1 больше значения $str2. + """ + # Если обе строки пусты + # if (self::IsNullOrWhitespace($str1) and self::sNullOrWhitespace($str2)): + # // - то равны return 0; @@ -84,7 +34,7 @@ return 0; второй пуст if (!self::IsNullOrWhitespace($str1) & & self: : - IsNullOrWhitespace($str2)) +IsNullOrWhitespace($str2)) // - то первый больше @@ -99,7 +49,7 @@ return 1; не пуст if (!self::IsNullOrWhitespace($str1) & & self: : - IsNullOrWhitespace($str2)) +IsNullOrWhitespace($str2)) // - то первый меньше @@ -226,8 +176,8 @@ if ($ignoreCase) // - если это буква из русского алфавита if (self:: - IsRussianLetter($letter)) { - // -- транслитерирую + IsRussianLetter($letter)) { + // -- транслитерирую эту букву $resultTransliteration = self::TransliterationFromRussian($letter); diff --git a/anb_python_components/extensions/string_extension_constant.py b/anb_python_components/extensions/string_extension_constant.py new file mode 100644 index 0000000..7b6c48b --- /dev/null +++ b/anb_python_components/extensions/string_extension_constant.py @@ -0,0 +1,21 @@ +# anb_python_components/extensions/string_extension_constant.py + + +class StringExtensionConstants: + """ + Константы для расширения строк. + """ + + # Кортеж из русских букв + russian_letters = ('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', + 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', + 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', + 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я') + + # Кортеж из русских букв в транслитерации + russian_letters_transliteration = ("a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", + "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", + "h", "c", "ch", "sh", "sch", "j", "i", "j", "e", "yu", "ya", + "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J", + "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", + "H", "C", "Ch", "Sh", "Sch", "J", "I", "J", "E", "Yu", "Ya")