1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- var unit = require('postcss-value-parser').unit;
- var keywords = require('./keywords');
- var minifyFamily = require('./minify-family');
- var minifyWeight = require('./minify-weight');
- module.exports = function (nodes, opts) {
- var i, max, node, familyStart, family;
- var hasSize = false;
- for (i = 0, max = nodes.length; i < max; i += 1) {
- node = nodes[i];
- if (node.type === 'word') {
- if (node.value === 'normal' ||
- ~keywords.style.indexOf(node.value) ||
- ~keywords.variant.indexOf(node.value) ||
- ~keywords.stretch.indexOf(node.value)) {
- if (!hasSize) {
- familyStart = i;
- }
- } else if (~keywords.weight.indexOf(node.value)) {
- if (!hasSize) {
- node.value = minifyWeight(node.value, opts);
- familyStart = i;
- }
- } else if (~keywords.size.indexOf(node.value) || unit(node.value)) {
- if (!hasSize) {
- familyStart = i;
- hasSize = true;
- }
- }
- } else if (node.type === 'div') {
- node.before = '';
- node.after = '';
- if (node.value === '/') {
- familyStart = i + 1;
- }
- break;
- } else if (node.type === 'space') {
- node.value = ' ';
- }
- }
- if (!isNaN(familyStart)) {
- familyStart += 2;
- family = minifyFamily(nodes.slice(familyStart), opts);
- nodes = nodes.slice(0, familyStart).concat(family);
- }
- return nodes;
- };
|