Skip to content

Commit

Permalink
- Update angular-payments module to be able to be grunt-uglified with…
Browse files Browse the repository at this point in the history
…out issue (make sure used variables and functions are defined with var)

- This addresses open issue laurihy#86 (laurihy#86). Code now works with "use strict".
- Added missing semi-colons in function definitions
- Incremented version in bower.json
  • Loading branch information
Matt David committed Sep 2, 2015
1 parent 9643191 commit 4d1792f
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 103 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "angular-payments",
"version": "0.1.1",
"version": "0.1.2",
"homepage": "https://github.com/laurihy/angular-payments",
"authors": [
"Lauri Hynynen <@laurihy>"
Expand Down
97 changes: 47 additions & 50 deletions lib/angular-payments.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
ret['parseExpiry'] = function(value){
var month, prefix, year, _ref;

value = value || ''
value = value || '';

value = value.replace(/\s/g, '');
_ref = value.split('/', 2), month = _ref[0], year = _ref[1];
Expand All @@ -27,18 +27,18 @@ angular.module('angularPayments', []);angular.module('angularPayments')
month: month,
year: year
};
}
};

return ret;

}]);angular.module('angularPayments')
}]);;angular.module('angularPayments')

.factory('Cards', [function(){

var defaultFormat = /(\d{1,4})/g;
var defaultInputFormat = /(?:^|\s)(\d{4})$/;

var cards = [
var cards = [
{
type: 'maestro',
pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
Expand Down Expand Up @@ -129,7 +129,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}

}
}
};

var _fromType = function(type) {
var card, i, len;
Expand All @@ -152,12 +152,12 @@ angular.module('angularPayments', []);angular.module('angularPayments')
defaultInputFormat: function() { return defaultInputFormat;}
}

}]);angular.module('angularPayments')
}]);;angular.module('angularPayments')


.factory('_Format',['Cards', 'Common', '$filter', function(Cards, Common, $filter){

var _formats = {}
var _formats = {};

var _hasTextSelected = function($target) {
var ref;
Expand Down Expand Up @@ -323,12 +323,15 @@ angular.module('angularPayments', []);angular.module('angularPayments')

ctrl.$parsers.push(_parseCardNumber);
ctrl.$formatters.push(_getFormattedCardNumber);
}
};


// cvc

_formatCVC = function(e){
var _formatCVC = function(e){

var $target, digit, val;

$target = angular.element(e.currentTarget);
digit = String.fromCharCode(e.which);

Expand All @@ -345,15 +348,15 @@ angular.module('angularPayments', []);angular.module('angularPayments')
e.preventDefault();
return;
}
}
};

_formats['cvc'] = function(elem){
elem.bind('keypress', _formatCVC)
}
};

// expiry

_restrictExpiry = function(e) {
var _restrictExpiry = function(e) {
var $target, digit, value;

$target = angular.element(e.currentTarget);
Expand All @@ -377,7 +380,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}
};

_formatExpiry = function(e) {
var _formatExpiry = function(e) {
var $target, digit, val;

digit = String.fromCharCode(e.which);
Expand All @@ -401,7 +404,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}
};

_formatForwardExpiry = function(e) {
var _formatForwardExpiry = function(e) {
var $target, digit, val;

digit = String.fromCharCode(e.which);
Expand All @@ -418,7 +421,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}
};

_formatForwardSlash = function(e) {
var _formatForwardSlash = function(e) {
var $target, slash, val;

slash = String.fromCharCode(e.which);
Expand All @@ -435,7 +438,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}
};

_formatBackExpiry = function(e) {
var _formatBackExpiry = function(e) {
var $target, value;

if (e.meta) {
Expand Down Expand Up @@ -492,7 +495,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')

ctrl.$parsers.push(_parseExpiry);
ctrl.$formatters.push(_getFormattedExpiry);
}
};

return function(type, elem, ctrl){
if(!_formats[type]){
Expand All @@ -517,13 +520,13 @@ angular.module('angularPayments', []);angular.module('angularPayments')
_Format(attr.paymentsFormat, elem, ctrl);
}
}
}]);angular.module('angularPayments')
}]);;angular.module('angularPayments')



.factory('_Validate', ['Cards', 'Common', '$parse', function(Cards, Common, $parse){

var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }
var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

var _luhnCheck = function(num) {
var digit, digits, odd, sum, i, len;
Expand Down Expand Up @@ -575,7 +578,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
} else {
return cvc.length >= 3 && cvc.length <= 4;
}
}
};

_validators['card'] = function(num, ctrl, scope, attr){
var card, ref, typeModel;
Expand Down Expand Up @@ -617,51 +620,45 @@ angular.module('angularPayments', []);angular.module('angularPayments')
typeModel.assign(scope, card.type);
}

ret = (ref = num.length, __indexOf.call(card.length, ref) >= 0) && (card.luhn === false || _luhnCheck(num));

return ret;
}
return (ref = num.length, __indexOf.call(card.length, ref) >= 0) && (card.luhn === false || _luhnCheck(num));
};

