@magic-xpa/utils
Version:
magic utils package
114 lines (113 loc) • 14.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { NString, StringBuilder } from "@magic-xpa/mscorelib";
import { SEQ_2_STR, StrUtil } from "./StrUtil";
export class ChoiceUtils {
/**
* @param {?} choiceDispStr
* @param {?} removeAccelerators
* @param {?} shouldMakePrintable
* @param {?} shouldTrimOptions
* @return {?}
*/
static GetDisplayListFromString(choiceDispStr, removeAccelerators, shouldMakePrintable, shouldTrimOptions) {
/** @type {?} */
let fromHelp = new Array("\\\\", "\\-", "\\,");
/** @type {?} */
let toHelp = new Array("XX", "XX", "XX");
choiceDispStr = NString.TrimEnd(choiceDispStr);
/** @type {?} */
let helpStrDisp = StrUtil.searchAndReplace(choiceDispStr, fromHelp, toHelp);
/** @type {?} */
let sTok = StrUtil.tokenize(helpStrDisp, ",");
/** @type {?} */
let size = (helpStrDisp !== "" ? sTok.length : 0);
/** @type {?} */
let tokenBuffer;
/** @type {?} */
let helpTokenDisp;
/** @type {?} */
let token;
/** @type {?} */
let currPosDisp = 0;
/** @type {?} */
let nextPosDisp = 0;
/** @type {?} */
let tokenPosDisp;
/** @type {?} */
let i = 0;
/** @type {?} */
let choiceDisp = new Array(size);
for (; i < size; i++) {
nextPosDisp = currPosDisp;
nextPosDisp = helpStrDisp.indexOf(',', nextPosDisp);
if (nextPosDisp === currPosDisp)
token = helpTokenDisp = "";
else if (nextPosDisp === -1) {
token = choiceDispStr.substr(currPosDisp);
helpTokenDisp = helpStrDisp.substr(currPosDisp);
}
else {
token = choiceDispStr.substr(currPosDisp, (nextPosDisp) - (currPosDisp));
helpTokenDisp = helpStrDisp.substr(currPosDisp, (nextPosDisp) - (currPosDisp));
}
currPosDisp = nextPosDisp + 1;
if (token != null) {
token = StrUtil.ltrim(token);
if (removeAccelerators)
token = ChoiceUtils.RemoveAcclCharFromOptions(new StringBuilder(token));
helpTokenDisp = StrUtil.ltrim(helpTokenDisp);
if (removeAccelerators)
helpTokenDisp = ChoiceUtils.RemoveAcclCharFromOptions(new StringBuilder(helpTokenDisp));
}
if (helpTokenDisp.indexOf('\\') >= 0) {
tokenBuffer = new StringBuilder();
for (; tokenPosDisp < helpTokenDisp.length; tokenPosDisp++)
if (helpTokenDisp[tokenPosDisp] !== '\\')
tokenBuffer.Append(token[tokenPosDisp]);
else if (tokenPosDisp === helpTokenDisp.length - 1)
tokenBuffer.Append(' ');
token = tokenBuffer.ToString();
}
if (shouldMakePrintable) {
token = StrUtil.makePrintableTokens(token, SEQ_2_STR);
if (shouldTrimOptions) {
/** @type {?} */
let temp = NString.TrimEnd(token);
if (temp.length === 0)
choiceDisp[i] = " ";
else
choiceDisp[i] = NString.TrimEnd(token);
}
else
choiceDisp[i] = token;
}
else
choiceDisp[i] = token;
}
return choiceDisp;
}
/**
* @param {?} OptionStr
* @return {?}
*/
static RemoveAcclCharFromOptions(OptionStr) {
/** @type {?} */
let i = 0;
if (OptionStr != null) {
for (; i < OptionStr.Length;) {
if (OptionStr.get_Item(i) === '&') {
if (i < OptionStr.Length - 1 && OptionStr.get_Item(i + 1) === ('&'))
i++;
OptionStr = OptionStr.Remove(i, 1);
}
else
i++;
}
}
return (OptionStr != null ? OptionStr.ToString() : null);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hvaWNlVXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFnaWMteHBhL3V0aWxzLyIsInNvdXJjZXMiOlsic3JjL0Nob2ljZVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTdDLE1BQU07Ozs7Ozs7O0lBY0osTUFBTSxDQUFDLHdCQUF3QixDQUFDLGFBQXFCLEVBQUUsa0JBQTJCLEVBQUUsbUJBQTRCLEVBQUUsaUJBQTBCOztRQUMxSSxJQUFJLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDOztRQUMvQyxJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDOztRQUMvQyxJQUFJLFdBQVcsR0FBVyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzs7UUFDcEYsSUFBSSxJQUFJLEdBQWEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7O1FBQ3hELElBQUksSUFBSSxHQUFXLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBQzFELElBQUksV0FBVyxDQUFnQjs7UUFDL0IsSUFBSSxhQUFhLENBQXdCOztRQUF6QyxJQUEyQixLQUFLLENBQVM7O1FBQ3pDLElBQUksV0FBVyxHQUFXLENBQUMsQ0FBdUM7O1FBQWxFLElBQTZCLFdBQVcsR0FBRyxDQUFDLENB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Q0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUQ7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TlN0cmluZywgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U0VRXzJfU1RSLCBTdHJVdGlsfSBmcm9tIFwiLi9TdHJVdGlsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2hvaWNlVXRpbHMge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5pdCB0aGUgZGlzcGxheSBWYWx1ZSBmcm9tIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjaG9pY2VEaXNwU3RyXCI+dGhlIGFsbCBzdWJzdHJpbmcgc2VwYXJhdGVkIHdpdGggY29tbWEuXHJcbiAgLy8vICAgVGhlIGJlaGF2aW9yOlxyXG4gIC8vLyAgIGEuIHdoZW4gaGF2ZSBcIlxcXCIgYmVmb3JlIGNoYXIgYS16IG5lZWQgdG8gaWdub3JlIHRoZSBcXCBwdXQgdGhlIGEteiBjaGFyXHJcbiAgLy8vICAgYi4gd2hlbiBcIlxcLFwiIC0+IFwiLFwiXHJcbiAgLy8vICAgYy4gd2hlbiBcIlxcLVwiIC0+IFwiLVwiXHJcbiAgLy8vICAgZC4gd2hlbiBcIlxcXFxcIiAtPiBcIlxcXCJcclxuICAvLy8gICBlLiB3aGVuIFwiXFxcXFxcXFxcIiAtPiBcIlxcXFxcIlxyXG4gIC8vLyAgIHRoZSBkaXNwbGF5IGNhbiBiZSBhbGwgc3RyaW5nLiBhbmQgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayB2YWxpZGF0aW9uIGFjY29yZGluZyB0byB0aGUgZGF0YVR5cGUoYXMgd2UgZG8gaW4gTGlua1xyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHN0YXRpYyBHZXREaXNwbGF5TGlzdEZyb21TdHJpbmcoY2hvaWNlRGlzcFN0cjogc3RyaW5nLCByZW1vdmVBY2NlbGVyYXRvcnM6IGJvb2xlYW4sIHNob3VsZE1ha2VQcmludGFibGU6IGJvb2xlYW4sIHNob3VsZFRyaW1PcHRpb25zOiBib29sZWFuKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGZyb21IZWxwID0gbmV3IEFycmF5KFwiXFxcXFxcXFxcIiwgXCJcXFxcLVwiLCBcIlxcXFwsXCIpO1xyXG4gICAgbGV0IHRvSGVscCA9IG5ldyBBcnJheShcIlhYXCIsIFwiWFhcIiwgXCJYWFwiKTtcclxuICAgIGNob2ljZURpc3BTdHIgPSBOU3RyaW5nLlRyaW1FbmQoY2hvaWNlRGlzcFN0cik7XHJcbiAgICBsZXQgaGVscFN0ckRpc3A6IHN0cmluZyA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShjaG9pY2VEaXNwU3RyLCBmcm9tSGVscCwgdG9IZWxwKTtcclxuICAgIGxldCBzVG9rOiBTdHJpbmdbXSA9IFN0clV0aWwudG9rZW5pemUoaGVscFN0ckRpc3AsIFwiLFwiKTtcclxuICAgIGxldCBzaXplOiBudW1iZXIgPSAoaGVscFN0ckRpc3AgIT09IFwiXCIgPyBzVG9rLmxlbmd0aCA6IDApO1xyXG4gICAgbGV0IHRva2VuQnVmZmVyOiBTdHJpbmdCdWlsZGVyO1xyXG4gICAgbGV0IGhlbHBUb2tlbkRpc3A6IHN0cmluZywgdG9rZW46IHN0cmluZztcclxuICAgIGxldCBjdXJyUG9zRGlzcDogbnVtYmVyID0gMCwgbmV4dFBvc0Rpc3AgPSAwLCB0b2tlblBvc0Rpc3AsIGkgPSAwO1xyXG4gICAgbGV0IGNob2ljZURpc3AgPSBuZXcgQXJyYXkoc2l6ZSk7XHJcbiAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICBuZXh0UG9zRGlzcCA9IGN1cnJQb3NEaXNwO1xyXG4gICAgICBuZXh0UG9zRGlzcCA9IGhlbHBTdHJEaXNwLmluZGV4T2YoJywnLCBuZXh0UG9zRGlzcCk7XHJcbiAgICAgIGlmIChuZXh0UG9zRGlzcCA9PT0gY3VyclBvc0Rpc3ApXHJcbiAgICAgICAgdG9rZW4gPSBoZWxwVG9rZW5EaXNwID0gXCJcIjtcclxuICAgICAgZWxzZSBpZiAobmV4dFBvc0Rpc3AgPT09IC0xKSB7XHJcbiAgICAgICAgdG9rZW4gPSBjaG9pY2VEaXNwU3RyLnN1YnN0cihjdXJyUG9zRGlzcCk7XHJcbiAgICAgICAgaGVscFRva2VuRGlzcCA9IGhlbHBTdHJEaXNwLnN1YnN0cihjdXJyUG9zRGlzcCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdG9rZW4gPSBjaG9pY2VEaXNwU3RyLnN1YnN0cihjdXJyUG9zRGlzcCwgKG5leHRQb3NEaXNwKSAtIChjdXJyUG9zRGlzcCkpO1xyXG4gICAgICAgIGhlbHBUb2tlbkRpc3AgPSBoZWxwU3RyRGlzcC5zdWJzdHIoY3VyclBvc0Rpc3AsIChuZXh0UG9zRGlzcCkgLSAoY3VyclBvc0Rpc3ApKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyUG9zRGlzcCA9IG5leHRQb3NEaXNwICsgMTtcclxuICAgICAgaWYgKHRva2VuICE9IG51bGwpIHtcclxuICAgICAgICB0b2tlbiA9IFN0clV0aWwubHRyaW0odG9rZW4pO1xyXG4gICAgICAgIGlmIChyZW1vdmVBY2NlbGVyYXRvcnMpXHJcbiAgICAgICAgICB0b2tlbiA9IENob2ljZVV0aWxzLlJlbW92ZUFjY2xDaGFyRnJvbU9wdGlvbnMobmV3IFN0cmluZ0J1aWxkZXIodG9rZW4pKTtcclxuICAgICAgICBoZWxwVG9rZW5EaXNwID0gU3RyVXRpbC5sdHJpbShoZWxwVG9rZW5EaXNwKTtcclxuICAgICAgICBpZiAocmVtb3ZlQWNjZWxlcmF0b3JzKVxyXG4gICAgICAgICAgaGVscFRva2VuRGlzcCA9IENob2ljZVV0aWxzLlJlbW92ZUFjY2xDaGFyRnJvbU9wdGlvbnMobmV3IFN0cmluZ0J1aWxkZXIoaGVscFRva2VuRGlzcCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZWxwVG9rZW5EaXNwLmluZGV4T2YoJ1xcXFwnKSA+PSAwKSB7XHJcbiAgICAgICAgdG9rZW5CdWZmZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgIGZvciAoOyB0b2tlblBvc0Rpc3AgPCBoZWxwVG9rZW5EaXNwLmxlbmd0aDsgdG9rZW5Qb3NEaXNwKyspXHJcbiAgICAgICAgICBpZiAoaGVscFRva2VuRGlzcFt0b2tlblBvc0Rpc3BdICE9PSAnXFxcXCcpXHJcbiAgICAgICAgICAgIHRva2VuQnVmZmVyLkFwcGVuZCh0b2tlblt0b2tlblBvc0Rpc3BdKTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRva2VuUG9zRGlzcCA9PT0gaGVscFRva2VuRGlzcC5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgICB0b2tlbkJ1ZmZlci5BcHBlbmQoJyAnKTtcclxuICAgICAgICB0b2tlbiA9IHRva2VuQnVmZmVyLlRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNob3VsZE1ha2VQcmludGFibGUpIHtcclxuICAgICAgICB0b2tlbiA9IFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0b2tlbiwgU0VRXzJfU1RSKTtcclxuICAgICAgICBpZiAoc2hvdWxkVHJpbU9wdGlvbnMpIHtcclxuICAgICAgICAgIGxldCB0ZW1wOiBzdHJpbmcgPSBOU3RyaW5nLlRyaW1FbmQodG9rZW4pO1xyXG4gICAgICAgICAgaWYgKHRlbXAubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICBjaG9pY2VEaXNwW2ldID0gXCIgXCI7XHJcbiAgICAgICAgICBlbHNlIGNob2ljZURpc3BbaV0gPSBOU3RyaW5nLlRyaW1FbmQodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGNob2ljZURpc3BbaV0gPSB0b2tlbjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGNob2ljZURpc3BbaV0gPSB0b2tlbjtcclxuICAgIH1cclxuICAgIHJldHVybiBjaG9pY2VEaXNwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFJlbW92ZUFjY2xDaGFyRnJvbU9wdGlvbnMoT3B0aW9uU3RyOiBTdHJpbmdCdWlsZGVyKTogc3RyaW5nIHtcclxuICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKE9wdGlvblN0ciAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAoOyBpIDwgT3B0aW9uU3RyLkxlbmd0aDspIHtcclxuICAgICAgICBpZiAoT3B0aW9uU3RyLmdldF9JdGVtKGkpID09PSAnJicpIHtcclxuICAgICAgICAgIGlmIChpIDwgT3B0aW9uU3RyLkxlbmd0aCAtIDEgJiYgT3B0aW9uU3RyLmdldF9JdGVtKGkgKyAxKSA9PT0gKCcmJykpXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgIE9wdGlvblN0ciA9IE9wdGlvblN0ci5SZW1vdmUoaSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaSsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKE9wdGlvblN0ciAhPSBudWxsID8gT3B0aW9uU3RyLlRvU3RyaW5nKCkgOiBudWxsKTtcclxuICB9XHJcbn1cclxuIl19