function _readValue()

in packages/angular_devkit/core/src/json/parser.ts [766:842]


function _readValue(context: JsonParserContext, comments = _readBlanks(context)): JsonAstNode {
  let result: JsonAstNode;

  // Clean up before.
  const char = _peek(context);
  switch (char) {
    case undefined:
      throw new UnexpectedEndOfInputException(context);

    case '-':
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      result = _readNumber(context, comments);
      break;

    case '.':
    case '+':
      if ((context.mode & JsonParseMode.LaxNumberParsingAllowed) == 0) {
        throw new InvalidJsonCharacterException(context);
      }
      result = _readNumber(context, comments);
      break;

    case "'":
    case '"':
      result = _readString(context, comments);
      break;

    case 'I':
      if ((context.mode & JsonParseMode.NumberConstantsAllowed) == 0) {
        throw new InvalidJsonCharacterException(context);
      }
      result = _readNumber(context, comments);
      break;

    case 'N':
      if ((context.mode & JsonParseMode.NumberConstantsAllowed) == 0) {
        throw new InvalidJsonCharacterException(context);
      }
      result = _readNaN(context, comments);
      break;

    case 't':
      result = _readTrue(context, comments);
      break;
    case 'f':
      result = _readFalse(context, comments);
      break;
    case 'n':
      result = _readNull(context, comments);
      break;

    case '[':
      result = _readArray(context, comments);
      break;

    case '{':
      result = _readObject(context, comments);
      break;

    default:
      throw new InvalidJsonCharacterException(context);
  }

  // Clean up after.
  _readBlanks(context);

  return result;
}