UNPKG

yandex-tank-ammo-generator

Version:

Cartridge generation for Yandex tank

59 lines (58 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function isScriptBuilder(b) { return true; } exports.isScriptBuilder = isScriptBuilder; class ScriptBuilder { constructor() { this._scripts = { script_fields: {}, }; } static isScriptBuilder(b) { return typeof b !== 'string'; } /** * Добавить свой скрипт * @param fieldName * @param source * @return {this} */ addCustomField(fieldName, source) { this._scripts.script_fields[fieldName] = { script: { source, }, }; return this; } /** * Билд * @return {{script_fields: {currentPrice: {script: {source: string}}}}} */ build() { return this._scripts; } } exports.ScriptBuilder = ScriptBuilder; ScriptBuilder.Math = { generateMaxFunction: (valuesPath) => { let tmp = `Math.max(0,`; tmp += valuesPath.map(item => `params['_source']${item}`).join(','); tmp += ')'; return tmp; }, generateMaxFunctionOfArray: (cities) => { let tmp = 'def price=0; for( city in ['; tmp += cities.map(item => `'${item}'`).join(','); tmp += `]){ if(params['_source']['cities'][city] !== null){price = Math.max(params['_source']['cities'][city]['price'],price) }} return price;`; return tmp; }, generateMinFunction: (valuesPath) => { let tmp = `Math.min(999999,`; tmp += valuesPath.map(item => `params['_source']${item}`).join(','); tmp += ')'; return tmp; }, };