浏览代码

#179: Move luhn implementation to helper

phuoc 11 年之前
父节点
当前提交
ba02d0aa21
共有 4 个文件被更改,包括 54 次插入84 次删除
  1. 26 41
      dist/js/bootstrapValidator.js
  2. 2 2
      dist/js/bootstrapValidator.min.js
  3. 24 0
      src/js/bootstrapValidator.js
  4. 2 41
      src/js/validator/vat.js

+ 26 - 41
dist/js/bootstrapValidator.js

@@ -788,6 +788,30 @@
     $.fn.bootstrapValidator.validators = {};
 
     $.fn.bootstrapValidator.Constructor = BootstrapValidator;
+
+    // Helper methods, which can be used in validator class
+    $.fn.bootstrapValidator.helpers = {
+        /**
+         * Implement Luhn validation algorithm
+         * Credit to https://gist.github.com/ShirtlessKirk/2134376
+         *
+         * @param {String} value
+         * @returns {boolean}
+         */
+        luhn: function(value) {
+            var length  = value.length,
+                mul     = 0,
+                prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
+                sum     = 0;
+
+            while (length--) {
+                sum += prodArr[mul][parseInt(value.charAt(length), 10)];
+                mul ^= 1;
+            }
+
+            return (sum % 10 === 0 && sum > 0);
+        }
+    };
 }(window.jQuery));
 ;(function($) {
     $.fn.bootstrapValidator.validators.base64 = {
@@ -2404,29 +2428,6 @@
             return true;
         },
 
-        // Helper methods
-
-        /**
-         * Implement Luhn validation algorithm
-         * Credit to https://gist.github.com/ShirtlessKirk/2134376
-         *
-         * @param {String} value
-         * @returns {boolean}
-         */
-        _luhn: function(value) {
-            var length  = value.length,
-                mul     = 0,
-                prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
-                sum     = 0;
-
-            while (length--) {
-                sum += prodArr[mul][parseInt(value.charAt(length), 10)];
-                mul ^= 1;
-            }
-
-            return (sum % 10 === 0 && sum > 0);
-        },
-
         // VAT validators
 
         /**
@@ -3142,23 +3143,7 @@
                 return false;
             }
 
-            var sum    = 0,
-                weight = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
-                temp;
-            for (var i = 0; i < 10; i++) {
-                temp = parseInt(value.charAt(i)) * weight[i];
-                if (temp > 9) {
-                    temp = Math.floor(temp / 10) + temp % 10;
-                }
-                sum += temp;
-            }
-
-            sum = 10 - sum % 10;
-            if (sum > 9) {
-                sum = 0;
-            }
-
-            return (sum == value.substr(10, 1));
+            return $.fn.bootstrapValidator.helpers.luhn(value);
         },
 
         /**
@@ -3403,7 +3388,7 @@
             }
 
             value = value.substr(2, 10);
-            return this._luhn(value);
+            return $.fn.bootstrapValidator.helpers.luhn(value);
         },
 
         /**

文件差异内容过多而无法显示
+ 2 - 2
dist/js/bootstrapValidator.min.js


+ 24 - 0
src/js/bootstrapValidator.js

@@ -787,4 +787,28 @@
     $.fn.bootstrapValidator.validators = {};
 
     $.fn.bootstrapValidator.Constructor = BootstrapValidator;
+
+    // Helper methods, which can be used in validator class
+    $.fn.bootstrapValidator.helpers = {
+        /**
+         * Implement Luhn validation algorithm
+         * Credit to https://gist.github.com/ShirtlessKirk/2134376
+         *
+         * @param {String} value
+         * @returns {boolean}
+         */
+        luhn: function(value) {
+            var length  = value.length,
+                mul     = 0,
+                prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
+                sum     = 0;
+
+            while (length--) {
+                sum += prodArr[mul][parseInt(value.charAt(length), 10)];
+                mul ^= 1;
+            }
+
+            return (sum % 10 === 0 && sum > 0);
+        }
+    };
 }(window.jQuery));

+ 2 - 41
src/js/validator/vat.js

@@ -30,29 +30,6 @@
             return true;
         },
 
-        // Helper methods
-
-        /**
-         * Implement Luhn validation algorithm
-         * Credit to https://gist.github.com/ShirtlessKirk/2134376
-         *
-         * @param {String} value
-         * @returns {boolean}
-         */
-        _luhn: function(value) {
-            var length  = value.length,
-                mul     = 0,
-                prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
-                sum     = 0;
-
-            while (length--) {
-                sum += prodArr[mul][parseInt(value.charAt(length), 10)];
-                mul ^= 1;
-            }
-
-            return (sum % 10 === 0 && sum > 0);
-        },
-
         // VAT validators
 
         /**
@@ -768,23 +745,7 @@
                 return false;
             }
 
-            var sum    = 0,
-                weight = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
-                temp;
-            for (var i = 0; i < 10; i++) {
-                temp = parseInt(value.charAt(i)) * weight[i];
-                if (temp > 9) {
-                    temp = Math.floor(temp / 10) + temp % 10;
-                }
-                sum += temp;
-            }
-
-            sum = 10 - sum % 10;
-            if (sum > 9) {
-                sum = 0;
-            }
-
-            return (sum == value.substr(10, 1));
+            return $.fn.bootstrapValidator.helpers.luhn(value);
         },
 
         /**
@@ -1029,7 +990,7 @@
             }
 
             value = value.substr(2, 10);
-            return this._luhn(value);
+            return $.fn.bootstrapValidator.helpers.luhn(value);
         },
 
         /**