moassugi property

String get moassugi

Implementation

String get moassugi {
  String string = this;

  for (var key in _ijungmoeum.keys) {
    List<String> moeums = _ijungmoeum[key]!;
    for (var moeum in moeums) {
      if (!string.contains(moeum)) continue;
      string = string.replaceAll(moeum, key);
      break;
    }
  }

  List<(String, bool)> list = string.split('').map<(String, bool)>((e) => (e, e.isJaeum)).toList();
  List<String> result = [], char = [];
  bool moeumFlag = false;

  for (final entry in list.reversed) {
    final charValue = entry.$1;
    final isJaeum = entry.$2;

    char.insert(0, charValue);

    if (!isJaeum) {
      moeumFlag = true;
      continue;
    }

    if (moeumFlag) {
      result.insert(0, char.join('')._moassugi);
      char.clear();
      moeumFlag = false;
    }
  }

  return result.join('');
}