MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / readEscape

Method readEscape

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

Source from the content-addressed store, hash-verified

686 */
687 // FIXME: This function doesn't appear to support UTF-8 or UTF-32.
688 private void readEscape(StringBuilder builder) {
689 int read = input.read();
690
691 // List from: https://tools.ietf.org/html/rfc7159.html#section-7
692 switch (read) {
693 case 'b':
694 builder.append("\b");
695 break;
696
697 case 'f':
698 builder.append("\f");
699 break;
700
701 case 'n':
702 builder.append("\n");
703 break;
704
705 case 'r':
706 builder.append("\r");
707 break;
708
709 case 't':
710 builder.append("\t");
711 break;
712
713 case 'u': // Unicode digit. The next four characters count.
714 int result = 0;
715 int multiplier = 4096; // (16 * 16 * 16) as we start from the thousands and work to units.
716 for (int i = 0; i < 4; i++) {
717 int c = input.read();
718 int digit = Character.digit(c, 16);
719 if (digit == -1) {
720 throw new JsonException((char) c + " is not a hexadecimal digit. " + input);
721 }
722 result += digit * multiplier;
723 multiplier /= 16;
724 }
725 builder.append((char) result);
726 break;
727
728 case '/':
729 case '\\':
730 case '"':
731 builder.append((char) read);
732 break;
733
734 default:
735 throw new JsonException("Unexpected escape code: " + (char) read + ". " + input);
736 }
737 }
738
739 /**
740 * 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