# `TITextProcessing`
### Библиотека для работы с регулярными выражениями
## - `TextFormatter`
Класс `TextFormatter` представляет из себя сервис, принимающий регулярное выражение на вход и предоставляющий возможность генерации следующих объектов:
\- `Replacement template` из `getRegexReplacement()`;
\- `Placeholder` из `getRegexPlaceholder()`;
\- `Formatter text` из `getFormattedText(_ text: String)`
#### `func getRegexReplacement()`
Метод, преобразующий входящее регулярное выражение в шаблон подстановки, например:
**Input**: `(\\d{4}) ?(\\d{4}) ?(\\d{4}) ?(\\d{4})`
**Output**: `$1 $2 $3 $4`
#### `func getRegexPlaceholder()`
Метод, преобразующий входящее регулярное выражение в текст-заполнитесь a.k.a placeholder, например:
**Input**: `(\\d{4}) ?(\\d{4}) ?(\\d{4}) ?(\\d{4})`
**Output**: `1234 5678 9012 3456`
#### `func getFormattedText(_ text: String) -> String`
Метод, преобразующий входящий текст к нужному формату, заранее определенному посредством указания регулярного выражения, например:
**Input**: `2200111555550080`
**Output**: `2200 1115 5555 0080`
> P.S. Учитываем, что `TextFormatter` был проинициализирован со слеюущим регулярным выражением: `(\\d{4}) ?(\\d{4}) ?(\\d{4}) ?(\\d{4})`
## - `RegexReplaceGenerator`
Класс, отвечающий за генерацию `PCREGeneratorItem` из входящего регулярного выражения. Использует библиотеку `Antlr4` и `PCRE` для работы.
#### `static func generateReplacement(for regex: String) -> PCREGeneratorItem`
Функция, преобразующий входящее регулярное выражение в структуру, содержащую шаблон подстановки и матрицу символов, например:
```swift
let item = RegexReplaceGenerator. generateReplacement(for: "(\\d{2})\\/?(\\d{2})")
print(item.regexReplaceString)
/*
Выведет в консоль:
"$1\\/$2"
*/
print(item.matrixOfSymbols)
/*
Выведет в консоль:
[
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["/"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
]
*/
```
Итоговый `PCREGeneratorItem` содержит следующие данные:
`regexReplaceString` - итоговый шаблон подстановки для изначального регулярного выражения;
`matrixOfSymbols` - матрица символов, содержащая все возможные символы для каждого элемента в изначальном регулярном выражении
## - `RegexPlaceholderGenerator`
Класс, отвечающий за генерацию текста-заполнителя a.k.a placeholder.
#### `static func generatePlaceholder(matrixOfSymbols: [[Character]]) -> String`
Функция, преобразующая входящую матрицу символов в текст-заполнитель, например:
```swift
let matrix: [[Character]] = [
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["/"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
]
let placeholder = RegexPlaceholderGenerator.generatePlaceholder(matrixOfSymbols: matrix)
print(placeholder)
/*
Выведет в консоль:
"12/34"
*/
```