implode function

String implode(
  1. String input
)

Implementation

String implode(String input) {
  /// 인접한 모음을 하나의 복합 모음으로 합친다.
  final letters = mixMedial(input.split(''));

  /// 모음으로 시작하는 그룹들을 만든다.
  final createdGroups = createGroupsByMedial(letters);

  /// 각 그룹을 순회하면서 복합자음을 정리하고, 앞 그룹에서 종성으로 사용하고 남은 자음들을 초성으로 가져온다.
  final groups =
      mixFinaleAndReplaceTheRemainingFinalesToInitials(createdGroups);

  /// 각 글자에 해당하는 블록 단위로 나눈다.
  final blocks = groups.fold<List<List<String>>>(
      [], (acc, group) => acc..addAll(divideByBlock(group)));

  return blocks.map(assemble).join();
}