Skip to content

Commit

Permalink
1.0.0 new shortcut for max-width in px
Browse files Browse the repository at this point in the history
  • Loading branch information
dimitrinicolas committed Jan 30, 2018
1 parent dc1a5e6 commit 14a4791
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 77 deletions.
61 changes: 33 additions & 28 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,57 @@
"use strict";

var postcss = require("postcss");
var glob = require("glob")
var valueParser = require("postcss-value-parser");
var postcss = require('postcss');
var glob = require('glob');
var valueParser = require('postcss-value-parser');


function parse(nodes) {

var base = "";
var base = '';
var querys = [];

for (var i = 0; i < nodes.length; i++) {

var node = nodes[i];

if (node.type == "function" && node.value === "@") {
if (node.type == 'function' && node.value === '@') {
querys[querys.length] = {
media: "(",
value: ""
media: '(',
value: ''
};
querys[querys.length - 1].media = "(";
querys[querys.length - 1].media = '(';
for (var j = 0; j < node.nodes.length; j++) {
var item = node.nodes[j];
if (item.type == "function") {
if (item.type == 'function') {
querys[querys.length - 1].media += valueParser.stringify(item);
} else {
querys[querys.length - 1].media += item.value;
}
}
querys[querys.length - 1].media += ")";
querys[querys.length - 1].media += ')';
}
else if (node.type == "word" && /^@/gi.test(node.value)) {
else if (node.type == 'word' && /^@/gi.test(node.value)) {
querys[querys.length] = {
media: "(",
value: ""
media: '(',
value: ''
};
querys[querys.length - 1].media = "$" + node.value.replace(/^@/gi, "");
var media = node.value.replace(/^@/gi, '');
if (parseInt(media) != media) {
media = '$' + media;
}
else {
media = '(max-width: ' + media + 'px)';
}
querys[querys.length - 1].media = media;
}
else if (querys.length > 0) {
if (node.type == "function") {
if (node.type == 'function') {
querys[querys.length - 1].value += valueParser.stringify(node);
} else {
querys[querys.length - 1].value += node.value;
}
}

if (querys.length < 1) {
if (node.type == "function") {
if (node.type == 'function') {
base += valueParser.stringify(node);
} else {
base += node.value;
Expand All @@ -62,11 +67,11 @@ function parse(nodes) {

}

module.exports = postcss.plugin("responsive", function() {
module.exports = postcss.plugin('responsive', function() {
return function (css, result) {

css.walk(function(rule) {
if (rule.type == "decl") {
if (rule.type == 'decl') {

var root = rule.root(),
value = rule.value;
Expand All @@ -77,10 +82,10 @@ module.exports = postcss.plugin("responsive", function() {

var content = parse(parsed.nodes);

if (content.base.replace(/ /gi, "") !== "") {
if (content.base.replace(/ /gi, '') !== '') {
rule.parent.insertBefore(rule, {
prop: rule.prop,
value: content.base.replace(/\s\s+|^ | $/g, "")
value: content.base.replace(/\s\s+|^ | $/g, '')
});
}

Expand All @@ -89,25 +94,25 @@ module.exports = postcss.plugin("responsive", function() {
var q = content.querys[i];
var media = q.media;

var color = media.indexOf(":") > -1;
var parenthesis = media.replace(/^\(/gi, "").indexOf("(") > -1;
var color = media.indexOf(':') > -1;
var parenthesis = media.replace(/^\(/gi, '').indexOf('(') > -1;

if ((color && parenthesis) || (!color && !parenthesis)) {
media = media.replace(/^\(/gi, "").replace(/\)$/gi, "");
media = media.replace(/^\(/gi, '').replace(/\)$/gi, '');
}

media = media.replace(/ or /gi, ",");
media = media.replace(/ or /gi, ',');

var atRule = postcss.atRule({
name: "media",
name: 'media',
params: media
});
var mediaRule = postcss.rule({
selector: rule.parent.selector,
});
mediaRule.append({
prop: rule.prop,
value: q.value.replace(/\s\s+|^\s|\s$/g, "")
value: q.value.replace(/\s\s+|^\s|\s$/g, '')
});
atRule.append(mediaRule);
root.append(atRule);
Expand Down
119 changes: 103 additions & 16 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 5 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
{
"name": "postcss-inline-media",
"version": "0.0.2",
"version": "1.0.0",
"description": "Media queries shortcut on PostCSS",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dimitrinicolas/postcss-inline-media.git"
Expand All @@ -21,8 +18,8 @@
"author": "Dimitri NICOLAS",
"maintainers": [
{
"name": "Dimitri NICOLAS <dimitri@pulseheberg.com>",
"email": "dimitri@pulseheberg.com"
"name": "Dimitri NICOLAS <dimitri@fivecorp.fr>",
"email": "dimitri@fivecorp.fr"
}
],
"license": "MIT",
Expand All @@ -31,7 +28,8 @@
},
"homepage": "https://github.com/dimitrinicolas/postcss-inline-media#readme",
"dependencies": {
"postcss": "^6.0.13",
"glob": "^7.1.2",
"postcss": "^6.0.16",
"postcss-value-parser": "^3.3.0"
}
}
Loading

0 comments on commit 14a4791

Please sign in to comment.