convert method

  1. @override
String convert(
  1. List<int> input
)
override

Converts input and returns the result of the conversion.

Implementation

@override
String convert(List<int> input) {
  int leadPointer = 0;
  StringBuffer sb = StringBuffer();
  for (int i = 0; i < input.length; i++) {
    int pointer = input[i];
    if (leadPointer != 0) {
      if (pointer >= 0x41 && pointer <= 0xfe) {
        //int code = (leadPointer - 0x81) * 190 + (pointer - 0x41);
        int code = (leadPointer << 8) + pointer;
        final charCode = code < 0x80 ? code : eucKrToUtf8[code];
        if (charCode == null && !_allowInvalid) {
          throw FormatException('Unfinished Euc-KR octet sequence', input, i);
        } else {
          sb.writeCharCode(charCode ?? unicodeReplacementCharacterRune);
        }
      }
      leadPointer = 0;
    } else if (pointer < 0x80) {
      sb.writeCharCode(pointer);
    } else if (pointer >= 0x81 && pointer <= 0xfe) {
      leadPointer = pointer;
    } else {
      if (!_allowInvalid) {
        throw FormatException('Unfinished Euc-KR octet sequence', input, i);
      }
      sb.writeCharCode(unicodeReplacementCharacterRune);
    }
  }
  if (leadPointer != 0) {
    if (!_allowInvalid) {
      throw FormatException(
        'Unfinished Euc-KR octet sequence',
        input,
        leadPointer,
      );
    }
  }
  return sb.toString();
}