增加了concat函数
This commit is contained in:
parent
3916971d38
commit
127a84bff0
|
|
@ -111,6 +111,10 @@ interface DateFloor<A> {
|
|||
$dateFloor: [RefOrExpression<A> | Date | number, 'y' | 'M' | 'd' | 'h' | 'm' | 's'];
|
||||
}
|
||||
declare type DateExpression<A> = DateYear<A> | DateMonth<A> | DateWeekday<A> | DateWeekOfYear<A> | DateDay<A> | DateDayOfYear<A> | DateDayOfMonth<A> | DateDayOfWeek<A> | DateDiff<A> | DateCeiling<A> | DateFloor<A>;
|
||||
interface StringConcat<A> {
|
||||
$concat: StringType<A>[];
|
||||
}
|
||||
declare type StringExpression<A> = StringConcat<A>;
|
||||
interface GeoContains<A> {
|
||||
$contains: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
|
||||
}
|
||||
|
|
@ -118,7 +122,7 @@ interface GeoDistance<A> {
|
|||
$distance: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
|
||||
}
|
||||
declare type GeoExpression<A> = GeoContains<A> | GeoDistance<A>;
|
||||
export declare type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A> | BoolExpression<A> | CompareExpression<A> | MathExpression<A>;
|
||||
export declare type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A> | BoolExpression<A> | CompareExpression<A> | MathExpression<A> | StringExpression<A>;
|
||||
export declare type ExpressionConstant = Geo | number | Date | string | boolean;
|
||||
export declare function isGeoExpression<A>(expression: any): expression is GeoExpression<A>;
|
||||
export declare function isDateExpression<A>(expression: any): expression is DateExpression<A>;
|
||||
|
|
@ -126,6 +130,7 @@ export declare function isLogicExpression<A>(expression: any): expression is Log
|
|||
export declare function isBoolExpression<A>(expression: any): expression is BoolExpression<A>;
|
||||
export declare function isCompareExpression<A>(expression: any): expression is CompareExpression<A>;
|
||||
export declare function isMathExpression<A>(expression: any): expression is MathExpression<A>;
|
||||
export declare function isStringExpression<A>(expression: any): expression is StringExpression<A>;
|
||||
export declare function isExpression<A>(expression: any): expression is Expression<A>;
|
||||
export declare function opMultipleParams(op: string): boolean;
|
||||
export declare function execOp(op: string, params: any, obscure?: boolean): ExpressionConstant;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getAttrRefInExpression = exports.execOp = exports.opMultipleParams = exports.isExpression = exports.isMathExpression = exports.isCompareExpression = exports.isBoolExpression = exports.isLogicExpression = exports.isDateExpression = exports.isGeoExpression = void 0;
|
||||
exports.getAttrRefInExpression = exports.execOp = exports.opMultipleParams = exports.isExpression = exports.isStringExpression = exports.isMathExpression = exports.isCompareExpression = exports.isBoolExpression = exports.isLogicExpression = exports.isDateExpression = exports.isGeoExpression = void 0;
|
||||
var tslib_1 = require("tslib");
|
||||
var assert_1 = tslib_1.__importDefault(require("assert"));
|
||||
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
||||
|
|
@ -105,13 +105,24 @@ function isMathExpression(expression) {
|
|||
return false;
|
||||
}
|
||||
exports.isMathExpression = isMathExpression;
|
||||
function isStringExpression(expression) {
|
||||
if (Object.keys(expression).length == 1) {
|
||||
var op = Object.keys(expression)[0];
|
||||
if (['$concat'].includes(op)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
exports.isStringExpression = isStringExpression;
|
||||
function isExpression(expression) {
|
||||
return typeof expression === 'object' && Object.keys(expression).length === 1 && Object.keys(expression)[0].startsWith('$');
|
||||
}
|
||||
exports.isExpression = isExpression;
|
||||
function opMultipleParams(op) {
|
||||
return !['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
||||
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs', '$round', '$floor', '$ceil'].includes(op);
|
||||
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs',
|
||||
'$round', '$floor', '$ceil', '$concat'].includes(op);
|
||||
}
|
||||
exports.opMultipleParams = opMultipleParams;
|
||||
function execOp(op, params, obscure) {
|
||||
|
|
@ -341,6 +352,9 @@ function execOp(op, params, obscure) {
|
|||
case '$contains': {
|
||||
throw new Error('$contains类型未实现');
|
||||
}
|
||||
case '$concat': {
|
||||
return params.join('');
|
||||
}
|
||||
default: {
|
||||
(0, assert_1.default)(false, "\u4E0D\u80FD\u8BC6\u522B\u7684expression\u8FD0\u7B97\u7B26\uFF1A".concat(op));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,6 +135,15 @@ interface DateFloor<A> {
|
|||
type DateExpression<A> = DateYear<A> | DateMonth<A> | DateWeekday<A> | DateWeekOfYear<A> | DateDay<A> | DateDayOfYear<A>
|
||||
| DateDayOfMonth<A> | DateDayOfWeek<A> | DateDiff<A> | DateCeiling<A> | DateFloor<A>;
|
||||
|
||||
// String
|
||||
interface StringConcat<A> {
|
||||
$concat: StringType<A>[];
|
||||
}
|
||||
|
||||
type StringExpression<A> = StringConcat<A>;
|
||||
|
||||
|
||||
|
||||
//// Geo
|
||||
interface GeoContains<A> {
|
||||
$contains: [RefOrExpression<A> | Geo, RefOrExpression<A> | Geo];
|
||||
|
|
@ -145,7 +154,8 @@ interface GeoDistance<A> {
|
|||
|
||||
type GeoExpression<A> = GeoContains<A> | GeoDistance<A>;
|
||||
|
||||
export type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A> | BoolExpression<A> | CompareExpression<A> | MathExpression<A>;
|
||||
export type Expression<A> = GeoExpression<A> | DateExpression<A> | LogicExpression<A>
|
||||
| BoolExpression<A> | CompareExpression<A> | MathExpression<A> | StringExpression<A>;
|
||||
|
||||
export type ExpressionConstant = Geo | number | Date | string | boolean;
|
||||
|
||||
|
|
@ -212,13 +222,25 @@ export function isMathExpression<A>(expression: any): expression is MathExpressi
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
export function isStringExpression<A>(expression: any): expression is StringExpression<A> {
|
||||
if (Object.keys(expression).length == 1) {
|
||||
const op = Object.keys(expression)[0];
|
||||
if (['$concat'].includes(op)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function isExpression<A>(expression: any): expression is Expression<A> {
|
||||
return typeof expression === 'object' && Object.keys(expression).length === 1 && Object.keys(expression)[0].startsWith('$');
|
||||
}
|
||||
|
||||
export function opMultipleParams(op: string) {
|
||||
return !['$year', '$month', '$weekday', '$weekOfYear', '$day', '$dayOfMonth',
|
||||
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs', '$round', '$floor', '$ceil'].includes(op);
|
||||
'$dayOfWeek', '$dayOfYear', '$not', '$true', '$false', '$abs',
|
||||
'$round', '$floor', '$ceil', '$concat'].includes(op);
|
||||
}
|
||||
|
||||
export function execOp(op: string, params: any, obscure?: boolean): ExpressionConstant {
|
||||
|
|
@ -435,6 +457,9 @@ export function execOp(op: string, params: any, obscure?: boolean): ExpressionCo
|
|||
case '$contains': {
|
||||
throw new Error('$contains类型未实现');
|
||||
}
|
||||
case '$concat': {
|
||||
return params.join('');
|
||||
}
|
||||
default: {
|
||||
assert(false, `不能识别的expression运算符:${op}`);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue