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;

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

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

  final sourceSymbols = <String>[];
  final unTranslit = <String>[];
  var 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();
}