Skip to content

Commit d9e08d3

Browse files
committed
make length functions consistent with string trimming behavior
1 parent e45b08b commit d9e08d3

3 files changed

Lines changed: 18 additions & 9 deletions

File tree

index.es6

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export let library = {
1515
return library.regex(value, /^-?[0-9]+$/);
1616
},
1717
length: function(value, len) {
18-
return library.exists(value) && library.exists(value.length) && value.length === len;
18+
return library.exists(value) && library.exists(value.length) && (typeof(value) === 'string' ? value.trim() : value).length === len;
1919
},
2020
lessThan: function(value, baseline) {
2121
return library.required(value) && Number(value) < baseline;
@@ -24,13 +24,13 @@ export let library = {
2424
return library.required(value) && Number(value) <= baseline;
2525
},
2626
maxLength: function(value, len) {
27-
return library.exists(value) && library.exists(value.length) && value.length <= len;
27+
return library.exists(value) && library.exists(value.length) && (typeof(value) === 'string' ? value.trim() : value).length <= len;
2828
},
2929
min: function(value, baseline) {
3030
return library.required(value) && Number(value) >= baseline;
3131
},
3232
minLength: function(value, len) {
33-
return library.exists(value) && library.exists(value.length) && value.length >= len;
33+
return library.exists(value) && library.exists(value.length) && (typeof(value) === 'string' ? value.trim() : value).length >= len;
3434
},
3535
number: function(value) {
3636
return library.required(value) && !Number.isNaN(Number(value));

index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var library = exports.library = {
3434
return library.regex(value, /^-?[0-9]+$/);
3535
},
3636
length: function length(value, len) {
37-
return library.exists(value) && library.exists(value.length) && value.length === len;
37+
return library.exists(value) && library.exists(value.length) && (typeof value === 'string' ? value.trim() : value).length === len;
3838
},
3939
lessThan: function lessThan(value, baseline) {
4040
return library.required(value) && Number(value) < baseline;
@@ -43,13 +43,13 @@ var library = exports.library = {
4343
return library.required(value) && Number(value) <= baseline;
4444
},
4545
maxLength: function maxLength(value, len) {
46-
return library.exists(value) && library.exists(value.length) && value.length <= len;
46+
return library.exists(value) && library.exists(value.length) && (typeof value === 'string' ? value.trim() : value).length <= len;
4747
},
4848
min: function min(value, baseline) {
4949
return library.required(value) && Number(value) >= baseline;
5050
},
5151
minLength: function minLength(value, len) {
52-
return library.exists(value) && library.exists(value.length) && value.length >= len;
52+
return library.exists(value) && library.exists(value.length) && (typeof value === 'string' ? value.trim() : value).length >= len;
5353
},
5454
number: function number(value) {
5555
return library.required(value) && !Number.isNaN(Number(value));

test/test.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ describe('validation library', function() {
6262
it('gt', function() { assert.equal(false, lib.length('hello', 4)); });
6363
it('null', function() { assert.equal(false, lib.length(null, 100)); });
6464
it('no length', function() { assert.equal(false, lib.length({}, 100)); });
65-
it('array', function() { assert.equal(true, lib.length([1,2], 2)); });
65+
it('arraylt', function() { assert.equal(false, lib.length([1,2], 3)); });
66+
it('arrayeq', function() { assert.equal(true, lib.length([1,2], 2)); });
67+
it('arraygt', function() { assert.equal(false, lib.length([1,2], 1)); });
68+
it('trims', function() { assert.equal(true, lib.length(' hello ', 5)); });
6669
});
6770
describe('lessThan', function() {
6871
it('lt', function() { assert.equal(true, lib.lessThan('5', 6)); });
@@ -92,7 +95,10 @@ describe('validation library', function() {
9295
it('gt', function() { assert.equal(false, lib.maxLength('hello', 4)); });
9396
it('null', function() { assert.equal(false, lib.maxLength(null, 100)); });
9497
it('no length', function() { assert.equal(false, lib.maxLength({}, 100)); });
95-
it('array', function() { assert.equal(true, lib.maxLength([1,2], 3)); });
98+
it('arraylt', function() { assert.equal(true, lib.maxLength([1,2], 3)); });
99+
it('arrayeq', function() { assert.equal(true, lib.maxLength([1,2], 2)); });
100+
it('arraygt', function() { assert.equal(false, lib.maxLength([1,2], 1)); });
101+
it('trims', function() { assert.equal(true, lib.maxLength(' hello ', 6)); });
96102
});
97103
describe('min', function() {
98104
it('lt', function() { assert.equal(false, lib.min('5', 6)); });
@@ -111,7 +117,10 @@ describe('validation library', function() {
111117
it('gt', function() { assert.equal(true, lib.minLength('hello', 4)); });
112118
it('null', function() { assert.equal(false, lib.minLength(null, 0)); });
113119
it('no length', function() { assert.equal(false, lib.minLength({}, 0)); });
114-
it('array', function() { assert.equal(true, lib.minLength([1,2], 1)); });
120+
it('arraylt', function() { assert.equal(false, lib.minLength([1,2], 3)); });
121+
it('arrayeq', function() { assert.equal(true, lib.minLength([1,2], 2)); });
122+
it('arraygt', function() { assert.equal(true, lib.minLength([1,2], 1)); });
123+
it('trims', function() { assert.equal(false, lib.minLength(' hello ', 6)); });
115124
});
116125
describe('number', function() {
117126
it('01234567899876543210', function() {

0 commit comments

Comments
 (0)