decodeName static method

String decodeName(
  1. String input
)

Implementation

static String decodeName(String input) {
  var out = StringBuffer();
  int cu(String n) => const Utf8Encoder().convert(n)[0];
  for (var i = 0; i < input.length; i++) {
    var char = input[i];

    if (char == '%') {
      var hexA = input[i + 1];
      if ((cu(hexA) >= cu('0') && cu(hexA) <= cu('9')) ||
          (cu(hexA) >= cu('A') && cu(hexA) <= cu('F'))) {
        var s = hexA;

        if (i + 2 < input.length) {
          var hexB = input[i + 2];
          if ((cu(hexB) > cu('0') && cu(hexB) <= cu('9')) ||
              (cu(hexB) >= cu('A') && cu(hexB) <= cu('F'))) {
            ++i;
            s += hexB;
          }
        }

        var c = int.parse(s, radix: 16);
        out.writeCharCode(c);
        i++;
        continue;
      }
    }

    out.write(char);
  }

  return out.toString();
}