@magic-xpa/utils
Version:
magic utils package
729 lines (723 loc) • 81.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { NString, RefParam, StringBuilder } from "@magic-xpa/mscorelib";
import { UtilStrByteMode } from "./UtilStrByteMode";
import { Rtf } from "./Rtf";
/** @type {?} */
const HTML_BACKSLASH = "\";
/** @type {?} */
const HTML_COMMA = ",";
/** @type {?} */
const HTML_HYPHEN = "-";
/** @type {?} */
const STR_2_HTML = 1;
/** @type {?} */
export const SEQ_2_HTML = 2;
/** @type {?} */
export const HTML_2_STR = 3;
/** @type {?} */
const HTML_2_SEQ = 4;
/** @type {?} */
export const SEQ_2_STR = 5;
export class StrUtil {
/**
* @param {?} str
* @param {?} len
* @return {?}
*/
static mem_trim(str, len) {
/** @type {?} */
let result;
if (len > 0) {
if (len > str.length) {
result = -1;
return result;
}
while (len > 0 && str[len - 1] === ' ') {
len = len - 1;
}
}
result = len;
return result;
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} src
* @param {?} srcCount
* @param {?} len
* @return {?}
*/
static memmove(dest, destCount, src, srcCount, len) {
/** @type {?} */
let stringBuilder = new StringBuilder(dest.length + len);
if (UtilStrByteMode.isLocaleDefLangJPN() && dest.length < destCount) {
stringBuilder.Append(NString.FromChar(' ', destCount));
}
else {
stringBuilder.Append(dest.substr(0, destCount));
}
stringBuilder.Append(src.substr(srcCount, len));
if (stringBuilder.Length < dest.length) {
stringBuilder.Append(dest.substr(stringBuilder.Length));
}
return stringBuilder.ToString();
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} src
* @param {?} scrCountOrSrcCount
* @param {?} count
* @return {?}
*/
static memcpy(dest, destCount, src, scrCountOrSrcCount, count) {
if (arguments.length === 5 && (dest === null || dest.constructor === String) && (destCount === null || destCount.constructor === Number) && (src === null || src.constructor === String) && (scrCountOrSrcCount === null || scrCountOrSrcCount.constructor === Number) && (count === null || count.constructor === Number)) {
return StrUtil.memcpy_0(dest, destCount, src, scrCountOrSrcCount, count);
}
StrUtil.memcpy_1(dest, destCount, src, scrCountOrSrcCount, count);
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} src
* @param {?} scrCount
* @param {?} count
* @return {?}
*/
static memcpy_0(dest, destCount, src, scrCount, count) {
/** @type {?} */
let stringBuilder = new StringBuilder(dest.substr(0, destCount));
if (scrCount + count < src.length) {
stringBuilder.Append(src.substr(scrCount, count - scrCount));
}
else {
stringBuilder.Append(src.substr(scrCount));
}
/** @type {?} */
let size = dest.length - destCount - count;
if (size > 0) {
stringBuilder.Append(dest.substr(destCount + count));
}
return stringBuilder.ToString();
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} src
* @param {?} srcCount
* @param {?} count
* @return {?}
*/
static memcpy_1(dest, destCount, src, srcCount, count) {
while (count > 0 && destCount < dest.length && srcCount < src.length) {
dest[destCount++] = src[srcCount++];
count = count - 1;
}
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} inVal
* @param {?} counter
* @return {?}
*/
static memset(dest, destCount, inVal, counter) {
if (arguments.length === 4 && (dest === null || dest.constructor === String) && (destCount === null || destCount.constructor === Number) && (inVal === null || inVal.constructor === Number) && (counter === null || counter.constructor === Number)) {
return StrUtil.memset_0(dest, destCount, inVal, counter);
}
StrUtil.memset_1(dest, destCount, inVal, counter);
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} inVal
* @param {?} counter
* @return {?}
*/
static memset_0(dest, destCount, inVal, counter) {
/** @type {?} */
let first = new StringBuilder(dest.substr(0, destCount));
while (counter > 0) {
first.Append(inVal);
counter = counter - 1;
}
if (first.Length < dest.length) {
first.Append(dest.substr(first.Length));
}
return first.ToString();
}
/**
* @param {?} dest
* @param {?} destCount
* @param {?} inVal
* @param {?} counter
* @return {?}
*/
static memset_1(dest, destCount, inVal, counter) {
while (counter > 0 && destCount < dest.length) {
dest[destCount++] = inVal;
counter = counter - 1;
}
}
/**
* @param {?} str
* @param {?} substr
* @return {?}
*/
static strstr(str, substr) {
/** @type {?} */
let from = str.indexOf(substr);
/** @type {?} */
let result;
if (from < 0) {
result = null;
}
else {
result = str.substr(from);
}
return result;
}
/**
* ***************************
* @param {?} text
* @return {?}
*/
static ReverseString(text) {
/** @type {?} */
let array = NString.ToCharArray(text.ToString());
array.reverse();
return new StringBuilder(NString.FromChars(array));
}
/**
* @param {?} str
* @return {?}
*/
static rtrim(str) {
return StrUtil.rtrimWithNull(str, false);
}
/**
* @param {?} str
* @param {?} trimNullChars
* @return {?}
*/
static rtrimWithNull(str, trimNullChars) {
/** @type {?} */
let result;
if (typeof str === "undefined" || str === null || str.length === 0) {
result = str;
}
else {
/** @type {?} */
let idx = str.length - 1;
if (trimNullChars) {
while (idx >= 0 && (str[idx] === ' ' || str[idx] === String.fromCharCode(0) /*'