From f7ef9b61c10605e88d6882c7d611dc7a3c5fafb7 Mon Sep 17 00:00:00 2001 From: harttle Date: Wed, 11 Mar 2020 00:53:04 +0800 Subject: [PATCH] refactor: remove src/render/value.ts --- src/parser/tokenizer.ts | 2 +- src/render/expression.ts | 26 +++++++++++++++++++++----- src/render/range.ts | 17 ----------------- src/render/value.ts | 23 ----------------------- test/unit/render/value.ts | 24 ------------------------ 5 files changed, 22 insertions(+), 70 deletions(-) delete mode 100644 src/render/range.ts delete mode 100644 src/render/value.ts delete mode 100644 test/unit/render/value.ts diff --git a/src/parser/tokenizer.ts b/src/parser/tokenizer.ts index 4a4a1282e..e73458056 100644 --- a/src/parser/tokenizer.ts +++ b/src/parser/tokenizer.ts @@ -83,7 +83,7 @@ export class Tokenizer { readFilterArg (): FilterArg | null { const key = this.readValue() - if (!key) return null + if (!key.size()) return null this.readBlank() if (this.peek() === ':') { this.read() diff --git a/src/render/expression.ts b/src/render/expression.ts index 8c0e7b1d8..817a5592d 100644 --- a/src/render/expression.ts +++ b/src/render/expression.ts @@ -1,8 +1,8 @@ import { assert } from '../util/assert' -import { isRange, rangeValue } from './range' -import { Value } from './value' +import { rangeLine } from '../parser/lexical' +import { parseLiteral } from '../parser/literal' import { Context } from '../context/context' -import { toValue } from '../util/underscore' +import { range, toValue } from '../util/underscore' import { isOperator, precedence, operatorImpls } from './operator' import { Tokenizer } from '../parser/tokenizer' @@ -14,7 +14,7 @@ export class Expression { const tokenizer = new Tokenizer(str) this.postfix = [...toPostfix(tokenizer.readExpression())] } - public * evaluate (ctx: Context) { + public * evaluate (ctx: Context): any { assert(ctx, 'unable to evaluate: context not defined') for (const token of this.postfix) { @@ -25,7 +25,10 @@ export class Expression { this.operands.push(result) } else if (isRange(token)) { this.operands.push(yield rangeValue(token, ctx)) - } else this.operands.push(yield new Value(token).evaluate(ctx)) + } else { + const literal = parseLiteral(token) + this.operands.push(literal !== undefined ? literal : yield ctx.get(token)) + } } return this.operands[0] } @@ -48,3 +51,16 @@ function * toPostfix (tokens: IterableIterator): IterableIterator