Skip to content

Commit

Permalink
Merge pull request #761 from piuccio/utils_clean
Browse files Browse the repository at this point in the history
Fix indentation in clean utility

* piuccio/utils_clean:
  Fix indentation in clean utility

Conflicts:
	lib/utils.js
  • Loading branch information
travisjeffery committed Dec 7, 2013
2 parents 3a1693b + 2bbc1bb commit 3135fd4
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,13 @@ exports.slug = function(str){

exports.clean = function(str) {
str = str
.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/^\uFEFF/, '')
.replace(/^function *\(.*\) *{/, '')
.replace(/\s+\}$/, '');

var whitespace = str.match(/^\n?(\s*)/)[1]
, re = new RegExp('^' + whitespace, 'gm');
var spaces = str.match(/^\n?( *)/)[1].length
, tabs = str.match(/^\n?(\t*)/)[1].length
, re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm');

str = str.replace(re, '');

Expand Down
59 changes: 59 additions & 0 deletions test/acceptance/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
var utils = require('../../lib/utils');

describe('lib/utils', function () {
describe('clean', function () {
it("should format a single line test function", function () {
var fn = [
"function () {"
, " var a = 1;"
, "}"
].join("\n");
utils.clean(fn).should.equal("var a = 1;");
});

it("should format a multi line test indented with spaces", function () {
// and no new lines after curly braces, shouldn't matter
var fn = [
"function(){ var a = 1;"
, " var b = 2;" // this one has more spaces
, " var c = 3; }"
].join("\n");
utils.clean(fn).should.equal("var a = 1;\n var b = 2;\nvar c = 3;");
});

it("should format a multi line test indented with tabs", function () {
var fn = [
"function (arg1, arg2) {"
, "\tif (true) {"
, "\t\tvar a = 1;"
, "\t}"
, "}"
].join("\n");
utils.clean(fn).should.equal("if (true) {\n\tvar a = 1;\n}");
});

it("should format functions saved in windows style - spaces", function () {
var fn = [
"function (one) {"
, " do {",
, ' "nothing";',
, " } while (false);"
, ' }'
].join("\r\n");
utils.clean(fn).should.equal('do {\n "nothing";\n} while (false);');
});

it("should format functions saved in windows style - tabs", function () {
var fn = [
"function ( ) {"
, "\tif (false) {"
, "\t\tvar json = {"
, '\t\t\tone : 1'
, '\t\t};'
, "\t}"
, "}"
].join("\r\n");
utils.clean(fn).should.equal("if (false) {\n\tvar json = {\n\t\tone : 1\n\t};\n}");
});
});
});

0 comments on commit 3135fd4

Please sign in to comment.