44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function (insertRule) {
|
|
var delimiter = '/*|*/';
|
|
var needle = delimiter + '}';
|
|
|
|
function toSheet (block) {
|
|
if (block)
|
|
try {
|
|
insertRule(block + '}');
|
|
} catch (e) {
|
|
// eslint-disable-next-line
|
|
};
|
|
}
|
|
|
|
return function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {
|
|
switch (context) {
|
|
// property
|
|
case 1:
|
|
// @import
|
|
if (depth === 0 && content.charCodeAt(0) === 64)
|
|
return insertRule(content+';'), '';
|
|
break;
|
|
// selector
|
|
case 2:
|
|
if (ns === 0)
|
|
return content + delimiter;
|
|
break;
|
|
// at-rule
|
|
case 3:
|
|
switch (ns) {
|
|
// @font-face, @page
|
|
case 102:
|
|
case 112:
|
|
return insertRule(selectors[0]+content), '';
|
|
default:
|
|
return content + (at === 0 ? delimiter : '');
|
|
}
|
|
case -2:
|
|
content.split(needle).forEach(toSheet);
|
|
}
|
|
};
|
|
};
|