Files
FOFCompiler/js/css/CompilerCss.js
2025-08-14 15:43:15 +08:00

622 lines
35 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.

let JsonCssCode = [];//储存所有的JSON类编译数据
let JSON3_All_Title = [];//存储所有的标签名称,不带<>的标签
function CssCodeAllStyle(htmlStr) {
let reg = RegExp("(<style[^]*?</style>)", "g");
let htmlStrAll = htmlStr.match(reg);
if (htmlStrAll == null || htmlStrAll == undefined) {
htmlStrAll = [];
}
let htmlStrAllReturn = [];
if (htmlStrAll.length >= 1) {
for (let index = 0; index < htmlStrAll.length; index++) {
htmlStrAllReturn[htmlStrAllReturn.length] = htmlStrAll[index];
}
}
reg = RegExp("(<样式[^]*?</样式>)", "g");
htmlStrAll = htmlStr.match(reg);
if (htmlStrAll == null || htmlStrAll == undefined) {
htmlStrAll = [];
}
if (htmlStrAll.length >= 1) {
for (let index = 0; index < htmlStrAll.length; index++) {
htmlStrAllReturn[htmlStrAllReturn.length] = htmlStrAll[index];
}
}
return htmlStrAllReturn;
}
//初始化JS编译JSON信息
function JsonCssCodeMain(JSON_C) {
JsonCssCode = JSON_C;
}
//编译Css命令
//参数1要编译的Css代码参数2编译的类型
//1代表编译成本地语言,2代表编译成英文
//【注意:本地语言,例如中文、柬埔寨或者其他国家语言以正则为主,目前暂时支持中文】
function CssCodeCompiler(CssCode, CodeType) {
let CssCodeJSonCompilerStr = [];//储存所有编译时产生的临时数据!
let RetCode = NoStrCssCompiler(CssCodeJSonCompilerStr, CssCode, 1);
CssCode = RetCode["code"];
CssCodeJSonCompilerStr = RetCode["CssCodeJSonCompilerStr"];
let TypeInt = -1;
if (CodeType == 1) {
TypeInt = 0
} else {
TypeInt = 1
}
for (let index = 0; index < JsonCssCode.length; index++) {
let regCompilerCode = "";//需要编译替换为的值
if (JsonCssCode[index].length >= 3) {
if (CssCode.indexOf(JsonCssCode[index][TypeInt]) != -1)//代表有需要进行处理的关键字
{
if (TypeInt == 0) {
regCompilerCode = JsonCssCode[index][1];
} else {
regCompilerCode = JsonCssCode[index][0];
}
CssCode = CssCodeReplace(CssCode, JsonCssCode[index][TypeInt], regCompilerCode, JsonCssCode[index][2]);
}
}
}
//三方库class编译
for (let index = 0; index < HTMLTripartiteClass.length; index++) {
let title = HTMLTripartiteClass[index]["T_title"];
let title_en = HTMLTripartiteClass[index]["T_title_en"];
if (CssCode.indexOf("." + title) != -1 || CssCode.indexOf("." + title_en) != -1)//代表有需要进行处理的关键字
{
if (CodeType == 1) {
CssCode = CssCodeReplace(CssCode, title_en, title, 5);
}
if (CodeType == 2) {
CssCode = CssCodeReplace(CssCode, title, title_en, 5);
}
}
}
//三方模块的class编译
try {
for (let index = 0; index < window.RenderingJsonArr.length; index++) {
if (window.RenderingJsonArr[index]["class"].length >= 1) {
for (let index1 = 0; index1 < window.RenderingJsonArr[index]["class"].length; index1++) {
let title = window.RenderingJsonArr[index]["class"][index1]["nameZh"];
let title_en = window.RenderingJsonArr[index]["class"][index1]["nameEn"];
if (CssCode.indexOf("." + title) != -1 || CssCode.indexOf("." + title_en) != -1)//代表有需要进行处理的关键字
{
if (CodeType == 1) {
CssCode = CssCodeReplace(CssCode, title_en, title, 5);
}
if (CodeType == 2) {
CssCode = CssCodeReplace(CssCode, title, title_en, 5);
}
}
}
}
}
} catch (error) {
}
for (let index = 0; index < JSON3_All.length; index++) {
let title = JSON3_All[index]["title"];
title = title.replaceHack("<", "")
title = title.replaceHack(">", "")
let title_en = JSON3_All[index]["title_en"];
title_en = title_en.replaceHack("<", "")
title_en = title_en.replaceHack(">", "")
if (CssCode.indexOf(title) != -1 || CssCode.indexOf(title_en) != -1)//代表有需要进行处理的关键字
{
if (CodeType == 1) {
CssCode = CssCodeReplace(CssCode, title_en, title, 4);
}
if (CodeType == 2) {
CssCode = CssCodeReplace(CssCode, title, title_en, 4);
}
}
}
RetCode = NoStrCssCompiler(CssCodeJSonCompilerStr, CssCode, 2);
CssCode = RetCode["code"]
CssCode = CssSpecialTreatmentFun(CssCode, CodeType);//CSS特殊翻译一些不在支持库中的命令等
return CssCode;
}
//用来进行CSS命令的替换编译本方法不能独立使用通常用来配合CssCodeCompiler命令
//参数1为整体的JS代码
//参数2为需要编译的关键字
//参数3为需要替换编译为的内容
//参数4代表编CSS类型【1CSS命令2CSS值3CSS全局都需要编译,4代表html名称5代表三方库class】
function CssCodeReplace(CssCode, CssCodeKeyword, regCompilerCode, CssType) {
let CssCodeStr = CssCode;
if (CssCodeStr == regCompilerCode) {//判断是否是直接一样的内容,一样就直接匹配替换
CssCodeStr = regCompilerCode;
return CssCodeStr;
}
if (CssType == 3) {
CssCodeStr = CssCodeStr.replaceAll(CssCodeKeyword, regCompilerCode)
return CssCodeStr;
}
if (CssType == 1 || CssType == 2) {
if (CssCodeStr.indexOf("{") != -1 && CssCodeStr.indexOf("}") != -1) {
let CssCodeAll = TakeTheMiddleOfTheTextAll(CssCodeStr, "{", "}");
for (let index = 0; index < CssCodeAll.length; index++) {
let CssCodeLS = CssCodeReplace_Code(CssCodeAll[index], CssCodeKeyword, regCompilerCode);
if (CssCodeLS != CssCodeAll[index]) {
CssCodeStr = CssCodeStr.replaceAll(CssCodeAll[index], CssCodeLS)
}
}
} else {
CssCodeStr = CssCodeReplace_Code(CssCodeStr, CssCodeKeyword, regCompilerCode);
}
CssCodeStr = CssTranslateToPseudoClass(CssCodeStr, CssCodeKeyword, regCompilerCode);
return CssCodeStr;
}
if (CssType == 4 || CssType == 5) {
CssCodeStr = CssCodeReplace_Code(CssCodeStr, CssCodeKeyword, regCompilerCode);
return CssCodeStr;
}
}
//用来进行CSS-Html命令的替换编译
//参数1为整体的JS代码
//参数2为需要编译的关键字
//参数3为需要替换编译为的内容
function CssCodeReplace_Code(CssCode, CssCodeKeyword, regCompilerCode) {
if (CssCode.indexOf(CssCodeKeyword) == -1 && CssCode.indexOf(regCompilerCode) == -1) {
return CssCode;
}
let CssCodeStr = CssCode;
if (CssCodeStr == regCompilerCode) {//判断是否是直接一样的内容,一样就直接匹配替换
CssCodeStr = regCompilerCode;
return CssCodeStr;
}
CssCodeStr = "fofservercssbegin " + CssCodeStr;
CssCodeStr = CssCodeStr + " fofservercssbegin";
CssCodeStr = CssCodeStr.replaceAll("\r\n", " fofservercssbegin\r\nfofservercssbegin ");
let CssCodeStrOriginal = CssCodeStr;
let regCompilerCodeArr = [StrCodeUuid(regCompilerCode), regCompilerCode];
let reg = new RegExp("[^0-9a-zA-Z\u4e00-\u9fa5_-]" + CssCodeKeyword + "(?=[^0-9a-zA-Z\u4e00-\u9fa5_-])", "g");
if (CssCodeStrOriginal.indexOf(CssCodeKeyword) != -1) {
let CssCodeStrArr = CssCodeStrOriginal.match(reg);
if (CssCodeStrArr != undefined && CssCodeStrArr != null) {
if (CssCodeStrArr.length >= 1) {
CssCodeStr = CssCodeStr.replaceHack(reg, regCompilerCodeArr[0]);
for (let index = 0; index < CssCodeStrArr.length; index++) {
let FirstText = CssCodeStrArr[index].substring(0, 1);
CssCodeStr = CssCodeStr.replaceHack(regCompilerCodeArr[0], FirstText + regCompilerCodeArr[1]);
}
}
}
}
CssCodeStr = CssCodeStr.replaceAll(" fofservercssbegin\r\nfofservercssbegin ", "\r\n");
CssCodeStr = CssCodeStr.replaceAll("fofservercssbegin ", "");
CssCodeStr = CssCodeStr.replaceAll(" fofservercssbegin", "");
return CssCodeStr;
}
//编译Html文件下所有Style中的CSS代码
//编译JS命令
//参数1要编译的页面代码
//参数2编译的类型-1代表编译成本地语言,2代表编译成英文
//【注意:本地语言,例如中文、柬埔寨或者其他国家语言以正则为主,目前暂时支持中文】
function CssCodeCompilerAll(str, CodeType) {
let CssCodeAll = CssCodeAllStyle(str);
for (let index = 0; index < CssCodeAll.length; index++) {
let CssCodeAr = [CssCodeAll[index], CssCodeAll[index]];
CssCodeAr[1] = CssCodeCompiler(CssCodeAr[1], CodeType);
str = str.replaceHack(CssCodeAr[0], CssCodeAr[1])
}
return str;
}
//不参与编译的JS相关数据
//1代表编译的代码2代表类型【1是开头2是结束】
function NoStrCssCompiler(CssCodeJSonCompilerStr, CssCode, IfType) {
if (IfType == 1) {
if (CssCode.indexOf("<style") != -1) {
CssCode = CssCode.replaceAll("<style", "NoCompilerCssCode1" + CompilerStart)
}
if (CssCode.indexOf("</style") != -1) {
CssCode = CssCode.replaceAll("</style", "NoCompilerCssCode2" + CompilerStart)
}
if (CssCode.indexOf("<样式") != -1) {
CssCode = CssCode.replaceAll("<样式", "NoCompilerCssCode3" + CompilerStart)
}
if (CssCode.indexOf("</样式") != -1) {
CssCode = CssCode.replaceAll("</样式", "NoCompilerCssCode4" + CompilerStart)
}
if (CssCode.indexOf("/*") != -1) {
CssCode = CssCode.replaceAll("/*", "kkcosxinghaojstihuan" + CompilerStart)
}
if (CssCode.indexOf("*/") != -1) {
CssCode = CssCode.replaceAll("*/", "fanxinghaokkcosjstihuan" + CompilerStart)
}
if (CssCode.indexOf("$") != -1) {
CssCode = CssCode.replaceAll("$", ComSymbolCssFOFStuDio + CompilerStart)
}
//开始处理字符串、屏蔽符等数据
let StringObj = [];
if (CssCode.indexOf("kkcosxinghaojstihuan") != -1 && CssCode.indexOf("fanxinghaokkcosjstihuan") != -1) {
StringObj = TakeTheMiddleOfTheTextAll(CssCode, "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]]
CssCode = CssCode.replaceAll(StringObj[index], StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
if (CssCode.indexOf("\"") != -1 && CssCode.indexOf("\"") != -1) {
StringObj = TakeTheMiddleOfTheTextAll(CssCode, "\"", "\"");
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
let StrCodeLs = [StrCodeUuid(StringObj[index]), StringObj[index]]
CssCode = CssCode.replaceAll(StringObj[index], StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
if (CssCode.indexOf("'") != -1) {
StringObj = TakeTheMiddleOfTheTextAll(CssCode, "'", "'");
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
let StrCodeLs = [StrCodeUuid(StringObj[index]), StringObj[index]]
CssCode = CssCode.replaceAll(StringObj[index], StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
if (CssCode.indexOf("`") != -1) {
StringObj = TakeTheMiddleOfTheTextAll(CssCode, "`", "`");
if (StringObj != undefined && StringObj != null) {
if (StringObj.length >= 1) {
for (let index = 0; index < StringObj.length; index++) {
let StrCodeLs = [StrCodeUuid(StringObj[index]), StringObj[index]]
CssCode = CssCode.replaceAll(StringObj[index], StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
if (JSON3_All_Title.length <= 0) {
for (let index = 0; index < JSON3_All.length; index++) {
let title = JSON3_All[index]["title"];
title = title.replaceHack("<", "")
title = title.replaceHack(">", "")
let title_en = JSON3_All[index]["title_en"];
title_en = title_en.replaceHack("<", "")
title_en = title_en.replaceHack(">", "")
JSON3_All_Title[JSON3_All_Title.length] = {
"title": title,
"title_en": title_en
}
}
}
//html重名.标签操作
for (let index = 0; index < JSON3_All_Title.length; index++) {
let title = JSON3_All_Title[index]["title"];
let title_en = JSON3_All_Title[index]["title_en"];
if (CssCode.indexOf("." + title) != -1 || CssCode.indexOf("." + title_en) != -1 || CssCode.indexOf("#" + title) != -1 || CssCode.indexOf("#" + title_en) != -1)//代表有需要进行处理的关键字
{
if (CssCode.indexOf("." + title + " ") != -1 || CssCode.indexOf("." + title + "{") != -1 || CssCode.indexOf("." + title + ".") != -1 || CssCode.indexOf("." + title_en + " ") != -1 || CssCode.indexOf("." + title_en + "{") != -1 || CssCode.indexOf("." + title_en + ".") != -1 || CssCode.indexOf("." + title_en + ":") != -1 || CssCode.indexOf("." + title + ":") != -1) {
if (CssCode.indexOf("." + title + " ") != -1) {
let StrCodeLs = [StrCodeUuid("." + title + " ") + " ", "." + title + " "]
CssCode = CssCode.replaceAll("." + title + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title + "{") != -1) {
let StrCodeLs = [StrCodeUuid("." + title + "{") + "{", "." + title + "{"]
CssCode = CssCode.replaceAll("." + title + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title + ".") != -1) {
let StrCodeLs = [StrCodeUuid("." + title + ".") + ".", "." + title + "."]
CssCode = CssCode.replaceAll("." + title + ".", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title + ":") != -1) {
let StrCodeLs = [StrCodeUuid("." + title + ":") + ":", "." + title + ":"]
CssCode = CssCode.replaceAll("." + title + ":", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title_en + " ") != -1) {
let StrCodeLs = [StrCodeUuid("." + title_en + " ") + " ", "." + title_en + " "]
CssCode = CssCode.replaceAll("." + title_en + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title_en + "{") != -1) {
let StrCodeLs = [StrCodeUuid("." + title_en + "{") + "{", "." + title_en + "{"]
CssCode = CssCode.replaceAll("." + title_en + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title_en + ".") != -1) {
let StrCodeLs = [StrCodeUuid("." + title_en + ".") + ".", "." + title_en + "."]
CssCode = CssCode.replaceAll("." + title_en + ".", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("." + title_en + ":") != -1) {
let StrCodeLs = [StrCodeUuid("." + title_en + ":") + ":", "." + title_en + ":"]
CssCode = CssCode.replaceAll("." + title_en + ":", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
if (CssCode.indexOf("#" + title + " ") != -1 || CssCode.indexOf("#" + title + "{") != -1 || CssCode.indexOf("#" + title + "#") != -1 || CssCode.indexOf("#" + title_en + " ") != -1 || CssCode.indexOf("#" + title_en + "{") != -1 || CssCode.indexOf("#" + title_en + "#") != -1 || CssCode.indexOf("#" + title_en + ":") != -1 || CssCode.indexOf("#" + title + ":") != -1) {
if (CssCode.indexOf("#" + title + " ") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title + " ") + " ", "#" + title + " "]
CssCode = CssCode.replaceAll("#" + title + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title + "{") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title + "{") + "{", "#" + title + "{"]
CssCode = CssCode.replaceAll("#" + title + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title + "#") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title + "#") + "#", "#" + title + "#"]
CssCode = CssCode.replaceAll("#" + title + "#", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title + ":") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title + ":") + ":", "#" + title + ":"]
CssCode = CssCode.replaceAll("#" + title + ":", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title_en + " ") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title_en + " ") + " ", "#" + title_en + " "]
CssCode = CssCode.replaceAll("#" + title_en + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title_en + "{") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title_en + "{") + "{", "#" + title_en + "{"]
CssCode = CssCode.replaceAll("#" + title_en + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title_en + "#") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title_en + "#") + "#", "#" + title_en + "#"]
CssCode = CssCode.replaceAll("#" + title_en + "#", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
if (CssCode.indexOf("#" + title_en + ":") != -1) {
let StrCodeLs = [StrCodeUuid("#" + title_en + ":") + ":", "#" + title_en + ":"]
CssCode = CssCode.replaceAll("#" + title_en + ":", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
//.css名 重名操作
for (let index = 0; index < JsonCssCode.length; index++) {
if (JsonCssCode[index].length >= 3) {
if (CssCode.indexOf(JsonCssCode[index][0]) != -1 || CssCode.indexOf(JsonCssCode[index][1]) != -1 || CssCode.indexOf(JsonCssCode[index][1]) != -1 || CssCode.indexOf(JsonCssCode[index][0]) != -1)//代表有需要进行处理的关键字
{
if (JsonCssCode[index][0].indexOf("_") == -1 && JsonCssCode[index][0].indexOf("-") == -1) {
if (CssCode.indexOf("." + JsonCssCode[index][0] + " ") != -1 || CssCode.indexOf("." + JsonCssCode[index][0] + "{") != -1 || CssCode.indexOf("." + JsonCssCode[index][0] + "\r\n") != -1) {
if (HTMLTripartiteClassStr.indexOf(`"T_title":"` + JsonCssCode[index][0] + `"`) == -1 && HTMLTripartiteClassStr.indexOf(`"T_title_en":"` + JsonCssCode[index][0] + `"`) == -1) {
let StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][0]) + " ", "." + JsonCssCode[index][0] + " "]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][0] + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][0] + "{") + "{", "." + JsonCssCode[index][0] + "{"]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][0] + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][0] + "\r\n"), "." + JsonCssCode[index][0] + "\r\n"]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][0] + "\r\n", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
if (JsonCssCode[index][1].indexOf("_") == -1 && JsonCssCode[index][1].indexOf("-") == -1) {
if (CssCode.indexOf("." + JsonCssCode[index][1] + " ") != -1 || CssCode.indexOf("." + JsonCssCode[index][1] + "{") != -1 || CssCode.indexOf("." + JsonCssCode[index][1] + "\r\n") != -1) {
if (HTMLTripartiteClassStr.indexOf(`"T_title":"` + JsonCssCode[index][1] + `"`) == -1 && HTMLTripartiteClassStr.indexOf(`"T_title_en":"` + JsonCssCode[index][1] + `"`) == -1) {
let StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][1]) + " ", "." + JsonCssCode[index][1] + " "]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][1] + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][1] + "{") + "{", "." + JsonCssCode[index][1] + "{"]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][1] + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("." + JsonCssCode[index][1] + "\r\n"), "." + JsonCssCode[index][1] + "\r\n"]
CssCode = CssCode.replaceAll("." + JsonCssCode[index][1] + "\r\n", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
if (CssCode.indexOf("#") != -1) {
if (CssCode.indexOf("#" + JsonCssCode[index][0] + " ") != -1 || CssCode.indexOf("#" + JsonCssCode[index][0] + "{") != -1 || CssCode.indexOf("#" + JsonCssCode[index][0] + "\r\n") != -1) {
if (HTMLTripartiteClassStr.indexOf(`"T_title":"` + JsonCssCode[index][0] + `"`) == -1 && HTMLTripartiteClassStr.indexOf(`"T_title_en":"` + JsonCssCode[index][0] + `"`) == -1) {
let StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][0]) + " ", "#" + JsonCssCode[index][0] + " "]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][0] + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][0] + "{") + "{", "#" + JsonCssCode[index][0] + "{"]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][0] + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][0] + "\r\n"), "#" + JsonCssCode[index][0] + "\r\n"]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][0] + "\r\n", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
if (CssCode.indexOf("#" + JsonCssCode[index][1] + " ") != -1 || CssCode.indexOf("#" + JsonCssCode[index][1] + "{") != -1 || CssCode.indexOf("#" + JsonCssCode[index][1] + "\r\n") != -1) {
if (HTMLTripartiteClassStr.indexOf(`"T_title":"` + JsonCssCode[index][1] + `"`) == -1 && HTMLTripartiteClassStr.indexOf(`"T_title_en":"` + JsonCssCode[index][1] + `"`) == -1) {
let StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][1]) + " ", "#" + JsonCssCode[index][1] + " "]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][1] + " ", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][1] + "{") + "{", "#" + JsonCssCode[index][1] + "{"]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][1] + "{", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
StrCodeLs = [StrCodeUuid("#" + JsonCssCode[index][1] + "\r\n"), "#" + JsonCssCode[index][1] + "\r\n"]
CssCode = CssCode.replaceAll("#" + JsonCssCode[index][1] + "\r\n", StrCodeLs[0])
CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length] = StrCodeLs;
}
}
}
}
}
}
}
if (IfType == 2) {
for (let index = 0; index < CssCodeJSonCompilerStr.length; index++) {
let StrCodeLs = CssCodeJSonCompilerStr[CssCodeJSonCompilerStr.length - index - 1]
if (CssCode.indexOf(StrCodeLs[0]) != -1) {
CssCode = CssCode.replaceAll(StrCodeLs[0], StrCodeLs[1])
}
}
if (CssCode.indexOf("NoCompilerCssCode1" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("NoCompilerCssCode1" + CompilerStart, "<style")
}
if (CssCode.indexOf("NoCompilerCssCode2" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("NoCompilerCssCode2" + CompilerStart, "</style")
}
if (CssCode.indexOf("NoCompilerCssCode3" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("NoCompilerCssCode3" + CompilerStart, "<样式")
}
if (CssCode.indexOf("NoCompilerCssCode4" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("NoCompilerCssCode4" + CompilerStart, "</样式")
}
if (CssCode.indexOf("kkcosxinghaojstihuan" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("kkcosxinghaojstihuan" + CompilerStart, "/*")
}
if (CssCode.indexOf("fanxinghaokkcosjstihuan" + CompilerStart) != -1) {
CssCode = CssCode.replaceAll("fanxinghaokkcosjstihuan" + CompilerStart, "*/")
}
if (CssCode.indexOf(ComSymbolCssFOFStuDio + CompilerStart) != -1) {
CssCode = CssCode.replaceAll(ComSymbolCssFOFStuDio + CompilerStart, "$")
}
}
return { "CssCodeJSonCompilerStr": CssCodeJSonCompilerStr, "code": CssCode };
}
//键名转JSON,注意:要确保.号已经被处理成Comendfofdianhaobenin
function KeyNameToJSON(CssCode) {
for (let index = 0; index < JsonCssCode.length; index++) {
if (JsonCssCode[index].length >= 3) {
if (JsonCssCode[index][2] == 1) {
if (CssCode.indexOf(JsonCssCode[index][0]) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, JsonCssCode[index][0]);
}
if (CssCode.indexOf(JsonCssCode[index][1]) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, JsonCssCode[index][1]);
}
}
}
}
for (let index = 0; index < JSON3_All.length; index++) {
let title = JSON3_All[index]["title"];
title = title.replaceHack("<", "")
title = title.replaceHack(">", "")
let title_en = JSON3_All[index]["title_en"];
title_en = title_en.replaceHack("<", "")
title_en = title_en.replaceHack(">", "")
if (CssCode.indexOf(title) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, title);
}
if (CssCode.indexOf(title_en) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, title_en);
}
}
//三方库class编译-建议后期加上IDE分库编译
for (let index = 0; index < HTMLTripartiteClass.length; index++) {
let title = HTMLTripartiteClass[index]["T_title"];
let title_en = HTMLTripartiteClass[index]["T_title_en"];
if (CssCode.indexOf(Comendfofdianhaobenin + title) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, Comendfofdianhaobenin + title);
}
if (CssCode.indexOf(Comendfofdianhaobenin + title_en) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, Comendfofdianhaobenin + title_en);
}
}
return CssCode;
}
//键名转JSON,注意:要确保.号已经被处理成Comendfofdianhaobenin
//IfHump-是否转换为驼峰对象
function KeyNameToJSON(CssCode, IfHump = false) {
for (let index = 0; index < JsonCssCode.length; index++) {
if (JsonCssCode[index].length >= 3) {
if (JsonCssCode[index][2] == 1) {
if (CssCode.indexOf(JsonCssCode[index][0]) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, JsonCssCode[index][0], IfHump);
}
if (CssCode.indexOf(JsonCssCode[index][1]) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, JsonCssCode[index][1], IfHump);
}
}
}
}
for (let index = 0; index < JSON3_All.length; index++) {
let title = JSON3_All[index]["title"];
title = title.replaceHack("<", "")
title = title.replaceHack(">", "")
let title_en = JSON3_All[index]["title_en"];
title_en = title_en.replaceHack("<", "")
title_en = title_en.replaceHack(">", "")
if (CssCode.indexOf(title) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, title, IfHump);
}
if (CssCode.indexOf(title_en) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, title_en, IfHump);
}
}
//三方库class编译-建议后期加上IDE分库编译
for (let index = 0; index < HTMLTripartiteClass.length; index++) {
let title = HTMLTripartiteClass[index]["T_title"];
let title_en = HTMLTripartiteClass[index]["T_title_en"];
if (CssCode.indexOf(Comendfofdianhaobenin + title) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, Comendfofdianhaobenin + title, IfHump);
}
if (CssCode.indexOf(Comendfofdianhaobenin + title_en) != -1) {
CssCode = CssCodeReplaceKeyNameToJSON(CssCode, Comendfofdianhaobenin + title_en, IfHump);
}
}
return CssCode;
}
//键名命令转JSON替换方法
//参数1为整体的JS代码
//参数2为需要编译的关键字
//IfHump-是否转换为驼峰对象
function CssCodeReplaceKeyNameToJSON(CssCode, CssCodeKeyword, IfHump = false) {
let RcCssCodeKeyword = CssCodeKeyword;
if (IfHump == true) {
let HumpArr = RcCssCodeKeyword.split("-");
if (HumpArr) {
if (HumpArr.length >= 2) {
let LsHump = HumpArr[1];
let LsHump1 = LsHump.substring(0, 1);
LsHump1 = LsHump1.toUpperCase();
if (LsHump.length >= 2) {
LsHump = LsHump1 + LsHump.substring(1, LsHump.length);
} else {
LsHump = LsHump1;
}
RcCssCodeKeyword = HumpArr[0] + LsHump;
}
}
}
let CssCodeStr = CssCode;
CssCodeStr = "fofservercssbegin " + CssCodeStr;
CssCodeStr = CssCodeStr + " fofservercssbegin";
CssCodeStr = CssCodeStr.replaceAll("\r\n", " fofservercssbegin\r\nfofservercssbegin ");
let CssCodeStrOriginal = CssCodeStr;
let regCompilerCodeArr = [StrCodeUuid("\"" + RcCssCodeKeyword + "\""), "\"" + RcCssCodeKeyword + "\""];
let reg = new RegExp("[^0-9a-zA-Z\u4e00-\u9fa5_-]" + CssCodeKeyword + "(?=[^0-9a-zA-Z\u4e00-\u9fa5_-])", "g");
CssCodeStr = CssCodeStr.replaceHack(reg, regCompilerCodeArr[0]);
let CssCodeStrArr = CssCodeStrOriginal.match(reg);
if (CssCodeStrArr != undefined && CssCodeStrArr != null) {
if (CssCodeStrArr.length >= 1) {
for (let index = 0; index < CssCodeStrArr.length; index++) {
let FirstText = CssCodeStrArr[index].substring(0, 1);
CssCodeStr = CssCodeStr.replaceHack(regCompilerCodeArr[0], FirstText + regCompilerCodeArr[1]);
}
}
}
CssCodeStr = CssCodeStr.replaceAll(" fofservercssbegin\r\nfofservercssbegin ", "\r\n");
CssCodeStr = CssCodeStr.replaceAll("fofservercssbegin ", "");
CssCodeStr = CssCodeStr.replaceAll(" fofservercssbegin", "");
return CssCodeStr;
}