two new functions added
This commit is contained in:
parent
d35cf27043
commit
ab9bcd61e1
19
lib/commons/str-utils.d.ts
vendored
19
lib/commons/str-utils.d.ts
vendored
|
|
@ -7,3 +7,22 @@
|
|||
* @return {(str: string) => T[]} - 分词器函数。
|
||||
*/
|
||||
export declare function stringTokenizer<T>(regExp: RegExp, matchHandler: (text: string, match: boolean) => T, textHandler?: (text: string, match: boolean) => T): (str: string) => T[];
|
||||
/**
|
||||
* 该函数接受两个参数,判断它们是否相等,不区分大小写。
|
||||
* 如果参数都是字符串类型,则将它们转换为小写后比较。
|
||||
* 如果两个参数都是undefined,则返回true,
|
||||
* 否则返回false。
|
||||
* @param source
|
||||
* @param target
|
||||
* @returns
|
||||
*/
|
||||
export declare function equalsIgnoreCase(source: string | undefined, target: string | undefined): boolean;
|
||||
/**
|
||||
* 这个函数接受一个字符串数组和一个字符串作为参数,
|
||||
* 在数组中判断是否存在与搜索字符串相同或相似的字符串,忽略大小写。
|
||||
* 如果找到匹配项则返回true,否则返回false。
|
||||
* @param list 字符串数组
|
||||
* @param search 用来搜索的字符串
|
||||
* @returns 是否包含
|
||||
*/
|
||||
export declare const includeIgnoreCase: (list: string[], search: string) => boolean;
|
||||
|
|
|
|||
4
lib/index.d.ts
vendored
4
lib/index.d.ts
vendored
|
|
@ -1,3 +1,3 @@
|
|||
import { withRecord } from "./commons/record-util";
|
||||
import { stringTokenizer } from "./commons/str-utils";
|
||||
export { stringTokenizer, withRecord };
|
||||
import { stringTokenizer, equalsIgnoreCase, includeIgnoreCase } from "./commons/str-utils";
|
||||
export { stringTokenizer, withRecord, equalsIgnoreCase, includeIgnoreCase };
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
const u = (e) => ({
|
||||
const h = (e) => ({
|
||||
clear: function(t = 2) {
|
||||
t === 1 ? Object.keys(e).forEach((c) => {
|
||||
e[c] = void 0;
|
||||
}) : t === 2 ? Object.keys(e).forEach((c) => {
|
||||
delete e[c];
|
||||
t === 1 ? Object.keys(e).forEach((n) => {
|
||||
e[n] = void 0;
|
||||
}) : t === 2 ? Object.keys(e).forEach((n) => {
|
||||
delete e[n];
|
||||
}) : Object.assign(e, {});
|
||||
},
|
||||
replace: function(t) {
|
||||
|
|
@ -13,20 +13,33 @@ const u = (e) => ({
|
|||
), Object.assign(e, t);
|
||||
}
|
||||
});
|
||||
function a(e, t, c) {
|
||||
const r = t, l = c || t;
|
||||
return function(n) {
|
||||
const s = [], h = n.matchAll(e);
|
||||
let i = 0;
|
||||
for (const f of h) {
|
||||
const o = n.slice(i, f.index);
|
||||
o && s.push(l(o, !1)), s.push(r(f[0], !0)), i = f.index + f[0].length;
|
||||
function g(e, t, n) {
|
||||
const f = t, o = n || t;
|
||||
return function(i) {
|
||||
const s = [], u = i.matchAll(e);
|
||||
let r = 0;
|
||||
for (const c of u) {
|
||||
const l = i.slice(r, c.index);
|
||||
l && s.push(o(l, !1)), s.push(f(c[0], !0)), r = c.index + c[0].length;
|
||||
}
|
||||
return i < n.length && s.push(l(n.slice(i), !1)), s;
|
||||
return r < i.length && s.push(o(i.slice(r), !1)), s;
|
||||
};
|
||||
}
|
||||
function a(e, t) {
|
||||
return typeof e == "string" && typeof t == "string" ? e.toLowerCase() === t.toLowerCase() : e === void 0 && t === void 0;
|
||||
}
|
||||
const p = (e, t) => {
|
||||
for (let n = 0; n < e.length; n++) {
|
||||
let f = e[n];
|
||||
if (a(f, t))
|
||||
return !0;
|
||||
}
|
||||
return !1;
|
||||
};
|
||||
export {
|
||||
a as stringTokenizer,
|
||||
u as withRecord
|
||||
a as equalsIgnoreCase,
|
||||
p as includeIgnoreCase,
|
||||
g as stringTokenizer,
|
||||
h as withRecord
|
||||
};
|
||||
//# sourceMappingURL=index.es.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
(function(n,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(n=typeof globalThis<"u"?globalThis:n||self,c(n["ez-common-ts"]={}))})(this,function(n){"use strict";const c=e=>({clear:function(t=2){t===1?Object.keys(e).forEach(i=>{e[i]=void 0}):t===2?Object.keys(e).forEach(i=>{delete e[i]}):Object.assign(e,{})},replace:function(t){this.clear(3),Object.assign(e,t)}});function h(e,t,i){const d=t,l=i||t;return function(s){const f=[],a=s.matchAll(e);let o=0;for(const u of a){const r=s.slice(o,u.index);r&&f.push(l(r,!1)),f.push(d(u[0],!0)),o=u.index+u[0].length}return o<s.length&&f.push(l(s.slice(o),!1)),f}}n.stringTokenizer=h,n.withRecord=c,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
|
||||
(function(i,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(i=typeof globalThis<"u"?globalThis:i||self,s(i["ez-common-ts"]={}))})(this,function(i){"use strict";const s=e=>({clear:function(n=2){n===1?Object.keys(e).forEach(t=>{e[t]=void 0}):n===2?Object.keys(e).forEach(t=>{delete e[t]}):Object.assign(e,{})},replace:function(n){this.clear(3),Object.assign(e,n)}});function h(e,n,t){const u=n,a=t||n;return function(o){const f=[],p=o.matchAll(e);let c=0;for(const r of p){const d=o.slice(c,r.index);d&&f.push(a(d,!1)),f.push(u(r[0],!0)),c=r.index+r[0].length}return c<o.length&&f.push(a(o.slice(c),!1)),f}}function l(e,n){return typeof e=="string"&&typeof n=="string"?e.toLowerCase()===n.toLowerCase():e===void 0&&n===void 0}const g=(e,n)=>{for(let t=0;t<e.length;t++){let u=e[t];if(l(u,n))return!0}return!1};i.equalsIgnoreCase=l,i.includeIgnoreCase=g,i.stringTokenizer=h,i.withRecord=s,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
||||
//# sourceMappingURL=index.umd.js.map
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"index.umd.js","sources":["../src/commons/record-util.ts","../src/commons/str-utils.ts"],"sourcesContent":["import { UnwrapNestedRefs } from 'vue';\r\nenum ClearMode {\r\n clear = 3,\r\n delete = 2,\r\n reset = 1\r\n}\r\nexport const withRecord = (\r\n obj: UnwrapNestedRefs<Record<string, any>>,\r\n) => {\r\n\r\n return {\r\n clear: function (mode: ClearMode = ClearMode.delete) {\r\n if (mode === ClearMode.reset) {\r\n Object.keys(obj).forEach((key) => {\r\n obj[key] = undefined;\r\n });\r\n } else if (mode === ClearMode.delete) {\r\n Object.keys(obj).forEach((key) => {\r\n delete obj[key];\r\n });\r\n } else {\r\n Object.assign(obj, {});\r\n }\r\n },\r\n replace: function (newVal: UnwrapNestedRefs<Record<string, any>>) {\r\n this.clear(ClearMode.clear);\r\n Object.assign(obj, newVal);\r\n }\r\n };\r\n};","/**\r\n * 生成给定函数体的函数注释。\r\n *\r\n * @param {RegExp} regExp - 用于匹配的正则表达式。\r\n * @param {(text: string, match: boolean) => T} matchHandler - 处理匹配到的文本的函数。\r\n * @param {(text: string, match: boolean) => T} [textHandler] - 处理未匹配到的文本的函数。\r\n * @return {(str: string) => T[]} - 分词器函数。\r\n */\r\n export function stringTokenizer<T>(\r\n regExp: RegExp,\r\n matchHandler: (text: string, match: boolean) => T,\r\n textHandler?: (text: string, match: boolean) => T\r\n ): (str: string) => T[] {\r\n\r\n const ifMatch = matchHandler;\r\n const ifText = textHandler?textHandler: matchHandler;\r\n\r\n return function (str: string) {\r\n const result: T[] = [];\r\n const matches = str.matchAll(regExp);\r\n let index = 0;\r\n for (const match of matches) {\r\n const before = str.slice(index, match.index);\r\n if (before) {\r\n result.push(ifText(before, false));\r\n }\r\n result.push(ifMatch(match[0], true));\r\n index = match.index! + match[0].length;\r\n }\r\n if (index < str.length) {\r\n result.push(ifText(str.slice(index), false));\r\n }\r\n return result;\r\n };\r\n }"],"names":["withRecord","obj","mode","key","newVal","stringTokenizer","regExp","matchHandler","textHandler","ifMatch","ifText","str","result","matches","index","match","before"],"mappings":"uOAMa,MAAAA,EACTC,IAGO,CACH,MAAO,SAAUC,EAAkB,EAAkB,CAC7CA,IAAS,EACT,OAAO,KAAKD,CAAG,EAAE,QAASE,GAAQ,CAC9BF,EAAIE,CAAG,EAAI,MAAA,CACd,EACMD,IAAS,EAChB,OAAO,KAAKD,CAAG,EAAE,QAASE,GAAQ,CAC9B,OAAOF,EAAIE,CAAG,CAAA,CACjB,EAEM,OAAA,OAAOF,EAAK,CAAA,CAAE,CAE7B,EACA,QAAS,SAAUG,EAA+C,CAC9D,KAAK,MAAM,GACJ,OAAA,OAAOH,EAAKG,CAAM,CAC7B,CAAA,GCnBU,SAAAC,EACdC,EACAC,EACAC,EACsB,CAEtB,MAAMC,EAAUF,EACVG,EAASF,GAAyBD,EAExC,OAAO,SAAUI,EAAa,CAC5B,MAAMC,EAAc,CAAA,EACdC,EAAUF,EAAI,SAASL,CAAM,EACnC,IAAIQ,EAAQ,EACZ,UAAWC,KAASF,EAAS,CAC3B,MAAMG,EAASL,EAAI,MAAMG,EAAOC,EAAM,KAAK,EACvCC,GACFJ,EAAO,KAAKF,EAAOM,EAAQ,EAAK,CAAC,EAEnCJ,EAAO,KAAKH,EAAQM,EAAM,CAAC,EAAG,EAAI,CAAC,EACnCD,EAAQC,EAAM,MAASA,EAAM,CAAC,EAAE,MAClC,CACI,OAAAD,EAAQH,EAAI,QACdC,EAAO,KAAKF,EAAOC,EAAI,MAAMG,CAAK,EAAG,EAAK,CAAC,EAEtCF,CAAA,CAEX"}
|
||||
{"version":3,"file":"index.umd.js","sources":["../src/commons/record-util.ts","../src/commons/str-utils.ts"],"sourcesContent":["import { UnwrapNestedRefs } from 'vue';\r\nenum ClearMode {\r\n clear = 3,\r\n delete = 2,\r\n reset = 1\r\n}\r\nexport const withRecord = (\r\n obj: UnwrapNestedRefs<Record<string, any>>,\r\n) => {\r\n\r\n return {\r\n clear: function (mode: ClearMode = ClearMode.delete) {\r\n if (mode === ClearMode.reset) {\r\n Object.keys(obj).forEach((key) => {\r\n obj[key] = undefined;\r\n });\r\n } else if (mode === ClearMode.delete) {\r\n Object.keys(obj).forEach((key) => {\r\n delete obj[key];\r\n });\r\n } else {\r\n Object.assign(obj, {});\r\n }\r\n },\r\n replace: function (newVal: UnwrapNestedRefs<Record<string, any>>) {\r\n this.clear(ClearMode.clear);\r\n Object.assign(obj, newVal);\r\n }\r\n };\r\n};","/**\r\n * 生成给定函数体的函数注释。\r\n *\r\n * @param {RegExp} regExp - 用于匹配的正则表达式。\r\n * @param {(text: string, match: boolean) => T} matchHandler - 处理匹配到的文本的函数。\r\n * @param {(text: string, match: boolean) => T} [textHandler] - 处理未匹配到的文本的函数。\r\n * @return {(str: string) => T[]} - 分词器函数。\r\n */\r\nexport function stringTokenizer<T>(\r\n regExp: RegExp,\r\n matchHandler: (text: string, match: boolean) => T,\r\n textHandler?: (text: string, match: boolean) => T\r\n): (str: string) => T[] {\r\n\r\n const ifMatch = matchHandler;\r\n const ifText = textHandler?textHandler: matchHandler;\r\n\r\n return function (str: string) {\r\n const result: T[] = [];\r\n const matches = str.matchAll(regExp);\r\n let index = 0;\r\n for (const match of matches) {\r\n const before = str.slice(index, match.index);\r\n if (before) {\r\n result.push(ifText(before, false));\r\n }\r\n result.push(ifMatch(match[0], true));\r\n index = match.index! + match[0].length;\r\n }\r\n if (index < str.length) {\r\n result.push(ifText(str.slice(index), false));\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n/**\r\n * 该函数接受两个参数,判断它们是否相等,不区分大小写。\r\n * 如果参数都是字符串类型,则将它们转换为小写后比较。\r\n * 如果两个参数都是undefined,则返回true,\r\n * 否则返回false。\r\n * @param source \r\n * @param target \r\n * @returns \r\n */\r\nexport function equalsIgnoreCase(\r\n source: string | undefined,\r\n target: string | undefined\r\n) {\r\n if (typeof source === \"string\" && typeof target === \"string\") {\r\n return source.toLowerCase() === target.toLowerCase();\r\n } else if (source === undefined && target === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 这个函数接受一个字符串数组和一个字符串作为参数,\r\n * 在数组中判断是否存在与搜索字符串相同或相似的字符串,忽略大小写。\r\n * 如果找到匹配项则返回true,否则返回false。\r\n * @param list 字符串数组\r\n * @param search 用来搜索的字符串\r\n * @returns 是否包含\r\n */\r\nexport const includeIgnoreCase = (list: string[], search: string) => {\r\n for (let i = 0; i < list.length; i++) {\r\n let item = list[i];\r\n if (equalsIgnoreCase(item, search)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n"],"names":["withRecord","obj","mode","key","newVal","stringTokenizer","regExp","matchHandler","textHandler","ifMatch","ifText","str","result","matches","index","match","before","equalsIgnoreCase","source","target","includeIgnoreCase","list","search","i","item"],"mappings":"uOAMa,MAAAA,EACTC,IAGO,CACH,MAAO,SAAUC,EAAkB,EAAkB,CAC7CA,IAAS,EACT,OAAO,KAAKD,CAAG,EAAE,QAASE,GAAQ,CAC9BF,EAAIE,CAAG,EAAI,MAAA,CACd,EACMD,IAAS,EAChB,OAAO,KAAKD,CAAG,EAAE,QAASE,GAAQ,CAC9B,OAAOF,EAAIE,CAAG,CAAA,CACjB,EAEM,OAAA,OAAOF,EAAK,CAAA,CAAE,CAE7B,EACA,QAAS,SAAUG,EAA+C,CAC9D,KAAK,MAAM,GACJ,OAAA,OAAOH,EAAKG,CAAM,CAC7B,CAAA,GCnBQ,SAAAC,EACdC,EACAC,EACAC,EACsB,CAEtB,MAAMC,EAAUF,EACVG,EAASF,GAAyBD,EAExC,OAAO,SAAUI,EAAa,CAC5B,MAAMC,EAAc,CAAA,EACdC,EAAUF,EAAI,SAASL,CAAM,EACnC,IAAIQ,EAAQ,EACZ,UAAWC,KAASF,EAAS,CAC3B,MAAMG,EAASL,EAAI,MAAMG,EAAOC,EAAM,KAAK,EACvCC,GACFJ,EAAO,KAAKF,EAAOM,EAAQ,EAAK,CAAC,EAEnCJ,EAAO,KAAKH,EAAQM,EAAM,CAAC,EAAG,EAAI,CAAC,EACnCD,EAAQC,EAAM,MAASA,EAAM,CAAC,EAAE,MAClC,CACI,OAAAD,EAAQH,EAAI,QACdC,EAAO,KAAKF,EAAOC,EAAI,MAAMG,CAAK,EAAG,EAAK,CAAC,EAEtCF,CAAA,CAEX,CAWgB,SAAAK,EACdC,EACAC,EACA,CACA,OAAI,OAAOD,GAAW,UAAY,OAAOC,GAAW,SAC3CD,EAAO,YAAA,IAAkBC,EAAO,YAAY,EAC1CD,IAAW,QAAaC,IAAW,MAIhD,CAUa,MAAAC,EAAoB,CAACC,EAAgBC,IAAmB,CACnE,QAASC,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAAK,CAChC,IAAAC,EAAOH,EAAKE,CAAC,EACb,GAAAN,EAAiBO,EAAMF,CAAM,EACxB,MAAA,EAEX,CACO,MAAA,EACT"}
|
||||
|
|
@ -6,11 +6,11 @@
|
|||
* @param {(text: string, match: boolean) => T} [textHandler] - 处理未匹配到的文本的函数。
|
||||
* @return {(str: string) => T[]} - 分词器函数。
|
||||
*/
|
||||
export function stringTokenizer<T>(
|
||||
export function stringTokenizer<T>(
|
||||
regExp: RegExp,
|
||||
matchHandler: (text: string, match: boolean) => T,
|
||||
textHandler?: (text: string, match: boolean) => T
|
||||
): (str: string) => T[] {
|
||||
): (str: string) => T[] {
|
||||
|
||||
const ifMatch = matchHandler;
|
||||
const ifText = textHandler?textHandler: matchHandler;
|
||||
|
|
@ -32,4 +32,44 @@
|
|||
}
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 该函数接受两个参数,判断它们是否相等,不区分大小写。
|
||||
* 如果参数都是字符串类型,则将它们转换为小写后比较。
|
||||
* 如果两个参数都是undefined,则返回true,
|
||||
* 否则返回false。
|
||||
* @param source
|
||||
* @param target
|
||||
* @returns
|
||||
*/
|
||||
export function equalsIgnoreCase(
|
||||
source: string | undefined,
|
||||
target: string | undefined
|
||||
) {
|
||||
if (typeof source === "string" && typeof target === "string") {
|
||||
return source.toLowerCase() === target.toLowerCase();
|
||||
} else if (source === undefined && target === undefined) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 这个函数接受一个字符串数组和一个字符串作为参数,
|
||||
* 在数组中判断是否存在与搜索字符串相同或相似的字符串,忽略大小写。
|
||||
* 如果找到匹配项则返回true,否则返回false。
|
||||
* @param list 字符串数组
|
||||
* @param search 用来搜索的字符串
|
||||
* @returns 是否包含
|
||||
*/
|
||||
export const includeIgnoreCase = (list: string[], search: string) => {
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
let item = list[i];
|
||||
if (equalsIgnoreCase(item, search)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { withRecord } from "./commons/record-util";
|
||||
import { stringTokenizer } from "./commons/str-utils";
|
||||
import { stringTokenizer, equalsIgnoreCase, includeIgnoreCase } from "./commons/str-utils";
|
||||
|
||||
export { stringTokenizer, withRecord };
|
||||
export { stringTokenizer, withRecord, equalsIgnoreCase, includeIgnoreCase };
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user