25 lines
905 B
JavaScript
25 lines
905 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const RX_NAMESPACE = /\s*(@namespace\s+(?:\S+\s+)?url\(http:\/\/.*?\);)\s*/g;
|
||
|
const RX_CHARSET = /\s*@charset\s+(['"]).*?\1\s*;\s*/g;
|
||
|
const RX_CSS_COMMENTS = /\/\*[\s\S]*?(?:\*\/|$)/g;
|
||
|
|
||
|
function styleCodeEmpty(code) {
|
||
|
// Collect the global section if it's not empty, not comment-only, not namespace-only.
|
||
|
const cmtOpen = code && code.indexOf('/*');
|
||
|
if (cmtOpen >= 0) {
|
||
|
const cmtCloseLast = code.lastIndexOf('*/');
|
||
|
if (cmtCloseLast < 0) {
|
||
|
code = code.substr(0, cmtOpen);
|
||
|
} else {
|
||
|
code = code.substr(0, cmtOpen) +
|
||
|
code.substring(cmtOpen, cmtCloseLast + 2).replace(RX_CSS_COMMENTS, '') +
|
||
|
code.substr(cmtCloseLast + 2);
|
||
|
}
|
||
|
}
|
||
|
if (!code || !code.trim()) return true;
|
||
|
if (code.includes('@namespace')) code = code.replace(RX_NAMESPACE, '').trim();
|
||
|
if (code.includes('@charset')) code = code.replace(RX_CHARSET, '').trim();
|
||
|
return !code;
|
||
|
}
|