{"version":3,"sources":["../src/string/params.ts"],"names":["params","str","args","result","opts","vars","isPlainObject","lastArg","replaceVars"],"mappings":";;;;AAuCO,SAASA,CAAAA,CAAOC,KAAcC,CAAgB,CAAA,CACjD,IAAIC,CAAOF,CAAAA,CAAAA,CAAI,OAAQ,EAAA,CACnBG,CAA0B,CAAA,GAC1BC,CAAO,CAAA,CAAC,GAAGH,CAAI,CAAA,CAEnB,GAAGA,CAAK,CAAA,MAAA,CAAO,CAAKI,EAAAA,CAAAA,CAAcJ,CAAKA,CAAAA,CAAAA,CAAK,OAAO,CAAC,CAAC,EAAE,CACnD,IAAIK,EAAUL,CAAKA,CAAAA,CAAAA,CAAK,MAAO,CAAA,CAAC,CAC7B,CAAA,CAAA,YAAA,GAAgBK,GAAW,QAAYA,GAAAA,CAAAA,EAAW,aAAcA,CAC5D,IAAA,YAAA,GAAgBA,IAASH,CAAK,CAAA,SAAA,CAAYG,CAAQ,CAAA,UAAA,CAAA,CAClD,QAAYA,GAAAA,CAAAA,GAASH,EAAK,KAAQG,CAAAA,CAAAA,CAAQ,QAC1C,UAAcA,GAAAA,CAAAA,GAASH,EAAK,OAAUG,CAAAA,CAAAA,CAAQ,QACjDF,CAAAA,CAAAA,CAAAA,CAAK,GAAI,EAAA,EAEjB,CACA,GAAG,CACC,OAAGA,CAAK,CAAA,MAAA,EAAQ,EACLG,GAAYL,CAAAA,CAAAA,CAAOE,CAAK,CAAA,CAAC,CAAED,CAAAA,CAAI,EAE/BI,GAAYL,CAAAA,CAAAA,CAAO,CAAC,GAAGE,CAAI,EAAED,CAAI,CAEhD,CAAa,KAAA,CACT,OAAOD,CACX,CACJ,CAEA,MAAA,CAAO,SAAU,CAAA,MAAA,CAAS,UAAsB,CAC5C,OAAOH,CAAO,CAAA,IAAA,CAAK,GAAG,SAAS,CACnC,CAAA","file":"chunk-ZXPVLSYO.mjs","sourcesContent":["import { isPlainObject } from \"../typecheck\";\nimport { replaceVars } from \"./replaceVars\";\n \ndeclare global {\n    interface String {\n        params(vars:Record<string,any> | any[] | Set<any> | Map<string,any>): string;\n        params(...vars: any[]): string; \n    }\n}\n\n\n/**\n * \n    添加一个params参数，使字符串可以进行变量插值替换，\n\n    基本用法：\n\n    \"this is {a}+{b}\".params({a:1,b:2}) --> this is 1+2\n    \"this is {a}+{b}\".params(1,2) --> this is 1+2\n    \"this is {}+{}\".params([1,2]) --> this is 1+2\n\n    \n    字符\n    \n    当插值中包含非字符时会原样保留原始字符，例如：\n\n    \"this is {(a)}{[b]}\".params({a:1,b:2}) --> this is (1)[2]\n    \"this is {a}{,b}\".params({a:1,b:2}) --> this is 1,2\n    \n    处理undefined与null\n\n    如果插件变量=undefined或null，则不输出插值占位\n    \"this is {(a)}{[b]}\".params()  --> this is  \n\n    如果插件变量是一个函数，则会执行\n\n * \n */\n\nexport function params(str:string,...args:any):string{\n    let result=str.valueOf()\n    let opts:Record<string,any> = {} \n    let vars = [...args]\n    // 当最后一个参数是对象并且包括$delimiter,$empty,$forFach时代表是配置参数\n    if(args.length>0 && isPlainObject(args[args.length-1])){\n        let lastArg = args[args.length-1]\n        if(\"$delimiter\" in lastArg || \"$empty\" in lastArg || \"$forEach\" in lastArg){\n            if(\"$delimiter\" in lastArg) opts.delimiter = lastArg.$delimiter\n            if(\"$empty\" in lastArg) opts.empty = lastArg.$empty\n            if(\"$forEach\" in lastArg) opts.forEach = lastArg.$forEach\n            vars.pop()\n        }\n    }\n    try{        \n        if(vars.length==1){\n            return replaceVars(result,vars[0],opts)        \n        }else{\n            return replaceVars(result,[...vars],opts)        \n        }        \n    }catch(e:any){\n        return result\n    }    \n}  \n\nString.prototype.params = function (this:string){\n    return params(this,...arguments)\n} "]}