gherkin
Version:
52 lines (43 loc) • 997 B
text/typescript
import { RuleType } from './Parser'
import Token from './Token'
export default class TokenFormatterBuilder {
private tokensText: string = ''
public reset() {
this.tokensText = ''
}
public startRule(ruleType: RuleType) {
// no-op
}
public endRule(ruleType: RuleType) {
// no-op
}
public build(token: Token) {
this.tokensText += this.formatToken(token) + '\n'
}
public getResult() {
return this.tokensText
}
public formatToken(token: Token) {
if (token.isEof) {
return 'EOF'
}
return (
'(' +
token.location.line +
':' +
token.location.column +
')' +
token.matchedType +
':' +
(typeof token.matchedKeyword === 'string' ? token.matchedKeyword : '') +
'/' +
(typeof token.matchedText === 'string' ? token.matchedText : '') +
'/' +
token.matchedItems
.map(function(i) {
return i.column + ':' + i.text
})
.join(',')
)
}
}