1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/javaup-CSLF

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CCLF.js 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
javaup Отправлено 09.10.2017 06:53 c173ad9
+function(){
window["CCLF"]={};
window["CCLF"]["init"] = init;
var Ajax={
get: function(url, fn) {
var obj = new XMLHttpRequest();
obj.open('GET', url, true);
obj.onreadystatechange = function() {
if (obj.readyState == 4 && obj.status == 200 || obj.status == 304) {
fn.call(this, obj.responseText);
}
};
obj.send();
},
post: function (url, data, fn) {
var obj = new XMLHttpRequest();
obj.open("POST", url, true);
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
obj.onreadystatechange = function() {
if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) {
fn.call(this, obj.responseText);
}
};
obj.send(data);
}
}
function init(u){
Ajax.get(u,function(a){
parseCSS(a);
CSSRender();
});
}
var CSSS = [];
var _NODE = document.all;
function parseCSS(a){
var param = "";
//参数正则
var pe = new RegExp(/\(.+?\)/, 'ig');
//主体正则
var re = new RegExp(/\..+?\{[\s\S]+?\}/, 'ig');
//函数名正则
var ne = new RegExp(/\..+?[\{|\)]/, 'ig');
var r = a.match(re);
for(var j = 0 ; j < r.length ; j++){
var CSS = {};
//表达式正则
re = new RegExp(/[^\{;].+?;/, 'ig');
var items = r[j].match(re);
var name = r[j].match(ne)[0];
if(name.indexOf("{") > 0){
name = name.substring(1,name.length-1);
}
if(name.indexOf(")") > 0){
name = name.substring(1,name.lastIndexOf("("));
}
var p = r[j].match(pe);
if(p){
param = p[0];
param = param.substring(1,param.length-1);
param = param.split(",");
CSS["PARAM"] = param;
}
CSS["NAME"] = name;
CSS["STYLE"] = [];
for(var i = 0 ; i < items.length ; i++){
var INLINE = {};
var t = items[i].split(":")[0];
var v = items[i].split(":")[1];
INLINE["T"] = getInnerText(t);
INLINE["V"] = getInnerText(v);
CSS["STYLE"].push(INLINE);
}
CSSS.push(CSS);
}
console.log(CSSS);
}
function CSSRender(){
for(var i = 0 ; i < _NODE.length ; i++){
var clazz = _NODE[i].getAttribute("_class");
if(clazz == null || clazz.length <= 0){continue;}
var cfuns = cssFunParser(clazz);
for(var c = 0 ; c < cfuns.length ; c++){
var name = cfuns[c].substring(0,cfuns[c].lastIndexOf("("));
for(var j = 0 ; j < CSSS.length ; j++){
if(CSSS[j]["NAME"] == name){
var p = cfuns[c].substring(cfuns[c].indexOf("(")+1,cfuns[c].lastIndexOf(")"));
p = p.split(",");
var _p = CSSS[j]["PARAM"];
var _pk = {};
for(var k = 0 ; k < _p.length ; k++){
_pk[_p[k]] = p[k];
}
var _style = CSSS[j]["STYLE"];
var _ins = _NODE[i].getAttribute("style")==null?"":_NODE[i].getAttribute("style");
for(var k = 0 ; k < _style.length ; k++){
var _hp = false;
for(var z = 0 ; z < _p.length ; z++){
if(_style[k]["V"].indexOf("["+_p[z]+"]") >= 0){
if(!_ins.endWith(';') && _ins.length > 0){
_ins += ";";
}
_ins += _style[k]["T"] + ":" + _style[k]["V"].replace("["+_p[z]+"]",_pk[_p[z]]);
_hp = true;
}
}
if(!_hp){
_ins += _style[k]["T"] + ":" + _style[k]["V"];
}
console.log(_ins)
}
_NODE[i].setAttribute("style",_ins);
}
}
}
}
}
function cssFunParser(s){
var r = [];
var sa = s.split('');
var t = '';
for(var i = 0 ; i < sa.length ; i++){
if(t.indexOf('(') > 0 && sa[i] == ')'){
t += sa[i];
r.push(t);
t = '';
continue;
}
if(t.indexOf('(') < 0 && sa[i] == ' '){
r.push(t);
t = '';
continue;
}
if(i == sa.length - 1){
t += sa[i];
r.push(t);
}
t += sa[i];
}
return r;
}
function isCFun(fn){
return fn.indexOf('(') >=0 ? 1 : 0;
}
function getInnerText(testStr) {
var resultStr = testStr.replace(/\ +/g, "");
resultStr = testStr.replace(/\s+/g, "");
resultStr = testStr.replace(/[\r\n]/g, "");
return resultStr;
}
String.prototype.endWith = function(str){
var reg = new RegExp(str+"$");
return reg.test(this);
}
}();

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/javaup-CSLF.git
git@api.gitlife.ru:oschina-mirror/javaup-CSLF.git
oschina-mirror
javaup-CSLF
javaup-CSLF
master