Name
sn_rf.RFPillParserUtils
Description
No description available
Script
var RFPillParserUtils = Class.create();
RFPillParserUtils.prototype = {
initialize: function() {
this.EXPR_START = "{{";
this.EXPR_END = "}}";
this.CONTEXT_RECORD_EXPR_START = this.EXPR_START + RFConstants.pillPickerVars.CONTEXT_RECORD_KEY;
this.CONTEXT_RECORD_EXPR = this.CONTEXT_RECORD_EXPR_START + this.EXPR_END;
this.RULE_OUTPUT_EXPR_START = this.EXPR_START + RFConstants.pillPickerVars.RULE_OUTPUT_KEY;
this.RULE_OUTPUT_EXPR = this.RULE_OUTPUT_EXPR_START + this.EXPR_END;
},
getParsedValue: function(parameterizedInputValue, contextGr, ruleOutputObject, getGlideRecord) {
var parsedInputValue = parameterizedInputValue;
var pattern = /(\{{[a-z0-9_.-?]*}})/gi;
try {
var pillExpressions = parameterizedInputValue ? parameterizedInputValue.match(pattern) : [];
if (gs.nil(pillExpressions) || !contextGr || !ruleOutputObject) {
return parsedInputValue;
}
for (var i = 0; i < pillExpressions.length; i++) {
var pillExpr = pillExpressions[i];
var pillExprParsedValue;
if (pillExpr.indexOf(this.CONTEXT_RECORD_EXPR_START) != -1) {
pillExprParsedValue = this._getParsedInputFromContextRecord(pillExpr, contextGr);
} else if (pillExpr.indexOf(this.RULE_OUTPUT_EXPR_START) != -1) {
pillExprParsedValue = this._getParsedInputFromRuleOutputs(pillExpr, ruleOutputObject);
}
parsedInputValue = this._getFinalParsedInputValue(pillExpr, pillExprParsedValue, parsedInputValue, parameterizedInputValue, getGlideRecord);
}
} catch (e) {
var inputs = 'parameterizedInputValue: ' + parameterizedInputValue +
', contextGr: ' + contextGr.sys_id +
', ruleOutputObject: ' + JSON.stringify(ruleOutputObject) +
', getGlideRecord: ' + getGlideRecord;
new RFLogger('RFPillParserUtils').logError('Error executing getParsedValue, Inputs - ' + inputs + ', Error: ' + e);
}
return parsedInputValue;
},
_getParsedInputFromContextRecord: function(pillExpr, contextGr) {
if (pillExpr == this.CONTEXT_RECORD_EXPR) {
return contextGr;
}
var pillVariableStr = pillExpr.substring(this.CONTEXT_RECORD_EXPR_START.length + 1, pillExpr.lastIndexOf(this.EXPR_END));
var replaceValue = this._getReplaceValueFromGr(contextGr, pillVariableStr);
var parsedInput = gs.nil(replaceValue) ? ' ' : replaceValue;
return parsedInput;
},
_getParsedInputFromRuleOutputs: function(pillExpr, ruleOutputObject) {
if (pillExpr == this.RULE_OUTPUT_EXPR) {
return JSON.stringify(ruleOutputObject);
}
var pillVariableStr = pillExpr.substring(this.RULE_OUTPUT_EXPR_START.length + 1, pillExpr.lastIndexOf(this.EXPR_END));
var pillVariables = pillVariableStr ? pillVariableStr.split(".") : [];
var parsedInput = ' ';
if (pillVariables.length == 1) {
parsedInput = ruleOutputObject[pillVariableStr];
} else if (pillVariables.length > 1 && this._isValidRecord(ruleOutputObject[pillVariables[0]])) {
var lookupStr = pillVariableStr.substring(pillVariables[0].length + 1);
var replaceValue = this._getReplaceValueFromGr(ruleOutputObject[pillVariables[0]], lookupStr);
parsedInput = gs.nil(replaceValue) ? ' ' : replaceValue;
}
return parsedInput;
},
_getFinalParsedInputValue: function(pillExpr, pillExprParsedValue, parsedInputValue, parameterizedInputValue, getGlideRecord) {
if (this._isValidRecord(pillExprParsedValue)) {
pillExprParsedValue = getGlideRecord ? pillExprParsedValue : pillExprParsedValue.getDisplayValue();
}
if (pillExpr.length == parameterizedInputValue.length) {
return pillExprParsedValue;
}
return parsedInputValue.replace(pillExpr, pillExprParsedValue);
},
_getReplaceValueFromGr: function(gr, lookupStr) {
var replaceValue = gr.getElement(lookupStr).getRefRecord();
if (!gs.nil(replaceValue)) {
return replaceValue.isValidRecord() ? replaceValue : null;
}
return gr.getDisplayValue(lookupStr);
},
_isValidRecord: function(record) {
return !gs.nil(record) && record.isValidRecord;
},
type: 'RFPillParserUtils'
};
Sys ID
c662e00e53233010e530ddeeff7b1282