UNPKG

bpmn-elements

Version:

Executable workflow elements based on BPMN 2.0

48 lines (47 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Expressions; var _getPropertyValue = _interopRequireDefault(require("./getPropertyValue.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const isExpressionPattern = /^\${(.+?)}$/; const expressionPattern = /\${(.+?)}/; function Expressions() { return { resolveExpression, isExpression, hasExpression }; } function resolveExpression(templatedString, context, expressionFnContext) { let result = templatedString; while (expressionPattern.test(result)) { const expressionMatch = result.match(expressionPattern); const innerProperty = expressionMatch[1]; if (innerProperty === 'true') { return true; } else if (innerProperty === 'false') { return false; } else if (innerProperty === 'null') { return null; } else { const n = Number(innerProperty); if (!isNaN(n)) return n; } const contextValue = (0, _getPropertyValue.default)(context, innerProperty, expressionFnContext); if (expressionMatch.input === expressionMatch[0]) { return contextValue; } result = result.replace(expressionMatch[0], contextValue === undefined ? '' : contextValue); } return result; } function isExpression(text) { if (!text) return false; return isExpressionPattern.test(text); } function hasExpression(text) { if (!text) return false; return expressionPattern.test(text); }