aboutsummaryrefslogtreecommitdiff
path: root/node_modules/postcss-minify-font-values/lib/minify-font.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-minify-font-values/lib/minify-font.js')
-rw-r--r--node_modules/postcss-minify-font-values/lib/minify-font.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/node_modules/postcss-minify-font-values/lib/minify-font.js b/node_modules/postcss-minify-font-values/lib/minify-font.js
new file mode 100644
index 00000000..3287fd64
--- /dev/null
+++ b/node_modules/postcss-minify-font-values/lib/minify-font.js
@@ -0,0 +1,50 @@
+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;
+};