@cucumber/gherkin
Version:
Gherkin parser
26 lines • 3.91 kB
JavaScript
import { GherkinException } from './Errors.js';
export class UnexpectedTokenException extends GherkinException {
static create(token, expectedTokenTypes) {
const message = `expected: ${expectedTokenTypes.join(', ')}, got '${token
.getTokenValue()
.trim()}'`;
const location = tokenLocation(token);
return UnexpectedTokenException._create(message, location);
}
}
export class UnexpectedEOFException extends GherkinException {
static create(token, expectedTokenTypes) {
const message = `unexpected end of file, expected: ${expectedTokenTypes.join(', ')}`;
const location = tokenLocation(token);
return UnexpectedEOFException._create(message, location);
}
}
function tokenLocation(token) {
return token.location?.line && token.line && token.line.indent !== undefined
? {
line: token.location.line,
column: token.line.indent + 1,
}
: token.location;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5FeGNlcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Rva2VuRXhjZXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUMsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFZLEtBQXdCLEVBQUUsa0JBQTRCO1FBQ3BGLE1BQU0sT0FBTyxHQUFHLGFBQWEsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUs7YUFDdEUsYUFBYSxFQUFFO2FBQ2YsSUFBSSxFQUFFLEdBQUcsQ0FBQTtRQUVaLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVyQyxPQUFPLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDNUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGdCQUFnQjtJQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFZLEtBQXdCLEVBQUUsa0JBQTRCO1FBQ3BGLE1BQU0sT0FBTyxHQUFHLHFDQUFxQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUNwRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFckMsT0FBTyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzFELENBQUM7Q0FDRjtBQUVELFNBQVMsYUFBYSxDQUFZLEtBQXdCO0lBQ3hELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1FBQzFFLENBQUMsQ0FBQztZQUNFLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDOUI7UUFDSCxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQTtBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2hlcmtpbkV4Y2VwdGlvbiB9IGZyb20gJy4vRXJyb3JzLmpzJ1xuaW1wb3J0IHR5cGUgSVRva2VuIGZyb20gJy4vSVRva2VuLmpzJ1xuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uIGV4dGVuZHMgR2hlcmtpbkV4Y2VwdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlPFRva2VuVHlwZT4odG9rZW46IElUb2tlbjxUb2tlblR5cGU+LCBleHBlY3RlZFRva2VuVHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGBleHBlY3RlZDogJHtleHBlY3RlZFRva2VuVHlwZXMuam9pbignLCAnKX0sIGdvdCAnJHt0b2tlblxuICAgICAgLmdldFRva2VuVmFsdWUoKVxuICAgICAgLnRyaW0oKX0nYFxuXG4gICAgY29uc3QgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKHRva2VuKVxuXG4gICAgcmV0dXJuIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbi5fY3JlYXRlKG1lc3NhZ2UsIGxvY2F0aW9uKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uIGV4dGVuZHMgR2hlcmtpbkV4Y2VwdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlPFRva2VuVHlwZT4odG9rZW46IElUb2tlbjxUb2tlblR5cGU+LCBleHBlY3RlZFRva2VuVHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGB1bmV4cGVjdGVkIGVuZCBvZiBmaWxlLCBleHBlY3RlZDogJHtleHBlY3RlZFRva2VuVHlwZXMuam9pbignLCAnKX1gXG4gICAgY29uc3QgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKHRva2VuKVxuXG4gICAgcmV0dXJuIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24uX2NyZWF0ZShtZXNzYWdlLCBsb2NhdGlvbilcbiAgfVxufVxuXG5mdW5jdGlvbiB0b2tlbkxvY2F0aW9uPFRva2VuVHlwZT4odG9rZW46IElUb2tlbjxUb2tlblR5cGU+KSB7XG4gIHJldHVybiB0b2tlbi5sb2NhdGlvbj8ubGluZSAmJiB0b2tlbi5saW5lICYmIHRva2VuLmxpbmUuaW5kZW50ICE9PSB1bmRlZmluZWRcbiAgICA/IHtcbiAgICAgICAgbGluZTogdG9rZW4ubG9jYXRpb24ubGluZSxcbiAgICAgICAgY29sdW1uOiB0b2tlbi5saW5lLmluZGVudCArIDEsXG4gICAgICB9XG4gICAgOiB0b2tlbi5sb2NhdGlvblxufVxuIl19