Skip to content
This repository has been archived by the owner on Oct 9, 2020. It is now read-only.

Commit

Permalink
support for files with spaces in them
Browse files Browse the repository at this point in the history
  • Loading branch information
arackaf committed Mar 29, 2016
1 parent 30bd17f commit 48bc668
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 26 deletions.
14 changes: 8 additions & 6 deletions lib/arithmetic.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,15 @@ function parseExpression(expressionString) {
var result = "";
//scan the identifier
for (; index < expressionString.length; index++) {
if (/\s/.test(expressionString.charAt(index))) {
var currentChar = expressionString.charAt(index);
//can have spaces in file names - so we need whitespace, operator, whitespace.
if (/^\s+[\+\-\&]\s+/.test(expressionString.substr(index))) {
return result;
} else {
result += expressionString.charAt(index);
result += currentChar;
}
}
return result;
return result.replace(/\s+$/, ''); //it appears as though trailing whitespace is trimmed downstream, but I'm snipping here to be safe
}

function getNextOperator() {
Expand Down Expand Up @@ -258,7 +260,7 @@ function expandAndCanonicalizeExpression(builder, expression){
expandPromise = expandPromise.then(function() {
return Promise.resolve(expandedTreePromise)
.then(function(expressionsOperations){
expandedOperations = expandedOperations.concat({ operator: operation.operator, operationsTree: expressionsOperations })
expandedOperations = expandedOperations.concat({ operator: operation.operator, operationsTree: expressionsOperations });
});
});
} else {
Expand Down Expand Up @@ -298,7 +300,7 @@ function intersectTrees(tree1, tree2) {
}

return intersectTree;
};
}

// returns a new tree containing tree1 + tree2
exports.addTrees = addTrees;
Expand Down Expand Up @@ -337,7 +339,7 @@ function subtractTrees(tree1, tree2) {
}

return subtractTree;
};
}

// pre-order tree traversal with a visitor and stop condition
exports.traverseTree = traverseTree;
Expand Down
73 changes: 53 additions & 20 deletions test/arithmetic.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ suite('Bundle Expressions', function() {
builder.trace('*.js - [amd-*] - [sfx-format-*]')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), [
'Buffer.js', 'amd.js', 'babel', 'cjs-1.js', 'cjs-2.js', 'cjs-3.js', 'cjs-4.js', 'cjs-5.js', 'cjs-globals.js', 'cjs-in-12.js', 'cjs-in-13.js',
'Buffer.js', 'amd.js', 'babel', 'cjs space.js', 'cjs-1.js', 'cjs-2.js', 'cjs-3.js', 'cjs-4.js', 'cjs-5.js', 'cjs-globals.js', 'cjs-in-12.js', 'cjs-in-13.js',
'cjs-resolve.js', 'cjs.js', 'component.jsx!jsx.js', 'file.json', 'first.js',
'global-inner.js', 'global-outer.js', 'global.js', 'jquery-cdn', 'jquery.js', 'json-plugin.js', 'jsx.js', 'plugin.js', 'runtime.js',
'second.js', 'some.js!plugin.js', 'text-plugin.js', 'text.txt!text-plugin.js', 'third.js', 'umd.js']);
Expand All @@ -61,14 +61,6 @@ suite('Bundle Expressions', function() {
.then(done, done);
});

