fz-css-parser
Version:
174 lines (153 loc) • 5.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var hasMediaQuery = function hasMediaQuery(str) {
return hasValue(str, '@media');
};
var hasOpenCurly = function hasOpenCurly(str) {
return hasValue(str, '{');
};
var hasCloseCurly = function hasCloseCurly(str) {
return hasValue(str, '}');
};
var parseStyle = function parseStyle(styleStr) {
var styles = styleStr.split(';');
var styleObj = {};
styles.forEach(function (style) {
var _style$split = style.split(':'),
_style$split2 = _slicedToArray(_style$split, 2),
key = _style$split2[0],
value = _style$split2[1];
styleObj[key] = value;
});
return styleObj;
};
var isStyle = function isStyle(str) {
if (str) {
return str.startsWith('.') ? true : str.startsWith('#') ? true : false;
}
return;
};
var hasValue = function hasValue(str, key) {
return str.indexOf(key) === -1 ? false : true;
};
var getSelector = function getSelector(str) {
if (str) {
if (str.startsWith('::')) {
return [undefined, str];
}
}
var regex = /[:.+ ]/;
var substr = str;
var index = 0;
if (isStyle(str)) {
substr = str.substring(1, str.length);
index = 1;
}
var splitChar = substr.match(regex) && substr.match(regex)[0];
if (splitChar) {
var styleParts = substr.split(splitChar);
var className = styleParts.splice(0, 1);
var selector = styleParts.join(splitChar);
return [str.substring(0, index) + className, splitChar + selector];
}
return [str];
};
var updateObj = function updateObj(obj, key, value) {
if (obj[key]) {
var oldValue = JSON.parse(JSON.stringify(obj[key]));
var newVale = JSON.parse(JSON.stringify(value));
oldValue = Object.assign(oldValue, newVale);
obj[key] = oldValue;
} else {
if (key.replace(/\s+/, '') !== '') {
value = JSON.parse(JSON.stringify(value));
obj[key] = value;
}
}
return obj;
};
var updateCss = function updateCss(object, key, style) {
var isMedia = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var parseSelector = arguments[4];
if (parseSelector) {
var _getSelector = getSelector(key),
_getSelector2 = _slicedToArray(_getSelector, 2),
cName = _getSelector2[0],
selector = _getSelector2[1];
if (!isStyle(cName) && !isMedia) {
var obj = object['__common_'];
if (selector && cName) {
obj = updateSelectors(obj, cName, selector, style);
} else if (!cName && selector) {
obj = updateObj(obj, selector, style);
} else {
obj = updateObj(obj, cName, style);
}
} else {
if (selector && cName) {
object = updateSelectors(object, cName, selector, style);
} else {
if (key.replace(/\s+/, '') !== '') {
object = updateObj(object, key, style);
}
}
}
} else {
if (key.replace(/\s+/, '') !== '') {
object = updateObj(object, key, style);
}
}
return object;
};
var updateSelectors = function updateSelectors(obj, cName, selector, style) {
obj[cName] = obj[cName] ? obj[cName] : {};
obj[cName]['__selectors'] = obj[cName]['__selectors'] ? obj[cName]['__selectors'] : {};
var tempObj = obj[cName]['__selectors'];
obj[cName]['__selectors'] = updateObj(tempObj, selector, style);
return obj;
};
var isUnwantedLine = function isUnwantedLine(line) {
if (line.startsWith('@charset')) {
return true;
}
return false;
};
var hasKeyFrame = function hasKeyFrame(line) {
if (!line.startsWith('@')) {
return false;
}
return hasValue(line, 'keyframes');
};
var isObject = function isObject(data) {
return data && data.toString() === '[object Object]' ? true : false;
};
var isString = function isString(data) {
return data && typeof data === 'string' ? true : false;
};
var classNameFilter = function classNameFilter(data) {
var pieces = data.split('-');
var str = pieces.splice(0, 1)[0];
pieces.forEach(function (piece) {
if (piece !== '') {
str += piece[0].toUpperCase() + piece.substr(1);
}
});
return str;
};
exports.classNameFilter = classNameFilter;
exports.isString = isString;
exports.isObject = isObject;
exports.hasMediaQuery = hasMediaQuery;
exports.hasOpenCurly = hasOpenCurly;
exports.hasCloseCurly = hasCloseCurly;
exports.parseStyle = parseStyle;
exports.isStyle = isStyle;
exports.getSelector = getSelector;
exports.updateObj = updateObj;
exports.updateCss = updateCss;
exports.updateSelectors = updateSelectors;
exports.isUnwantedLine = isUnwantedLine;
exports.hasKeyFrame = hasKeyFrame;