UNPKG

@magic-xpa/utils

Version:

magic utils package

114 lines (113 loc) 14.6 kB
/** * @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