@formily/path
Version:
> Path System
238 lines • 7.53 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { bracketContext, parenContext, bracketArrayContext, bracketDContext, braceContext, destructorContext, } from './contexts';
var TokenType = function (flag, props) {
return __assign({ flag: flag }, props);
};
export var nameTok = TokenType('name', {
expectNext: function (next) {
if (this.includesContext(destructorContext)) {
return (next === nameTok ||
next === commaTok ||
next === bracketRTok ||
next === braceRTok ||
next === colonTok);
}
return (next === dotTok ||
next === commaTok ||
next === eofTok ||
next === bracketRTok ||
next === parenRTok ||
next === colonTok ||
next === expandTok ||
next === bracketLTok);
},
});
export var starTok = TokenType('*', {
expectNext: function (next) {
return (next === dotTok ||
next === parenLTok ||
next === bracketLTok ||
next === eofTok ||
next === commaTok ||
next === parenRTok);
},
});
export var dbStarTok = TokenType('**', {
expectNext: function (next) {
return (next === dotTok ||
next === bracketLTok ||
next === eofTok ||
next === commaTok ||
next === parenRTok);
},
});
export var dotTok = TokenType('.', {
expectNext: function (next) {
return (next === dotTok ||
next === nameTok ||
next === bracketDLTok ||
next === starTok ||
next === dbStarTok ||
next === bracketLTok ||
next === braceLTok ||
next === eofTok);
},
expectPrev: function (prev) {
return (prev === dotTok ||
prev === nameTok ||
prev === bracketDRTok ||
prev === starTok ||
prev === parenRTok ||
prev === bracketRTok ||
prev === expandTok ||
prev === braceRTok);
},
});
export var bangTok = TokenType('!', {
expectNext: function (next) {
return next === nameTok || next === bracketDLTok;
},
});
export var colonTok = TokenType(':', {
expectNext: function (next) {
if (this.includesContext(destructorContext)) {
return next === nameTok || next === braceLTok || next === bracketLTok;
}
return next === nameTok || next === bracketDLTok || next === bracketRTok;
},
});
export var braceLTok = TokenType('{', {
expectNext: function (next) {
return next === nameTok;
},
expectPrev: function (prev) {
if (this.includesContext(destructorContext)) {
return prev === colonTok || prev === commaTok || prev === bracketLTok;
}
return prev === dotTok || prev === colonTok || prev === parenLTok;
},
updateContext: function () {
this.state.context.push(braceContext);
},
});
export var braceRTok = TokenType('}', {
expectNext: function (next) {
if (this.includesContext(destructorContext)) {
return (next === commaTok ||
next === braceRTok ||
next === eofTok ||
next === bracketRTok);
}
return next === dotTok || next === eofTok || next === commaTok;
},
expectPrev: function (prev) {
return prev === nameTok || prev === braceRTok || prev === bracketRTok;
},
updateContext: function () {
this.state.context.pop(braceContext);
},
});
export var bracketLTok = TokenType('[', {
expectNext: function (next) {
if (this.includesContext(destructorContext)) {
return (next === nameTok ||
next === bracketLTok ||
next === braceLTok ||
next === bracketRTok);
}
return (next === nameTok ||
next === bracketDLTok ||
next === colonTok ||
next === bracketLTok ||
next === ignoreTok ||
next === bracketRTok);
},
expectPrev: function (prev) {
if (this.includesContext(destructorContext)) {
return prev === colonTok || prev === commaTok || prev === bracketLTok;
}
return (prev === starTok ||
prev === bracketLTok ||
prev === dotTok ||
prev === nameTok ||
prev === parenLTok ||
// never reach
prev == commaTok);
},
updateContext: function () {
this.state.context.push(bracketContext);
},
});
export var bracketRTok = TokenType(']', {
expectNext: function (next) {
if (this.includesContext(destructorContext)) {
return (next === commaTok ||
next === braceRTok ||
next === bracketRTok ||
next === eofTok);
}
return (next === dotTok ||
next === eofTok ||
next === commaTok ||
next === parenRTok ||
next === bracketRTok);
},
updateContext: function () {
if (this.includesContext(bracketArrayContext))
return;
if (!this.includesContext(bracketContext))
throw this.unexpect();
this.state.context.pop();
},
});
export var bracketDLTok = TokenType('[[', {
updateContext: function () {
this.state.context.push(bracketDContext);
},
});
export var bracketDRTok = TokenType(']]', {
updateContext: function () {
if (this.curContext() !== bracketDContext)
throw this.unexpect();
this.state.context.pop();
},
});
export var parenLTok = TokenType('(', {
expectNext: function (next) {
return (next === nameTok ||
next === bracketDLTok ||
next === braceLTok ||
next === bangTok ||
next === bracketLTok);
},
expectPrev: function (prev) {
return prev === starTok;
},
updateContext: function () {
this.state.context.push(parenContext);
},
});
export var parenRTok = TokenType(')', {
expectNext: function (next) {
return (next === dotTok ||
next === eofTok ||
next === commaTok ||
next === parenRTok);
},
updateContext: function () {
if (this.curContext() !== parenContext)
throw this.unexpect();
this.state.context.pop();
},
});
export var commaTok = TokenType(',', {
expectNext: function (next) {
return (next === nameTok ||
next === bracketDLTok ||
next === bracketLTok ||
next === braceLTok);
},
});
export var ignoreTok = TokenType('ignore', {
expectNext: function (next) {
return next === bracketDRTok;
},
expectPrev: function (prev) {
return prev == bracketDLTok;
},
});
export var expandTok = TokenType('expandTok', {
expectNext: function (next) {
return (next === dotTok ||
next === eofTok ||
next === commaTok ||
next === parenRTok);
},
});
export var eofTok = TokenType('eof');
//# sourceMappingURL=tokens.js.map