Compare commits

...

13 commits

Author SHA1 Message Date
Rafael Caricio 92b6e8011e
Merge pull request #15 from itaigilo-inv/support-more-directions
Support more directions
2021-07-21 15:34:54 +02:00
Itai Gilo a3494b3421 Add tests 2021-07-20 15:45:38 +03:00
Itai Gilo 330ffa92cd Support more directions 2021-07-20 15:35:29 +03:00
Rafael Caricio cce801d1df
Bump version 1.0.2 2021-03-15 14:53:53 +01:00
Rafael Caricio eff630c873
Fix declaration of result 2021-03-15 14:52:59 +01:00
Rafael Caricio c4ba2836b6
Tag version 1.0.1 2021-02-20 13:51:29 +01:00
Rafael Caricio 015088b929
Merge pull request #12 from pixelspark/master
Fix issue "undefined variable result" in built scripts as well
2021-02-20 13:45:33 +01:00
Tommy van der Vorst 4bfe95a98f Fix issue "undefined variable result" in built scripts as well 2021-02-01 11:21:42 +01:00
Rafael Caricio 04708dcb45
Bump version to 1.0.0 2021-01-20 13:46:46 +01:00
Rafael Caricio 2720da021f
Merge pull request #11 from ilyalesik/define-result
Define result variable
2021-01-19 17:13:26 +01:00
Ilia Lesik 12648a2a28 Define result variable 2019-12-25 16:05:34 +03:00
Rafael Caricio 4b49f43244 Merge pull request #5 from rafaelcaricio/fixes-4
Fails when radial-gradient shape is omitted but a size is provided
2016-01-10 13:26:56 +01:00
Rafael Caricio d0e6c24616 Fails when radial-gradient shape is omitted but a size is provided 2016-01-10 13:25:58 +01:00
10 changed files with 11095 additions and 33 deletions

View file

@ -1,2 +1,5 @@
all:
python -m SimpleHTTPServer 3000
test:
grunt

View file

