Skip to content

Commit

Permalink
[Issue-136] Fix delimiter matching issue
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Jul 2, 2017
1 parent a72dcfa commit 5c6e92e
Show file tree
Hide file tree
Showing 11 changed files with 107 additions and 16 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"form",
"input"
],
"version": "0.7.22",
"version": "0.7.23",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
10 changes: 8 additions & 2 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -812,17 +812,23 @@ return /******/ (function(modules) { // webpackBootstrap
});
},

getDelimiterREByDelimiter: function (delimiter) {
return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g');
},

stripDelimiters: function (value, delimiter, delimiters) {
var owner = this;

// single delimiter
if (delimiters.length === 0) {
var delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';

return value.replace(delimiterRE, '');
}

// multiple delimiters
delimiters.forEach(function (current) {
value = value.replace(new RegExp('\\' + current, 'g'), '');
value = value.replace(owner.getDelimiterREByDelimiter(current), '');
});

return value;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-angular.min.js

Large diffs are not rendered by default.

10 changes: 8 additions & 2 deletions dist/cleave-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -1963,17 +1963,23 @@ return /******/ (function(modules) { // webpackBootstrap
});
},

getDelimiterREByDelimiter: function getDelimiterREByDelimiter(delimiter) {
return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g');
},

stripDelimiters: function stripDelimiters(value, delimiter, delimiters) {
var owner = this;

// single delimiter
if (delimiters.length === 0) {
var delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';

return value.replace(delimiterRE, '');
}

// multiple delimiters
delimiters.forEach(function (current) {
value = value.replace(new RegExp('\\' + current, 'g'), '');
value = value.replace(owner.getDelimiterREByDelimiter(current), '');
});

return value;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-react.min.js

Large diffs are not rendered by default.

10 changes: 8 additions & 2 deletions dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -812,17 +812,23 @@ return /******/ (function(modules) { // webpackBootstrap
});
},

getDelimiterREByDelimiter: function (delimiter) {
return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g');
},

stripDelimiters: function (value, delimiter, delimiters) {
var owner = this;

// single delimiter
if (delimiters.length === 0) {
var delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';

return value.replace(delimiterRE, '');
}

// multiple delimiters
delimiters.forEach(function (current) {
value = value.replace(new RegExp('\\' + current, 'g'), '');
value = value.replace(owner.getDelimiterREByDelimiter(current), '');
});

return value;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"form",
"input"
],
"version": "0.7.22",
"version": "0.7.23",
"author": {
"name": "Max Huang",
"url": "http://github.com/nosir",
Expand Down
10 changes: 8 additions & 2 deletions src/utils/Util.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,23 @@ var Util = {
});
},

getDelimiterREByDelimiter: function (delimiter) {
return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g');
},

stripDelimiters: function (value, delimiter, delimiters) {
var owner = this;

// single delimiter
if (delimiters.length === 0) {
var delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';

return value.replace(delimiterRE, '');
}

// multiple delimiters
delimiters.forEach(function (current) {
value = value.replace(new RegExp('\\' + current, 'g'), '');
value = value.replace(owner.getDelimiterREByDelimiter(current), '');
});

return value;
Expand Down
53 changes: 53 additions & 0 deletions test/fixtures/util.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"stripDelimiters": [
{
"params": [
"12-3",
"-",
[]
],
"expected": "123"
},
{
"params": [
"1203",
"0",
[]
],
"expected": "123"
},
{
"params": [
"1273",
"7",
[]
],
"expected": "123"
},
{
"params": [
"12-45 78|0",
"",
[
"-",
" ",
"|"
]
],
"expected": "1245780"
},
{
"params": [
"123456789",
"",
[
"3",
"5",
"7",
"9"
]
],
"expected": "12468"
}
]
}
14 changes: 14 additions & 0 deletions test/unit/Util_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
var _ = require('underscore');
var Util = require('../../src/utils/Util');
var json = require('../fixtures/util.json');

describe('Util', function () {
describe('stripDelimiters:', function () {
_.each(json.stripDelimiters, function (data) {
var params = data.params;
it('should strip delimiter for: ' + params[0] + ' to: ' + data.expected, function () {
Util.stripDelimiters(params[0], params[1], params[2]).should.eql(data.expected);
});
});
});
});

0 comments on commit 5c6e92e

Please sign in to comment.