Skip to content

Commit

Permalink
Доработка токенизатора
Browse files Browse the repository at this point in the history
  • Loading branch information
anyks committed Sep 16, 2020
1 parent d718341 commit 10cf4f5
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
2 changes: 2 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# [Change Log](https://github.com/anyks/alm/archive/release.tar.gz)

## [3.4.3](https://github.com/anyks/alm/archive/v3.4.3.tar.gz) Bug fixes

## [3.4.2](https://github.com/anyks/alm/archive/v3.4.2.tar.gz) Bug fixes

## [3.4.1](https://github.com/anyks/alm/archive/v3.4.1.tar.gz) Bug fixes
Expand Down
2 changes: 1 addition & 1 deletion app/alm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// Название языковой модели
#define ANYKS_LM_NAME "alm"
// Версия приложения
#define ANYKS_LM_VERSION "3.4.2"
#define ANYKS_LM_VERSION "3.4.3"
// Автор приложения
#define ANYKS_LM_AUTHOR "Yuriy Lobarev"
// Телефон автора
Expand Down
30 changes: 17 additions & 13 deletions src/tokenizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,21 +128,25 @@ void anyks::Tokenizer::restore(const wstring & first, const wstring & second, ws
!this->alphabet->isMath(text.back()) ||
(text.back() == L'='))) text.append(1, L' ');
// Устанавливаем регистр у первой буквы в тексте
if(this->isOption(options_t::uppers) && this->alphabet->isSpace(text.back())){
if(this->isOption(options_t::uppers) && (text.empty() || this->alphabet->isSpace(text.back()))){
// Сбрасываем флаг регистра
bool uppers = false;
// Получаем длину собранного текста
const size_t length = text.length();
// Если последний символ является точка
if(text.at(length - 2) == L'.'){
// Если размер текста больше 4-х символов
if(length >= 4){
// Если последние символы не многоточие, разрешаем увеличение регистра
if(text.substr(length - 4, 3).compare(L"...") != 0) uppers = true;
// Если это короткое слово, разрешаем увеличение регистра
} else uppers = true;
// Если последний символ является знаком вопроса или восклицания, разрешаем увеличение регистра
} else if((text.at(length - 2) == L'!') || (text.at(length - 2) == L'?') || (text.at(length - 2) == L'¡') || (text.at(length - 2) == L'¿')) uppers = true;
// Если текст не пустой
if(!text.empty()){
// Получаем длину собранного текста
const size_t length = text.length();
// Если последний символ является точка
if(text.at(length - 2) == L'.'){
// Если размер текста больше 4-х символов
if(length >= 4){
// Если последние символы не многоточие, разрешаем увеличение регистра
if(text.substr(length - 4, 3).compare(L"...") != 0) uppers = true;
// Если это короткое слово, разрешаем увеличение регистра
} else uppers = true;
// Если последний символ является знаком вопроса или восклицания, разрешаем увеличение регистра
} else if((text.at(length - 2) == L'!') || (text.at(length - 2) == L'?') || (text.at(length - 2) == L'¡') || (text.at(length - 2) == L'¿')) uppers = true;
// Разрешаем увеличение регистра
} else uppers = true;
// Если флаг увеличения регистра установлен
if(uppers) const_cast <wstring *> (&first)->front() = this->alphabet->toUpper(first.front());
}
Expand Down

0 comments on commit 10cf4f5

Please sign in to comment.