diff --git a/app/index.html b/app/index.html
index a35bd5c..148c9a2 100755
--- a/app/index.html
+++ b/app/index.html
@@ -54,6 +54,11 @@
Boleto bancário
+
+
diff --git a/app/scripts/angular-boleto.js b/app/scripts/angular-boleto.js
index c1a28fe..82a58d4 100644
--- a/app/scripts/angular-boleto.js
+++ b/app/scripts/angular-boleto.js
@@ -2,6 +2,29 @@
angular.module('angular.boleto', ['ui.mask'])
+ .filter('boleto', ['$filter', function ($filter) {
+ return function (boleto) {
+ if (typeof boleto !== 'undefined') {
+ var boleto = boleto.replace(/[^0-9-]/g,'');
+
+ if (boleto === '') {
+ return '';
+ }
+
+ var boletoFormatado = boleto.slice(0, 5) + '.';
+ boletoFormatado = boletoFormatado + boleto.slice(5, 10) + ' ';
+ boletoFormatado = boletoFormatado + boleto.slice(10, 15) + '.';
+ boletoFormatado = boletoFormatado + boleto.slice(15, 21) + ' ';
+ boletoFormatado = boletoFormatado + boleto.slice(21, 26) + '.';
+ boletoFormatado = boletoFormatado + boleto.slice(26, 32) + ' ';
+ boletoFormatado = boletoFormatado + boleto.slice(32, 33) + ' ';
+ boletoFormatado = boletoFormatado + boleto.slice(33, 47);
+
+ return boletoFormatado;
+ }
+ };
+ }])
+
.filter('utc', ['$filter', function ($filter) {
return function (date, format) {
var dateOk, dateResult;
diff --git a/app/scripts/angular-boleto.min.js b/app/scripts/angular-boleto.min.js
index 4baaca0..2841c7b 100644
--- a/app/scripts/angular-boleto.min.js
+++ b/app/scripts/angular-boleto.min.js
@@ -1 +1 @@
-"use strict";angular.module("angular.boleto",["ui.mask"]).filter("utc",["$filter",function(e){return function(r,t){var a,n;return(angular.isNumber(r)||angular.isString(r))&&(a=new Date(r)),n=angular.isDate(a)?new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()):r,"undefined"!=typeof t&&t?e("date")(n,t):n}}]).directive("inputBoleto",["$filter",function(e){return{restrict:"E",replace:!0,require:"?ngModel",scope:{form:"=",name:"@",validarValor:"=",validarVencimento:"="},template:'',link:function(r,t,a){r.$watch(a.ngModel,function(e){n(e)});var n=function(e){var t;return o(),"undefined"!=typeof e&&0!=e.length?(t=e.replace(/[^0-9]/g,""),t.length<47?(r.form[r.name].$setValidity("tamanhoErrado",!1),!1):0===parseInt(t)||0===t.length?(r.form[r.name].$setValidity("zerado",!1),!1):47==t.length&&u(t)?!0:void 0):void 0},o=function(){r.form[r.name].$setValidity("tamanhoErrado",!0),r.form[r.name].$setValidity("zerado",!0),r.form[r.name].$setValidity("verificadorErrado",!0),r.form[r.name].$setValidity("bloco1Errado",!0),r.form[r.name].$setValidity("bloco2Errado",!0),r.form[r.name].$setValidity("bloco3Errado",!0),r.form[r.name].$setValidity("valorErrado",!0),r.form[r.name].$setValidity("vencimentoErrado",!0)},i=function(e){for(var r,t=0,a=2,n=e.length-1;n>=0;)r=e.substr(n,1)*a,r>=10&&(r=1+(r-10)),t+=r,a=2==a?1:2,n-=1;var o=10-t%10;return 10==o&&(o=0),o},l=function(t){var a=function(r,t){return t=angular.copy(t),"number"==typeof t&&(t=e("utc")(t)),t.setTime(t.getTime()+24*parseInt(r)*60*60*1e3)},n=function(e,r){return Math.ceil((r-e)/864e5)},o=e("utc")("1997-10-07T00:00:00Z"),i=e("utc")(r.validarVencimento),l=n(o,i);if(l>9999){console.log("Data dentro do limite normalizado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.",r.validarVencimento);var u=e("utc")(a(9e3,o));o=angular.copy(u)}return a(t,o)},u=function(t){var a=t.substr(0,9),n=t.substr(9,1),o=i(a);if(0===parseInt(a)||n!=o)return r.form[r.name].$setValidity("bloco1Errado",!1),!1;var u=t.substr(10,10),d=t.substr(20,1),s=i(u);if(0===parseInt(u)||d!=s)return r.form[r.name].$setValidity("bloco2Errado",!1),!1;var m=t.substr(21,10),f=t.substr(31,1),c=i(m);if(0===parseInt(m)||f!=c)return r.form[r.name].$setValidity("bloco3Errado",!1),!1;if("undefined"!=typeof r.validarVencimento&&""!==r.validarVencimento){var v=t.substr(33,4),y=l(v);if(y=e("utc")(y,"yyyy-MM-dd"),r.validarVencimento!==y)return r.form[r.name].$setValidity("vencimentoErrado",!1),!1}if("undefined"!=typeof r.validarValor){var g=t.substr(37,10);if(g=parseFloat(g.substr(0,8)+"."+g.substr(g.length-2)),g!==r.validarValor)return r.form[r.name].$setValidity("valorErrado",!1),!1}return!0}}}}]);
\ No newline at end of file
+"use strict";angular.module("angular.boleto",["ui.mask"]).filter("boleto",["$filter",function(){return function(e){if("undefined"!=typeof e){var e=e.replace(/[^0-9-]/g,"");if(""===e)return"";var r=e.slice(0,5)+".";return r=r+e.slice(5,10)+" ",r=r+e.slice(10,15)+".",r=r+e.slice(15,21)+" ",r=r+e.slice(21,26)+".",r=r+e.slice(26,32)+" ",r=r+e.slice(32,33)+" ",r+=e.slice(33,47)}}}]).filter("utc",["$filter",function(e){return function(r,t){var a,n;return(angular.isNumber(r)||angular.isString(r))&&(a=new Date(r)),n=angular.isDate(a)?new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()):r,"undefined"!=typeof t&&t?e("date")(n,t):n}}]).directive("inputBoleto",["$filter",function(e){return{restrict:"E",replace:!0,require:"?ngModel",scope:{form:"=",name:"@",validarValor:"=",validarVencimento:"="},template:'',link:function(r,t,a){r.$watch(a.ngModel,function(e){n(e)});var n=function(e){var t;return i(),"undefined"!=typeof e&&0!=e.length?(t=e.replace(/[^0-9]/g,""),t.length<47?(r.form[r.name].$setValidity("tamanhoErrado",!1),!1):0===parseInt(t)||0===t.length?(r.form[r.name].$setValidity("zerado",!1),!1):47==t.length&&u(t)?!0:void 0):void 0},i=function(){r.form[r.name].$setValidity("tamanhoErrado",!0),r.form[r.name].$setValidity("zerado",!0),r.form[r.name].$setValidity("verificadorErrado",!0),r.form[r.name].$setValidity("bloco1Errado",!0),r.form[r.name].$setValidity("bloco2Errado",!0),r.form[r.name].$setValidity("bloco3Errado",!0),r.form[r.name].$setValidity("valorErrado",!0),r.form[r.name].$setValidity("vencimentoErrado",!0)},o=function(e){for(var r,t=0,a=2,n=e.length-1;n>=0;)r=e.substr(n,1)*a,r>=10&&(r=1+(r-10)),t+=r,a=2==a?1:2,n-=1;var i=10-t%10;return 10==i&&(i=0),i},l=function(t){var a=function(r,t){return t=angular.copy(t),"number"==typeof t&&(t=e("utc")(t)),t.setTime(t.getTime()+24*parseInt(r)*60*60*1e3)},n=function(e,r){return Math.ceil((r-e)/864e5)},i=e("utc")("1997-10-07T00:00:00Z"),o=e("utc")(r.validarVencimento),l=n(i,o);if(l>9999){console.log("Data dentro do limite normalizado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.",r.validarVencimento);var u=e("utc")(a(9e3,i));i=angular.copy(u)}return a(t,i)},u=function(t){var a=t.substr(0,9),n=t.substr(9,1),i=o(a);if(0===parseInt(a)||n!=i)return r.form[r.name].$setValidity("bloco1Errado",!1),!1;var u=t.substr(10,10),d=t.substr(20,1),s=o(u);if(0===parseInt(u)||d!=s)return r.form[r.name].$setValidity("bloco2Errado",!1),!1;var c=t.substr(21,10),f=t.substr(31,1),m=o(c);if(0===parseInt(c)||f!=m)return r.form[r.name].$setValidity("bloco3Errado",!1),!1;if("undefined"!=typeof r.validarVencimento&&""!==r.validarVencimento){var v=t.substr(33,4),y=l(v);if(y=e("utc")(y,"yyyy-MM-dd"),r.validarVencimento!==y)return r.form[r.name].$setValidity("vencimentoErrado",!1),!1}if("undefined"!=typeof r.validarValor){var g=t.substr(37,10);if(g=parseFloat(g.substr(0,8)+"."+g.substr(g.length-2)),g!==r.validarValor)return r.form[r.name].$setValidity("valorErrado",!1),!1}return!0}}}}]);
\ No newline at end of file
diff --git a/bower.json b/bower.json
index 03c71e4..d62cbe4 100755
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "angular-boleto",
- "version": "0.1.2",
+ "version": "0.1.3",
"homepage": "https://github.com/bernardolm/angular-boleto",
"authors": [
"Bernardo Loureiro (http://bernardoloureiro.com.br)"
diff --git a/test/filtersSpec.js b/test/filtersSpec.js
index de582b9..d41cb74 100644
--- a/test/filtersSpec.js
+++ b/test/filtersSpec.js
@@ -38,4 +38,24 @@ describe('Testando Filters:', function() {
expect(dateUTC).toBe('01/09/2014');
});
});
+
+ describe('boleto:', function() {
+ it('0-boleto deve estar definido', function() {
+ expect($filter('boleto')).toBeDefined();
+ });
+
+ it('1-boleto', function() {
+ var boleto = '21890010070014560208200371313180159470127456789';
+ var boletoFormatado = $filter('boleto')(boleto);
+
+ expect(boletoFormatado).toBe('21890.01007 00145.602082 00371.313180 1 59470127456789');
+ });
+
+ it('2-boleto', function() {
+ var boleto = '';
+ var boletoFormatado = $filter('boleto')(boleto);
+
+ expect(boletoFormatado).toBe('');
+ });
+ });
});