MCPcopy Index your code
hub / github.com/SeleniumHQ/selenium / readEscape

Method readEscape

java/src/org/openqa/selenium/json/JsonInput.java:603–652  ·  view source on GitHub ↗
(StringBuilder builder)

Source from the content-addressed store, hash-verified

601 */
602 // FIXME: This function doesn't appear to support UTF-8 or UTF-32.
603 private void readEscape(StringBuilder builder) {
604 char read = input.read();
605
606 // List from: https://tools.ietf.org/html/rfc7159.html#section-7
607 switch (read) {
608 case 'b':
609 builder.append("\b");
610 break;
611
612 case 'f':
613 builder.append("\f");
614 break;
615
616 case 'n':
617 builder.append("\n");
618 break;
619
620 case 'r':
621 builder.append("\r");
622 break;
623
624 case 't':
625 builder.append("\t");
626 break;
627
628 case 'u': // Unicode digit. The next four characters count.
629 int result = 0;
630 int multiplier = 4096; // (16 * 16 * 16) as we start from the thousands and work to units.
631 for (int i = 0; i < 4; i++) {
632 char c = input.read();
633 int digit = Character.digit(c, 16);
634 if (digit == -1) {
635 throw new JsonException(c + " is not a hexadecimal digit. " + input);
636 }
637 result += digit * multiplier;
638 multiplier /= 16;
639 }
640 builder.append((char) result);
641 break;
642
643 case '/':
644 case '\\':
645 case '"':
646 builder.append(read);
647 break;
648
649 default:
650 throw new JsonException("Unexpected escape code: " + read + ". " + input);
651 }
652 }
653
654 /**
655 * Consume whitespace characters from the head of the specified input object.

Callers 1

readStringMethod · 0.95

Calls 2

readMethod · 0.65
appendMethod · 0.45

Tested by

no test coverage detected