Files
FOFCompiler/js/JavaScript/NoStrCompiler/CompilerJavaScriptNoStrCompiler.js
2025-08-14 15:43:15 +08:00

171 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//不参与编译的JS相关数据
//JsCodeJSonCompilerStr-存所有编译时产生的临时数据,该变量中的临时数据将不会参与到JS编译
//JSCode-代表编译的代码
//IfType-代表类型【1是开头2是结束】
//ifCompiler-是否编译,真代表是
//FileID - 文件ID可以是空字符串
function NoStrCompiler(JsCodeJSonCompilerStr, JSCode, IfType, ifCompiler = false, FileID) {
return NoStrCompiler_StrComNo(JsCodeJSonCompilerStr, JSCode, IfType, ifCompiler, FileID)
}
//不参与编译的JS相关数据-字符串不参与编译
//JsCodeJSonCompilerStr-存所有编译时产生的临时数据,该变量中的临时数据将不会参与到JS编译
//JSCode-代表编译的代码
//IfType-代表类型【1是开头2是结束】
//ifCompiler-是否编译,真代表是
//FileID - 文件ID可以是空字符串
function NoStrCompiler_StrComNo(JsCodeJSonCompilerStr, JSCode, IfType, ifCompiler = false, FileID) {
if (IfType == 1) {
JSCode = JSCode.replaceAll("image/*", "NoCompilerJsCode0" + CompilerStart)
JSCode = JSCode.replaceAll("<script", "NoCompilerJsCode1" + CompilerStart)
JSCode = JSCode.replaceAll("</script", "NoCompilerJsCode2" + CompilerStart)
JSCode = JSCode.replaceAll("<脚本", "NoCompilerJsCode3" + CompilerStart)
JSCode = JSCode.replaceAll("</脚本", "NoCompilerJsCode4" + CompilerStart)
JSCode = JSCode.replaceAll("/*", ComXingHaoFOFStuDioText1)
JSCode = JSCode.replaceAll("*/", ComXingHaoFOFStuDioText2)
let StringObj = TakeTheMiddleOfTheTextAll(JSCode, "kkcosxinghaojstihuan", "fanxinghaokkcosjstihuan");
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
let StrCodeLs = [StrCodeUuid(StringObj[index]), StringObj[index], false]
JSCode = JSCode.replace(StringObj[index], StrCodeLs[0])
JsCodeJSonCompilerStr[JsCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
StringObj = TakeTheMiddleOfTheTextAll(JSCode, ComXingHaoFOFStuDioText1, ComXingHaoFOFStuDioText2);
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
let StrCodeLs = [StrCodeUuid(StringObj[index]), StringObj[index], false]
JSCode = JSCode.replace(StringObj[index], StrCodeLs[0])
JsCodeJSonCompilerStr[JsCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
let dataJSCode = FOFStudioType.replaceStringsInCode(JSCode);
JSCode = dataJSCode["JSCode"];
let JsCodeJSonCompilerStrData = dataJSCode["JsCodeJSonCompilerStr"];
for (let index = 0; index < JsCodeJSonCompilerStrData.length; index++) {
JsCodeJSonCompilerStr[JsCodeJSonCompilerStr.length] = JsCodeJSonCompilerStrData[index];
}
/*全局关键字防止失误编译*/
let GArrCodeLs = GlobalCommandsDoNotCompile(JSCode)
for (let index = 0; index < GArrCodeLs.length; index++) {
let StrCode = GArrCodeLs[index];
let StrCodeLs = [StrCodeUuid(StrCode), StrCode, true]//实行全部替换机制
JSCode = JSCode.replaceAll(StrCode, StrCodeLs[0])
JsCodeJSonCompilerStr[JsCodeJSonCompilerStr.length] = StrCodeLs;
}
}
if (IfType == 2) {
for (let index = 0; index < JsCodeJSonCompilerStr.length; index++) {
let StrCodeLs = JsCodeJSonCompilerStr[JsCodeJSonCompilerStr.length - index - 1]//1代表双引号
if (StrCodeLs[2] == true) {
JSCode = JSCode.replaceAll(StrCodeLs[0], StrCodeLs[1])
} else {
JSCode = JSCode.replace(StrCodeLs[0], StrCodeLs[1])
}
}
JSCode = JSCode.replaceAll("NoCompilerJsCode0" + CompilerStart, "image/*")
JSCode = JSCode.replaceAll("NoCompilerJsCode1" + CompilerStart, "<script")
JSCode = JSCode.replaceAll("NoCompilerJsCode2" + CompilerStart, "</script")
JSCode = JSCode.replaceAll("NoCompilerJsCode3" + CompilerStart, "<脚本")
JSCode = JSCode.replaceAll("NoCompilerJsCode4" + CompilerStart, "</脚本")
JSCode = JSCode.replaceAll(ComXingHaoFOFStuDioText1, "/*")
JSCode = JSCode.replaceAll(ComXingHaoFOFStuDioText2, "*/")
}
return { "code": JSCode, "JsCodeJSonCompilerStr": JsCodeJSonCompilerStr };
}
//编译被NoStrCompiler定性为不需要编译但实际需要编译的内容
//参数1要编译的页面代码参数2编译的类型
//1代表编译成本地语言,2代表编译成英文
//【注意:本地语言,例如中文、柬埔寨或者其他国家语言以正则为主,目前暂时支持中文】
function YesStrCompiler(JSCode, CodeType) {
let pattern2 = /([`])(?:(?=(\\?))\2.)*?\1/gs;
let StringObj = JSCode.match(pattern2);
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
if (StringObj[index].includes("<") && StringObj[index].includes(">"))
{
let StrCodeLs = [StringObj[index], StringObj[index]]
StrCodeLs[1] = CodeCompilerHtmlAll(StrCodeLs[1], CodeType, 1)
JSCode = JSCode.replaceHack(StrCodeLs[0], StrCodeLs[1])
}
}
}
}
return JSCode;
}
//全局命令中不参与编译的语法,例如:对象{ }
function GlobalCommandsDoNotCompile(JSCode) {
let GArrCodeLs = []
for (let index = 0; index < JavascriptOverallCode.length; index++) {
let ifGArrCodeLsAdd = false;
let ArrCodeLs = []
ArrCodeLs[ArrCodeLs.length] = "{" + JavascriptOverallCode[index]["T_title"] + ":"
ArrCodeLs[ArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title"] + ":"
ArrCodeLs[ArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title"] + " :"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + ":"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + ":"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + " :"
ArrCodeLs[ArrCodeLs.length] = "{" + JavascriptOverallCode[index]["T_title_en"] + ":"
ArrCodeLs[ArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title_en"] + ":"
ArrCodeLs[ArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title_en"] + " :"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + ":"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + ":"
ArrCodeLs[ArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + " :"
for (let index2 = 0; index2 < ArrCodeLs.length; index2++) {
if (JSCode.includes(ArrCodeLs[index2])) {
let reg = new RegExp("(?=[^0-9a-zA-Z\u4e00-\u9fa5_])[^0-9a-zA-Z\u4e00-\u9fa5_]" + ArrCodeLs[index2] + "(?=[^0-9a-zA-Z\u4e00-\u9fa5_])", "g");
if (reg.test(JSCode) == true) {
ifGArrCodeLsAdd = true
}
}
if (ifGArrCodeLsAdd == true) {
if (GArrCodeLs.includes("{" + JavascriptOverallCode[index]["T_title"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "{" + JavascriptOverallCode[index]["T_title"] + ":"
}
if (GArrCodeLs.includes(" " + JavascriptOverallCode[index]["T_title"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title"] + ":"
}
if (GArrCodeLs.includes(" " + JavascriptOverallCode[index]["T_title"] + " :") == false) {
GArrCodeLs[GArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title"] + " :"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + ":"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + ":"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title"] + " :") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title"] + " :"
}
if (GArrCodeLs.includes("{" + JavascriptOverallCode[index]["T_title_en"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "{" + JavascriptOverallCode[index]["T_title_en"] + ":"
}
if (GArrCodeLs.includes(" " + JavascriptOverallCode[index]["T_title_en"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title_en"] + ":"
}
if (GArrCodeLs.includes(" " + JavascriptOverallCode[index]["T_title_en"] + " :") == false) {
GArrCodeLs[GArrCodeLs.length] = " " + JavascriptOverallCode[index]["T_title_en"] + " :"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title_en"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + ":"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title_en"] + ":") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + ":"
}
if (GArrCodeLs.includes("," + JavascriptOverallCode[index]["T_title_en"] + " :") == false) {
GArrCodeLs[GArrCodeLs.length] = "," + JavascriptOverallCode[index]["T_title_en"] + " :"
}
}
}
}
return GArrCodeLs;
}