@ -1,6 +1,6 @@
{
"name": "gradient-parser",
"version": "0.2.0",
"version": "1.0.0",
"main": "build/web.js",
"ignore": [
".editorconfig",

View file

@ -60,7 +60,14 @@ GradientParser.stringify = (function() {
},
'visit_extent-keyword': function(node) {
return node.value;
var result = node.value,
at = visitor.visit(node.at);
if (at) {
result += ' at ' + at;
}
return result;
},
'visit_position-keyword': function(node) {
@ -135,6 +142,7 @@ GradientParser.stringify = (function() {
if (!element) {
return '';
}
var result = '';
if (element instanceof Array) {
return visitor.visit_array(element, result);
@ -257,7 +265,7 @@ GradientParser.parse = (function() {
error('Missing (');
}
result = callback(captures);
var result = callback(captures);
if (!scan(tokens.endCall)) {
error('Missing )');
@ -310,12 +318,21 @@ GradientParser.parse = (function() {
if (radialType) {
radialType.at = matchAtPosition();
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
var extent = matchExtentKeyword();
if (extent) {
radialType = extent;
var positionAt = matchAtPosition();
if (positionAt) {
radialType.at = positionAt;
}
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
}
}
}

View file

@ -100,7 +100,7 @@ GradientParser.parse = (function() {
error('Missing (');
}
result = callback(captures);
var result = callback(captures);
if (!scan(tokens.endCall)) {
error('Missing )');
@ -153,12 +153,21 @@ GradientParser.parse = (function() {
if (radialType) {
radialType.at = matchAtPosition();
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
var extent = matchExtentKeyword();
if (extent) {
radialType = extent;
var positionAt = matchAtPosition();
if (positionAt) {
radialType.at = positionAt;
}
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
}
}
}
@ -400,7 +409,14 @@ GradientParser.stringify = (function() {
},
'visit_extent-keyword': function(node) {
return node.value;
var result = node.value,
at = visitor.visit(node.at);
if (at) {
result += ' at ' + at;
}
return result;
},
'visit_position-keyword': function(node) {
@ -475,6 +491,7 @@ GradientParser.stringify = (function() {
if (!element) {
return '';
}
var result = '';
if (element instanceof Array) {
return visitor.visit_array(element, result);

View file

@ -11,7 +11,7 @@ GradientParser.parse = (function() {
repeatingLinearGradient: /^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,
radialGradient: /^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,
repeatingRadialGradient: /^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,
sideOrCorner: /^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,
sideOrCorner: /^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,
extentKeywords: /^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,
positionKeywords: /^(left|center|right|top|bottom)/i,
pixelValue: /^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,
@ -98,7 +98,7 @@ GradientParser.parse = (function() {
error('Missing (');
}
result = callback(captures);
var result = callback(captures);
if (!scan(tokens.endCall)) {
error('Missing )');
@ -151,12 +151,21 @@ GradientParser.parse = (function() {
if (radialType) {
radialType.at = matchAtPosition();
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
var extent = matchExtentKeyword();
if (extent) {
radialType = extent;
var positionAt = matchAtPosition();
if (positionAt) {
radialType.at = positionAt;
}
} else {
var defaultPosition = matchPositioning();
if (defaultPosition) {
radialType = {
type: 'default-radial',
at: defaultPosition
};
}
}
}

View file

@ -60,7 +60,14 @@ GradientParser.stringify = (function() {
},
'visit_extent-keyword': function(node) {
return node.value;
var result = node.value,
at = visitor.visit(node.at);
if (at) {
result += ' at ' + at;
}
return result;
},
'visit_position-keyword': function(node) {
@ -135,6 +142,7 @@ GradientParser.stringify = (function() {
if (!element) {
return '';
}
var result = '';
if (element instanceof Array) {
return visitor.visit_array(element, result);

10999
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "gradient-parser",
"version": "0.2.0",
"version": "1.0.2",
"description": "Parse CSS3 gradient definitions and return an AST.",
"author": {
"name": "Rafael Carcicio",
@ -32,8 +32,8 @@
"css3",
"parser"
],
"dependencies": {},
"devDependencies": {
"expect.js": "*",
"grunt": "*",
"grunt-browserify": "^3.0.1",
"grunt-complexity": "*",

View file

@ -1,7 +1,7 @@
'use strict';
var expect = require('expect.js');
var gradients = require('build/node');
var gradients = require('../build/node');
describe('lib/parser.js', function () {
@ -134,7 +134,11 @@ describe('lib/parser.js', function () {
describe('parse all linear directional', function() {
[
{type: 'angular', unparsedValue: '-145deg', value: '-145'},
{type: 'directional', unparsedValue: 'to left top', value: 'left top'}
{type: 'directional', unparsedValue: 'to left top', value: 'left top'},
{type: 'directional', unparsedValue: 'to top left', value: 'top left'},
{type: 'directional', unparsedValue: 'to top right', value: 'top right'},
{type: 'directional', unparsedValue: 'to bottom left', value: 'bottom left'},
{type: 'directional', unparsedValue: 'to bottom right', value: 'bottom right'}
].forEach(function(orientation) {
describe('parse orientation ' + orientation.type, function() {
beforeEach(function() {
@ -197,7 +201,10 @@ describe('lib/parser.js', function () {
'ellipse cover',
'circle cover',
'center bottom, ellipse cover',
'circle at 87.23px -58.3px'
'circle at 87.23px -58.3px',
'farthest-side, red, blue',
'farthest-corner, red, blue',
'farthest-corner at 87.23px -58.3px, red, blue'
].forEach(function(declaration) {
it('should parse ' + declaration + ' declaration', function() {

View file

@ -1,7 +1,7 @@
'use strict';
var expect = require('expect.js');
var gradients = require('build/node');
var gradients = require('../build/node');
function pprint(ast) {
console.log(JSON.stringify(ast, true, 2));
@ -79,7 +79,9 @@ describe('lib/stringify.js', function () {
'ellipse cover',
'circle cover',
'center bottom, ellipse cover',
'circle at 87.23px -58.3px'
'circle at 87.23px -58.3px',
'farthest-corner, red, blue',
'farthest-corner at 87.23px -58.3px, red, blue'
].forEach(function(declaration) {
it('should parse ' + declaration + ' declaration', function() {