unTranslit method

String unTranslit({
  1. required String source,
})

Method for converting from translit for the source value

Implementation

String unTranslit({required String source}) {
  if (source.isEmpty) return source;

  final regExp = RegExp('([a-z]+)', caseSensitive: false, multiLine: true);

  if (!regExp.hasMatch(source)) return source;

  final sourceSymbols = <String>[];
  final unTranslit = <String>[];
  final deTransliteratedSymbol = <String, String>{};

  _complicatedSymbols.forEach((key, value) {
    source = source.replaceAll(value, key);
  });

  sourceSymbols.addAll(source.split(''));

  _transliteratedSymbol.forEach((key, value) {
    deTransliteratedSymbol[value] = key;
  });

  for (final element in sourceSymbols) {
    final transElement = deTransliteratedSymbol.containsKey(element)
        ? deTransliteratedSymbol[element] ?? ''
        : element;
    unTranslit.add(transElement);
  }

  return unTranslit.join();
}