(parser: ParserComponent<T>)
| 844 | } |
| 845 | |
| 846 | export function parserFactory<T>(parser: ParserComponent<T>) { |
| 847 | return (tomlString: string): T => { |
| 848 | const scanner = new Scanner(tomlString); |
| 849 | try { |
| 850 | const result = parser(scanner); |
| 851 | if (result.ok && scanner.eof()) return result.body; |
| 852 | const message = `Unexpected character: "${scanner.char()}"`; |
| 853 | throw new SyntaxError(createParseErrorMessage(scanner, message)); |
| 854 | } catch (error) { |
| 855 | if (error instanceof Error) { |
| 856 | throw new SyntaxError(createParseErrorMessage(scanner, error.message)); |
| 857 | } |
| 858 | const message = "Invalid error type caught"; |
| 859 | throw new SyntaxError(createParseErrorMessage(scanner, message)); |
| 860 | } |
| 861 | }; |
| 862 | } |
no test coverage detected