_validators['expiry'] = function(val){
var obj, currentTime, expiry, prefix;
// valid if empty - let ng-required handle empty
if(val == null || val.length == 0) return true;

obj = Common.parseExpiry(val);

month = obj.month;
year = obj.year;

var currentTime, expiry, prefix;

if (!(month && year)) {
if (!(obj.month && obj.year)) {
return false;
}

if (!/^\d+$/.test(month)) {
if (!/^\d+$/.test(obj.month)) {
return false;
}

if (!/^\d+$/.test(year)) {
if (!/^\d+$/.test(obj.year)) {
return false;
}

if (!(parseInt(month, 10) <= 12)) {
if (!(parseInt(obj.month, 10) <= 12)) {
return false;
}

if (year.length === 2) {
if (obj.year.length === 2) {
prefix = (new Date).getFullYear();
prefix = prefix.toString().slice(0, 2);
year = prefix + year;
obj.year = prefix + obj.year;
}

expiry = new Date(year, month);
expiry = new Date(obj.year, obj.month);
currentTime = new Date;
expiry.setMonth(expiry.getMonth() - 1);
expiry.setMonth(expiry.getMonth() + 1, 1);

return expiry > currentTime;
}
};

return function(type, val, ctrl, scope, attr){
if(!_validators[type]){
Expand All @@ -680,7 +677,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')

.factory('_ValidateWatch', ['_Validate', function(_Validate){

var _validatorWatches = {}
var _validatorWatches = {};

_validatorWatches['cvc'] = function(type, ctrl, scope, attr){
if(attr.paymentsTypeModel) {
Expand All @@ -691,7 +688,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
}
});
}
}
};

return function(type, ctrl, scope, attr){
if(_validatorWatches[type]){
Expand Down Expand Up @@ -720,7 +717,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
ctrl.$parsers.push(validateFn);
}
}
}])
}]);
;angular.module('angularPayments')

.directive('stripeForm', ['$window', '$parse', 'Common', function($window, $parse, Common) {
Expand All @@ -733,23 +730,23 @@ angular.module('angularPayments', []);angular.module('angularPayments')


// filter valid stripe-values from scope and convert them from camelCase to snake_case
_getDataToSend = function(data){
var _getDataToSend = function(data){

var possibleKeys = ['number', 'expMonth', 'expYear',
'cvc', 'name','addressLine1',
'addressLine2', 'addressCity',
'addressState', 'addressZip',
'addressCountry']
'addressCountry'];

var camelToSnake = function(str){
return str.replace(/([A-Z])/g, function(m){
return "_"+m.toLowerCase();
});
}
};

var ret = {};

for(i in possibleKeys){
for(var i in possibleKeys){
if(data.hasOwnProperty(possibleKeys[i])){
ret[camelToSnake(possibleKeys[i])] = angular.copy(data[possibleKeys[i]]);
}
Expand All @@ -758,7 +755,7 @@ angular.module('angularPayments', []);angular.module('angularPayments')
ret['number'] = (ret['number'] || '').replace(/ /g,'');

return ret;
}
};

return {
restrict: 'A',
Expand All @@ -772,13 +769,13 @@ angular.module('angularPayments', []);angular.module('angularPayments')

form.bind('submit', function() {

expMonthUsed = scope.expMonth ? true : false;
expYearUsed = scope.expYear ? true : false;
var expMonthUsed = scope.expMonth ? true : false;
var expYearUsed = scope.expYear ? true : false;

if(!(expMonthUsed && expYearUsed)){
exp = Common.parseExpiry(scope.expiry)
scope.expMonth = exp.month
scope.expYear = exp.year
var exp = Common.parseExpiry(scope.expiry);
scope.expMonth = exp.month;
scope.expYear = exp.year;
}

var button = form.find('button');
Expand Down
4 changes: 2 additions & 2 deletions lib/angular-payments.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/cards.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ angular.module('angularPayments')
var defaultFormat = /(\d{1,4})/g;
var defaultInputFormat = /(?:^|\s)(\d{4})$/;

var cards = [
var cards = [
{
type: 'maestro',
pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
Expand Down Expand Up @@ -96,7 +96,7 @@ angular.module('angularPayments')
}

}
}
};

var _fromType = function(type) {
var card, i, len;
Expand All @@ -119,4 +119,4 @@ angular.module('angularPayments')
defaultInputFormat: function() { return defaultInputFormat;}
}

}])
}]);
6 changes: 3 additions & 3 deletions src/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ angular.module('angularPayments')
ret['parseExpiry'] = function(value){
var month, prefix, year, _ref;

value = value || ''
value = value || '';

value = value.replace(/\s/g, '');
_ref = value.split('/', 2), month = _ref[0], year = _ref[1];
Expand All @@ -27,8 +27,8 @@ angular.module('angularPayments')
month: month,
year: year
};
}
};

return ret;

}])
}]);
Loading

0 comments on commit 4d1792f

Please sign in to comment.