(state: ParserState)
| 760 | } |
| 761 | |
| 762 | function parseBareItem(state: ParserState): BareItem { |
| 763 | const c = peek(state); |
| 764 | |
| 765 | if (c === "-" || isDigit(c)) { |
| 766 | return parseIntegerOrDecimal(state); |
| 767 | } |
| 768 | if (c === '"') { |
| 769 | return parseString(state); |
| 770 | } |
| 771 | if (c === ":") { |
| 772 | return parseBinary(state); |
| 773 | } |
| 774 | if (c === "?") { |
| 775 | return parseBoolean(state); |
| 776 | } |
| 777 | if (c === "@") { |
| 778 | return parseDate(state); |
| 779 | } |
| 780 | if (c === "%") { |
| 781 | return parseDisplayString(state); |
| 782 | } |
| 783 | if (isAlpha(c) || c === "*") { |
| 784 | return parseToken(state); |
| 785 | } |
| 786 | |
| 787 | throw new SyntaxError( |
| 788 | `Invalid structured field: unexpected character '${c}' at position ${state.pos}`, |
| 789 | ); |
| 790 | } |
| 791 | |
| 792 | function parseIntegerOrDecimal(state: ParserState): BareItem { |
| 793 | const { input } = state; |
no test coverage detected