test('cjs bundles added with parens', function(done){
builder.trace('(cjs-1.js & cjs-2.js) + (cjs-1.js & cjs-3.js)')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('cjs bundles added with parens and extra spaces', function(done){
builder.trace(' ( cjs-1.js & cjs-2.js ) + ( cjs-1.js & cjs-3.js)')
.then(function(tree) {
Expand All @@ -87,30 +79,38 @@ suite('Bundle Expressions', function() {
});

test('cjs bundles added with parens', function(done){
builder.trace('(cjs-1.js & cjs-2.js) + (cjs-1.js & cjs-3.js)')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('cjs bundles added with parens 2', function(done){
builder.trace('(cjs-1.js & cjs-2.js)')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js']);
})
.then(done, done);
});

test('cjs bundles added with parens', function(done){
test('cjs bundles added with parens 3', function(done){
builder.trace('(cjs-1.js & cjs-2.js) + cjs-in-13.js - cjs-in-13.js')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js']);
})
.then(done, done);
});

test('cjs bundles added with parens', function(done){
test('cjs bundles added with parens 4', function(done){
builder.trace('(cjs-1.js & cjs-2.js) + cjs-in-13.js - cjs-in-13.js')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js']);
})
.then(done, done);
});

test('cjs bundles added with parens', function(done){
test('cjs bundles added with parens 5', function(done){
builder.trace('cjs-in-13.js + (cjs-1.js & cjs-2.js) - cjs-in-13.js')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js']);
Expand All @@ -134,31 +134,31 @@ suite('Bundle Expressions', function() {
.then(done, done);
});

test('cjs bundles with nested parens 3', function(done){
test('cjs bundles with nested parens', function(done){
builder.trace('(cjs-1.js + cjs-2.js - ([cjs-1.js] + [cjs-2.js])) - (cjs-in-12.js)')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-13.js']);
})
.then(done, done);
});

test('cjs bundles with nested parens 4', function(done){
test('cjs bundles with nested parens 2', function(done){
builder.trace('(cjs-1.js + cjs-2.js - ([cjs-1.js] + [cjs-2.js])) - (cjs-in-12.js) + (cjs-4.js + cjs-5.js)')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-4.js', 'cjs-5.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('cjs bundles with nested parens 5', function(done){
test('cjs bundles with nested parens 3', function(done){
builder.trace('((cjs-1.js + cjs-2.js - ([cjs-1.js] + [cjs-2.js])) - (cjs-in-12.js) + (cjs-4.js + cjs-5.js)) - ([cjs-4.js] + [cjs-5.js])')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-13.js']);
})
.then(done, done);
});

test('cjs bundles with nested parens 5', function(done){
test('cjs bundles with nested parens 4', function(done){
builder.trace('((cjs-1.js + cjs-2.js - ([cjs-1.js] + [cjs-2.js] + ([cjs-4.js] + [cjs-5.js]))) - (cjs-4.js + cjs-5.js))')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), ['cjs-in-12.js', 'cjs-in-13.js']);
Expand Down Expand Up @@ -190,6 +190,43 @@ suite('Bundle Expressions', function() {
})
.then(done, done);
});

test('file with space', function(done){
builder.trace('cjs-1.js + cjs space.js')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), [
'cjs space.js', 'cjs-1.js', 'cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('file with space 2', function(done){
builder.trace('cjs-1.js + cjs space.js ')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), [
'cjs space.js', 'cjs-1.js', 'cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('file with space 3', function(done){
builder.trace('cjs-1.js + cjs space.js + cjs-2.js')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), [
'cjs space.js', 'cjs-1.js', 'cjs-2.js', 'cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

test('file with space 4', function(done){
builder.trace('cjs-1.js + cjs space.js + cjs-2.js ')
.then(function(tree) {
assert.deepEqual(Object.keys(tree).sort(), [
'cjs space.js', 'cjs-1.js', 'cjs-2.js', 'cjs-in-12.js', 'cjs-in-13.js']);
})
.then(done, done);
});

});

suite('Bundle Expression Validation', function() {
Expand Down Expand Up @@ -221,10 +258,6 @@ suite('Bundle Expression Validation', function() {
return validateInvalidExpression('(cjs-2.js + cjs-3.js) + (cjs-1.js + (cjs-2.js + cjs-3.js)');
});

test('missing operator 1', function(){
return validateInvalidExpression('cjs-1.js + cjs-2.js cjs-3.js');
});

function validateInvalidExpression(expression){
return Promise
.resolve()
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/test-tree/cjs space.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module.exports = { name: 'cjs space' };

0 comments on commit 48bc668

Please sign in to comment.