parsley-rails 2.0.3.0 → 2.0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/parsley-rails/version.rb +1 -1
- data/vendor/assets/javascripts/parsley.i18n.en.extra.js +4 -1
- data/vendor/assets/javascripts/parsley.i18n.pt-br.js +15 -15
- data/vendor/assets/javascripts/parsley.js +59 -131
- data/vendor/assets/javascripts/parsley.remote.js +60 -132
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ea8e40d0a3ca163efbeb80051c637bd6a175f81
|
4
|
+
data.tar.gz: d3020a0e39110a6dc56c5baf3419ccf0a42ecf04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6606c6192c1647942f24d3c90a878420f5239935f8b6dc4e75dca7d7ba4b8eaab8e58fd8b2f77c93eae2bb8b0ed5ed1130ca30b50e5df50ad406f76c968384c9
|
7
|
+
data.tar.gz: daa68b29c0347330260391fb66bdd84ccca70a2bb0cc2f7597fc37ec4b4a81025cd14c3fec6a0f4abf9b96e4d35d75fb9e4cbfea58c74ed20adc3e59e310ddbd
|
@@ -2,5 +2,8 @@ window.ParsleyConfig = window.ParsleyConfig || {};
|
|
2
2
|
window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
3
3
|
|
4
4
|
window.ParsleyConfig.i18n.en = $.extend(window.ParsleyConfig.i18n.en || {}, {
|
5
|
-
dateiso:
|
5
|
+
dateiso: "This value should be a valid date (YYYY-MM-DD).",
|
6
|
+
minwords: "This value is too short. It should have %s words or more.",
|
7
|
+
maxwords: "This value is too long. It should have %s words or fewer.",
|
8
|
+
words: "This value length is invalid. It should be between %s and %s words long."
|
6
9
|
});
|
@@ -6,22 +6,22 @@ window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
|
6
6
|
window.ParsleyConfig.i18n['pt-br'] = $.extend(window.ParsleyConfig.i18n['pt-br'] || {}, {
|
7
7
|
defaultMessage: "Este valor parece ser inválido.",
|
8
8
|
type: {
|
9
|
-
email: "
|
10
|
-
url: "
|
11
|
-
number: "
|
12
|
-
integer: "
|
13
|
-
digits: "
|
14
|
-
alphanum: "
|
9
|
+
email: "Este campo deve ser um email válido.",
|
10
|
+
url: "Este campo deve ser uma URL válida.",
|
11
|
+
number: "Este campo deve ser um número válido.",
|
12
|
+
integer: "Este campo deve ser um inteiro válido.",
|
13
|
+
digits: "Este campo deve conter apenas dígitos.",
|
14
|
+
alphanum: "Este campo deve ser alfa numérico."
|
15
15
|
},
|
16
|
-
notblank: "
|
17
|
-
required: "
|
18
|
-
pattern: "
|
19
|
-
min: "
|
20
|
-
max: "
|
21
|
-
range: "
|
22
|
-
minlength: "
|
23
|
-
maxlength: "
|
24
|
-
length: "O tamanho
|
16
|
+
notblank: "Este campo não pode ficar vazio.",
|
17
|
+
required: "Este campo é obrigatório.",
|
18
|
+
pattern: "Este campo parece estar inválido.",
|
19
|
+
min: "Este campo deve ser maior ou igual a %s.",
|
20
|
+
max: "Este campo deve ser menor ou igual a %s.",
|
21
|
+
range: "Este campo deve estar entre %s e %s.",
|
22
|
+
minlength: "Este campo é pequeno demais. Ele deveria ter %s caracteres ou mais.",
|
23
|
+
maxlength: "Este campo é grande demais. Ele deveria ter %s caracteres ou menos.",
|
24
|
+
length: "O tamanho deste campo é inválido. Ele deveria ter entre %s e %s caracteres.",
|
25
25
|
mincheck: "Você deve escolher pelo menos %s opções.",
|
26
26
|
maxcheck: "Você deve escolher %s opções ou mais",
|
27
27
|
check: "Você deve escolher entre %s e %s opções.",
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Parsleyjs
|
3
3
|
* Guillaume Potier - <guillaume@wisembly.com>
|
4
|
-
* Version 2.0.
|
4
|
+
* Version 2.0.4 - built Thu Aug 21 2014 18:04:53
|
5
5
|
* MIT Licensed
|
6
6
|
*
|
7
7
|
*/
|
@@ -197,20 +197,20 @@
|
|
197
197
|
/*!
|
198
198
|
* validator.js
|
199
199
|
* Guillaume Potier - <guillaume@wisembly.com>
|
200
|
-
* Version 0.
|
200
|
+
* Version 1.0.0 - built Sun Aug 03 2014 17:42:31
|
201
201
|
* MIT Licensed
|
202
202
|
*
|
203
203
|
*/
|
204
|
-
( function (
|
204
|
+
( function ( ) {
|
205
|
+
var exports = {};
|
205
206
|
/**
|
206
207
|
* Validator
|
207
208
|
*/
|
208
209
|
var Validator = function ( options ) {
|
209
210
|
this.__class__ = 'Validator';
|
210
|
-
this.__version__ = '0.
|
211
|
+
this.__version__ = '1.0.0';
|
211
212
|
this.options = options || {};
|
212
213
|
this.bindingKey = this.options.bindingKey || '_validatorjsConstraint';
|
213
|
-
return this;
|
214
214
|
};
|
215
215
|
Validator.prototype = {
|
216
216
|
constructor: Validator,
|
@@ -293,27 +293,37 @@
|
|
293
293
|
throw new Error( 'Should give a valid mapping object to Constraint', err, data );
|
294
294
|
}
|
295
295
|
}
|
296
|
-
return this;
|
297
296
|
};
|
298
297
|
Constraint.prototype = {
|
299
298
|
constructor: Constraint,
|
300
299
|
check: function ( object, group ) {
|
301
300
|
var result, failures = {};
|
302
|
-
// check all constraint nodes
|
303
|
-
for ( var property in this.
|
304
|
-
|
301
|
+
// check all constraint nodes.
|
302
|
+
for ( var property in this.nodes ) {
|
303
|
+
var isRequired = false;
|
304
|
+
var constraint = this.get(property);
|
305
|
+
var constraints = _isArray( constraint ) ? constraint : [constraint];
|
306
|
+
for (var i = constraints.length - 1; i >= 0; i--) {
|
307
|
+
if ( 'Required' === constraints[i].__class__ ) {
|
308
|
+
isRequired = constraints[i].requiresValidation( group );
|
309
|
+
continue;
|
310
|
+
}
|
311
|
+
}
|
312
|
+
if ( ! this.has( property, object ) && ! this.options.strict && ! isRequired ) {
|
313
|
+
continue;
|
314
|
+
}
|
315
|
+
try {
|
316
|
+
if (! this.has( property, this.options.strict || isRequired ? object : undefined ) ) {
|
317
|
+
// we trigger here a HaveProperty Assert violation to have uniform Violation object in the end
|
318
|
+
new Assert().HaveProperty( property ).validate( object );
|
319
|
+
}
|
305
320
|
result = this._check( property, object[ property ], group );
|
306
321
|
// check returned an array of Violations or an object mapping Violations
|
307
|
-
if ( ( _isArray( result ) && result.length > 0 ) || ( !_isArray( result ) && !_isEmptyObject( result ) ) )
|
322
|
+
if ( ( _isArray( result ) && result.length > 0 ) || ( !_isArray( result ) && !_isEmptyObject( result ) ) ) {
|
308
323
|
failures[ property ] = result;
|
309
|
-
// in strict mode, get a violation for each constraint node not in object
|
310
|
-
} else if ( this.options.strict ) {
|
311
|
-
try {
|
312
|
-
// we trigger here a HaveProperty Assert violation to have uniform Violation object in the end
|
313
|
-
new Assert().HaveProperty( property ).validate( object );
|
314
|
-
} catch ( violation ) {
|
315
|
-
failures[ property ] = violation;
|
316
324
|
}
|
325
|
+
} catch ( violation ) {
|
326
|
+
failures[ property ] = violation;
|
317
327
|
}
|
318
328
|
}
|
319
329
|
return _isEmptyObject(failures) ? true : failures;
|
@@ -422,14 +432,18 @@
|
|
422
432
|
this.groups = [];
|
423
433
|
if ( 'undefined' !== typeof group )
|
424
434
|
this.addGroup( group );
|
425
|
-
return this;
|
426
435
|
};
|
427
436
|
Assert.prototype = {
|
428
437
|
construct: Assert,
|
429
|
-
|
438
|
+
requiresValidation: function ( group ) {
|
430
439
|
if ( group && !this.hasGroup( group ) )
|
431
|
-
return;
|
440
|
+
return false;
|
432
441
|
if ( !group && this.hasGroups() )
|
442
|
+
return false;
|
443
|
+
return true;
|
444
|
+
},
|
445
|
+
check: function ( value, group ) {
|
446
|
+
if ( !this.requiresValidation( group ) )
|
433
447
|
return;
|
434
448
|
try {
|
435
449
|
return this.validate( value, group );
|
@@ -533,9 +547,9 @@
|
|
533
547
|
};
|
534
548
|
return this;
|
535
549
|
},
|
536
|
-
Collection: function (
|
550
|
+
Collection: function ( assertOrConstraint ) {
|
537
551
|
this.__class__ = 'Collection';
|
538
|
-
this.constraint = 'undefined' !== typeof
|
552
|
+
this.constraint = 'undefined' !== typeof assertOrConstraint ? (assertOrConstraint instanceof Assert ? assertOrConstraint : new Constraint( assertOrConstraint )) : false;
|
539
553
|
this.validate = function ( collection, group ) {
|
540
554
|
var result, validator = new Validator(), count = 0, failures = {}, groups = this.groups.length ? this.groups : group;
|
541
555
|
if ( !_isArray( collection ) )
|
@@ -579,19 +593,6 @@
|
|
579
593
|
};
|
580
594
|
return this;
|
581
595
|
},
|
582
|
-
Eql: function ( eql ) {
|
583
|
-
this.__class__ = 'Eql';
|
584
|
-
if ( 'undefined' === typeof eql )
|
585
|
-
throw new Error( 'Equal must be instanciated with an Array or an Object' );
|
586
|
-
this.eql = eql;
|
587
|
-
this.validate = function ( value ) {
|
588
|
-
var eql = 'function' === typeof this.eql ? this.eql( value ) : this.eql;
|
589
|
-
if ( !expect.eql( eql, value ) )
|
590
|
-
throw new Violation( this, value, { eql: eql } );
|
591
|
-
return true;
|
592
|
-
};
|
593
|
-
return this;
|
594
|
-
},
|
595
596
|
EqualTo: function ( reference ) {
|
596
597
|
this.__class__ = 'EqualTo';
|
597
598
|
if ( 'undefined' === typeof reference )
|
@@ -645,18 +646,6 @@
|
|
645
646
|
};
|
646
647
|
return this;
|
647
648
|
},
|
648
|
-
IPv4: function () {
|
649
|
-
this.__class__ = 'IPv4';
|
650
|
-
this.validate = function ( value ) {
|
651
|
-
var regExp = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
652
|
-
if ( 'string' !== typeof value )
|
653
|
-
throw new Violation( this, value, { value: Validator.errorCode.must_be_a_string } );
|
654
|
-
if ( !regExp.test( value ) )
|
655
|
-
throw new Violation( this, value );
|
656
|
-
return true;
|
657
|
-
};
|
658
|
-
return this;
|
659
|
-
},
|
660
649
|
Length: function ( boundaries ) {
|
661
650
|
this.__class__ = 'Length';
|
662
651
|
if ( !boundaries.min && !boundaries.max )
|
@@ -704,18 +693,6 @@
|
|
704
693
|
};
|
705
694
|
return this;
|
706
695
|
},
|
707
|
-
Mac: function () {
|
708
|
-
this.__class__ = 'Mac';
|
709
|
-
this.validate = function ( value ) {
|
710
|
-
var regExp = /^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i;
|
711
|
-
if ( 'string' !== typeof value )
|
712
|
-
throw new Violation( this, value, { value: Validator.errorCode.must_be_a_string } );
|
713
|
-
if ( !regExp.test( value ) )
|
714
|
-
throw new Violation( this, value );
|
715
|
-
return true;
|
716
|
-
};
|
717
|
-
return this;
|
718
|
-
},
|
719
696
|
NotNull: function () {
|
720
697
|
this.__class__ = 'NotNull';
|
721
698
|
this.validate = function ( value ) {
|
@@ -871,76 +848,22 @@
|
|
871
848
|
var _isArray = function ( obj ) {
|
872
849
|
return Object.prototype.toString.call( obj ) === '[object Array]';
|
873
850
|
};
|
874
|
-
//
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
return actual.getTime() === expected.getTime();
|
886
|
-
} else if ( typeof actual !== 'object' && typeof expected !== 'object' ) {
|
887
|
-
// loosy ==
|
888
|
-
return actual == expected;
|
889
|
-
} else {
|
890
|
-
return this.objEquiv(actual, expected);
|
891
|
-
}
|
892
|
-
},
|
893
|
-
isUndefinedOrNull: function ( value ) {
|
894
|
-
return value === null || typeof value === 'undefined';
|
895
|
-
},
|
896
|
-
isArguments: function ( object ) {
|
897
|
-
return Object.prototype.toString.call(object) == '[object Arguments]';
|
898
|
-
},
|
899
|
-
keys: function ( obj ) {
|
900
|
-
if ( Object.keys )
|
901
|
-
return Object.keys( obj );
|
902
|
-
var keys = [];
|
903
|
-
for ( var i in obj )
|
904
|
-
if ( Object.prototype.hasOwnProperty.call( obj, i ) )
|
905
|
-
keys.push(i);
|
906
|
-
return keys;
|
907
|
-
},
|
908
|
-
objEquiv: function ( a, b ) {
|
909
|
-
if ( this.isUndefinedOrNull( a ) || this.isUndefinedOrNull( b ) )
|
910
|
-
return false;
|
911
|
-
if ( a.prototype !== b.prototype ) return false;
|
912
|
-
if ( this.isArguments( a ) ) {
|
913
|
-
if ( !this.isArguments( b ) )
|
914
|
-
return false;
|
915
|
-
return eql( pSlice.call( a ) , pSlice.call( b ) );
|
916
|
-
}
|
917
|
-
try {
|
918
|
-
var ka = this.keys( a ), kb = this.keys( b ), key, i;
|
919
|
-
if ( ka.length !== kb.length )
|
920
|
-
return false;
|
921
|
-
ka.sort();
|
922
|
-
kb.sort();
|
923
|
-
for ( i = ka.length - 1; i >= 0; i-- )
|
924
|
-
if ( ka[ i ] != kb[ i ] )
|
925
|
-
return false;
|
926
|
-
for ( i = ka.length - 1; i >= 0; i-- ) {
|
927
|
-
key = ka[i];
|
928
|
-
if ( !this.eql( a[ key ], b[ key ] ) )
|
929
|
-
return false;
|
930
|
-
}
|
931
|
-
return true;
|
932
|
-
} catch ( e ) {
|
933
|
-
return false;
|
934
|
-
}
|
935
|
-
}
|
936
|
-
};
|
937
|
-
// AMD Compliance
|
938
|
-
if ( "function" === typeof define && define.amd ) {
|
939
|
-
define( 'validator', [],function() { return exports; } );
|
851
|
+
// AMD export
|
852
|
+
if ( typeof define === 'function' && define.amd ) {
|
853
|
+
define( 'vendors/validator.js/dist/validator',[],function() {
|
854
|
+
return exports;
|
855
|
+
} );
|
856
|
+
// commonjs export
|
857
|
+
} else if ( typeof module !== 'undefined' && module.exports ) {
|
858
|
+
module.exports = exports;
|
859
|
+
// browser
|
860
|
+
} else {
|
861
|
+
window[ 'undefined' !== typeof validatorjs_ns ? validatorjs_ns : 'Validator' ] = exports;
|
940
862
|
}
|
941
|
-
} )(
|
942
|
-
|
863
|
+
} )( );
|
943
864
|
|
865
|
+
// This is needed for Browserify usage that requires Validator.js through module.exports
|
866
|
+
Validator = 'undefined' !== typeof Validator ? Validator : module.exports;
|
944
867
|
var ParsleyValidator = function (validators, catalog) {
|
945
868
|
this.__class__ = 'ParsleyValidator';
|
946
869
|
this.Validator = Validator;
|
@@ -1514,7 +1437,7 @@
|
|
1514
1437
|
// loop through fields to validate them one by one
|
1515
1438
|
for (var i = 0; i < this.fields.length; i++) {
|
1516
1439
|
// do not validate a field if not the same as given validation group
|
1517
|
-
if (group &&
|
1440
|
+
if (group && !this._isFieldInGroup(this.fields[i], group))
|
1518
1441
|
continue;
|
1519
1442
|
fieldValidationResult = this.fields[i].validate(force);
|
1520
1443
|
if (true !== fieldValidationResult && fieldValidationResult.length > 0 && this.validationResult)
|
@@ -1528,13 +1451,18 @@
|
|
1528
1451
|
this._refreshFields();
|
1529
1452
|
for (var i = 0; i < this.fields.length; i++) {
|
1530
1453
|
// do not validate a field if not the same as given validation group
|
1531
|
-
if (group &&
|
1454
|
+
if (group && !this._isFieldInGroup(this.fields[i], group))
|
1532
1455
|
continue;
|
1533
1456
|
if (false === this.fields[i].isValid(force))
|
1534
1457
|
return false;
|
1535
1458
|
}
|
1536
1459
|
return true;
|
1537
1460
|
},
|
1461
|
+
_isFieldInGroup: function (field, group) {
|
1462
|
+
if(ParsleyUtils.isArray(field.options.group))
|
1463
|
+
return -1 !== $.inArray(field.options.group, group);
|
1464
|
+
return field.options.group === group;
|
1465
|
+
},
|
1538
1466
|
_refreshFields: function () {
|
1539
1467
|
return this.actualizeOptions()._bindFields();
|
1540
1468
|
},
|
@@ -1930,7 +1858,7 @@ window.ParsleyConfig.i18n.en = $.extend(window.ParsleyConfig.i18n.en || {}, {
|
|
1930
1858
|
if ('undefined' !== typeof window.ParsleyValidator)
|
1931
1859
|
window.ParsleyValidator.addCatalog('en', window.ParsleyConfig.i18n.en, true);
|
1932
1860
|
|
1933
|
-
// Parsley.js 2.0.
|
1861
|
+
// Parsley.js 2.0.4
|
1934
1862
|
// http://parsleyjs.org
|
1935
1863
|
// (c) 20012-2014 Guillaume Potier, Wisembly
|
1936
1864
|
// Parsley may be freely distributed under the MIT license.
|
@@ -1938,7 +1866,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
1938
1866
|
// ### Parsley factory
|
1939
1867
|
var Parsley = function (element, options, parsleyFormInstance) {
|
1940
1868
|
this.__class__ = 'Parsley';
|
1941
|
-
this.__version__ = '2.0.
|
1869
|
+
this.__version__ = '2.0.4';
|
1942
1870
|
this.__id__ = ParsleyUtils.hash(4);
|
1943
1871
|
// Parsley must be instanciated with a DOM element or jQuery $element
|
1944
1872
|
if ('undefined' === typeof element)
|
@@ -225,7 +225,7 @@ window.ParsleyExtend = $.extend(window.ParsleyExtend, {
|
|
225
225
|
|
226
226
|
_handleRemoteResult: function (validator, xhr, deferred) {
|
227
227
|
// If true, simply resolve and exit
|
228
|
-
if ('function' === typeof this.asyncValidators[validator].fn && this.asyncValidators[validator].fn(xhr)) {
|
228
|
+
if ('function' === typeof this.asyncValidators[validator].fn && this.asyncValidators[validator].fn.call(this, xhr)) {
|
229
229
|
deferred.resolveWith(this);
|
230
230
|
|
231
231
|
return;
|
@@ -259,7 +259,7 @@ window.ParsleyConfig.validators.remote = {
|
|
259
259
|
/*!
|
260
260
|
* Parsleyjs
|
261
261
|
* Guillaume Potier - <guillaume@wisembly.com>
|
262
|
-
* Version 2.0.
|
262
|
+
* Version 2.0.4 - built Thu Aug 21 2014 18:04:53
|
263
263
|
* MIT Licensed
|
264
264
|
*
|
265
265
|
*/
|
@@ -455,20 +455,20 @@ window.ParsleyConfig.validators.remote = {
|
|
455
455
|
/*!
|
456
456
|
* validator.js
|
457
457
|
* Guillaume Potier - <guillaume@wisembly.com>
|
458
|
-
* Version 0.
|
458
|
+
* Version 1.0.0 - built Sun Aug 03 2014 17:42:31
|
459
459
|
* MIT Licensed
|
460
460
|
*
|
461
461
|
*/
|
462
|
-
( function (
|
462
|
+
( function ( ) {
|
463
|
+
var exports = {};
|
463
464
|
/**
|
464
465
|
* Validator
|
465
466
|
*/
|
466
467
|
var Validator = function ( options ) {
|
467
468
|
this.__class__ = 'Validator';
|
468
|
-
this.__version__ = '0.
|
469
|
+
this.__version__ = '1.0.0';
|
469
470
|
this.options = options || {};
|
470
471
|
this.bindingKey = this.options.bindingKey || '_validatorjsConstraint';
|
471
|
-
return this;
|
472
472
|
};
|
473
473
|
Validator.prototype = {
|
474
474
|
constructor: Validator,
|
@@ -551,27 +551,37 @@ window.ParsleyConfig.validators.remote = {
|
|
551
551
|
throw new Error( 'Should give a valid mapping object to Constraint', err, data );
|
552
552
|
}
|
553
553
|
}
|
554
|
-
return this;
|
555
554
|
};
|
556
555
|
Constraint.prototype = {
|
557
556
|
constructor: Constraint,
|
558
557
|
check: function ( object, group ) {
|
559
558
|
var result, failures = {};
|
560
|
-
// check all constraint nodes
|
561
|
-
for ( var property in this.
|
562
|
-
|
559
|
+
// check all constraint nodes.
|
560
|
+
for ( var property in this.nodes ) {
|
561
|
+
var isRequired = false;
|
562
|
+
var constraint = this.get(property);
|
563
|
+
var constraints = _isArray( constraint ) ? constraint : [constraint];
|
564
|
+
for (var i = constraints.length - 1; i >= 0; i--) {
|
565
|
+
if ( 'Required' === constraints[i].__class__ ) {
|
566
|
+
isRequired = constraints[i].requiresValidation( group );
|
567
|
+
continue;
|
568
|
+
}
|
569
|
+
}
|
570
|
+
if ( ! this.has( property, object ) && ! this.options.strict && ! isRequired ) {
|
571
|
+
continue;
|
572
|
+
}
|
573
|
+
try {
|
574
|
+
if (! this.has( property, this.options.strict || isRequired ? object : undefined ) ) {
|
575
|
+
// we trigger here a HaveProperty Assert violation to have uniform Violation object in the end
|
576
|
+
new Assert().HaveProperty( property ).validate( object );
|
577
|
+
}
|
563
578
|
result = this._check( property, object[ property ], group );
|
564
579
|
// check returned an array of Violations or an object mapping Violations
|
565
|
-
if ( ( _isArray( result ) && result.length > 0 ) || ( !_isArray( result ) && !_isEmptyObject( result ) ) )
|
580
|
+
if ( ( _isArray( result ) && result.length > 0 ) || ( !_isArray( result ) && !_isEmptyObject( result ) ) ) {
|
566
581
|
failures[ property ] = result;
|
567
|
-
// in strict mode, get a violation for each constraint node not in object
|
568
|
-
} else if ( this.options.strict ) {
|
569
|
-
try {
|
570
|
-
// we trigger here a HaveProperty Assert violation to have uniform Violation object in the end
|
571
|
-
new Assert().HaveProperty( property ).validate( object );
|
572
|
-
} catch ( violation ) {
|
573
|
-
failures[ property ] = violation;
|
574
582
|
}
|
583
|
+
} catch ( violation ) {
|
584
|
+
failures[ property ] = violation;
|
575
585
|
}
|
576
586
|
}
|
577
587
|
return _isEmptyObject(failures) ? true : failures;
|
@@ -680,14 +690,18 @@ window.ParsleyConfig.validators.remote = {
|
|
680
690
|
this.groups = [];
|
681
691
|
if ( 'undefined' !== typeof group )
|
682
692
|
this.addGroup( group );
|
683
|
-
return this;
|
684
693
|
};
|
685
694
|
Assert.prototype = {
|
686
695
|
construct: Assert,
|
687
|
-
|
696
|
+
requiresValidation: function ( group ) {
|
688
697
|
if ( group && !this.hasGroup( group ) )
|
689
|
-
return;
|
698
|
+
return false;
|
690
699
|
if ( !group && this.hasGroups() )
|
700
|
+
return false;
|
701
|
+
return true;
|
702
|
+
},
|
703
|
+
check: function ( value, group ) {
|
704
|
+
if ( !this.requiresValidation( group ) )
|
691
705
|
return;
|
692
706
|
try {
|
693
707
|
return this.validate( value, group );
|
@@ -791,9 +805,9 @@ window.ParsleyConfig.validators.remote = {
|
|
791
805
|
};
|
792
806
|
return this;
|
793
807
|
},
|
794
|
-
Collection: function (
|
808
|
+
Collection: function ( assertOrConstraint ) {
|
795
809
|
this.__class__ = 'Collection';
|
796
|
-
this.constraint = 'undefined' !== typeof
|
810
|
+
this.constraint = 'undefined' !== typeof assertOrConstraint ? (assertOrConstraint instanceof Assert ? assertOrConstraint : new Constraint( assertOrConstraint )) : false;
|
797
811
|
this.validate = function ( collection, group ) {
|
798
812
|
var result, validator = new Validator(), count = 0, failures = {}, groups = this.groups.length ? this.groups : group;
|
799
813
|
if ( !_isArray( collection ) )
|
@@ -837,19 +851,6 @@ window.ParsleyConfig.validators.remote = {
|
|
837
851
|
};
|
838
852
|
return this;
|
839
853
|
},
|
840
|
-
Eql: function ( eql ) {
|
841
|
-
this.__class__ = 'Eql';
|
842
|
-
if ( 'undefined' === typeof eql )
|
843
|
-
throw new Error( 'Equal must be instanciated with an Array or an Object' );
|
844
|
-
this.eql = eql;
|
845
|
-
this.validate = function ( value ) {
|
846
|
-
var eql = 'function' === typeof this.eql ? this.eql( value ) : this.eql;
|
847
|
-
if ( !expect.eql( eql, value ) )
|
848
|
-
throw new Violation( this, value, { eql: eql } );
|
849
|
-
return true;
|
850
|
-
};
|
851
|
-
return this;
|
852
|
-
},
|
853
854
|
EqualTo: function ( reference ) {
|
854
855
|
this.__class__ = 'EqualTo';
|
855
856
|
if ( 'undefined' === typeof reference )
|
@@ -903,18 +904,6 @@ window.ParsleyConfig.validators.remote = {
|
|
903
904
|
};
|
904
905
|
return this;
|
905
906
|
},
|
906
|
-
IPv4: function () {
|
907
|
-
this.__class__ = 'IPv4';
|
908
|
-
this.validate = function ( value ) {
|
909
|
-
var regExp = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
910
|
-
if ( 'string' !== typeof value )
|
911
|
-
throw new Violation( this, value, { value: Validator.errorCode.must_be_a_string } );
|
912
|
-
if ( !regExp.test( value ) )
|
913
|
-
throw new Violation( this, value );
|
914
|
-
return true;
|
915
|
-
};
|
916
|
-
return this;
|
917
|
-
},
|
918
907
|
Length: function ( boundaries ) {
|
919
908
|
this.__class__ = 'Length';
|
920
909
|
if ( !boundaries.min && !boundaries.max )
|
@@ -962,18 +951,6 @@ window.ParsleyConfig.validators.remote = {
|
|
962
951
|
};
|
963
952
|
return this;
|
964
953
|
},
|
965
|
-
Mac: function () {
|
966
|
-
this.__class__ = 'Mac';
|
967
|
-
this.validate = function ( value ) {
|
968
|
-
var regExp = /^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i;
|
969
|
-
if ( 'string' !== typeof value )
|
970
|
-
throw new Violation( this, value, { value: Validator.errorCode.must_be_a_string } );
|
971
|
-
if ( !regExp.test( value ) )
|
972
|
-
throw new Violation( this, value );
|
973
|
-
return true;
|
974
|
-
};
|
975
|
-
return this;
|
976
|
-
},
|
977
954
|
NotNull: function () {
|
978
955
|
this.__class__ = 'NotNull';
|
979
956
|
this.validate = function ( value ) {
|
@@ -1129,76 +1106,22 @@ window.ParsleyConfig.validators.remote = {
|
|
1129
1106
|
var _isArray = function ( obj ) {
|
1130
1107
|
return Object.prototype.toString.call( obj ) === '[object Array]';
|
1131
1108
|
};
|
1132
|
-
//
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
return actual.getTime() === expected.getTime();
|
1144
|
-
} else if ( typeof actual !== 'object' && typeof expected !== 'object' ) {
|
1145
|
-
// loosy ==
|
1146
|
-
return actual == expected;
|
1147
|
-
} else {
|
1148
|
-
return this.objEquiv(actual, expected);
|
1149
|
-
}
|
1150
|
-
},
|
1151
|
-
isUndefinedOrNull: function ( value ) {
|
1152
|
-
return value === null || typeof value === 'undefined';
|
1153
|
-
},
|
1154
|
-
isArguments: function ( object ) {
|
1155
|
-
return Object.prototype.toString.call(object) == '[object Arguments]';
|
1156
|
-
},
|
1157
|
-
keys: function ( obj ) {
|
1158
|
-
if ( Object.keys )
|
1159
|
-
return Object.keys( obj );
|
1160
|
-
var keys = [];
|
1161
|
-
for ( var i in obj )
|
1162
|
-
if ( Object.prototype.hasOwnProperty.call( obj, i ) )
|
1163
|
-
keys.push(i);
|
1164
|
-
return keys;
|
1165
|
-
},
|
1166
|
-
objEquiv: function ( a, b ) {
|
1167
|
-
if ( this.isUndefinedOrNull( a ) || this.isUndefinedOrNull( b ) )
|
1168
|
-
return false;
|
1169
|
-
if ( a.prototype !== b.prototype ) return false;
|
1170
|
-
if ( this.isArguments( a ) ) {
|
1171
|
-
if ( !this.isArguments( b ) )
|
1172
|
-
return false;
|
1173
|
-
return eql( pSlice.call( a ) , pSlice.call( b ) );
|
1174
|
-
}
|
1175
|
-
try {
|
1176
|
-
var ka = this.keys( a ), kb = this.keys( b ), key, i;
|
1177
|
-
if ( ka.length !== kb.length )
|
1178
|
-
return false;
|
1179
|
-
ka.sort();
|
1180
|
-
kb.sort();
|
1181
|
-
for ( i = ka.length - 1; i >= 0; i-- )
|
1182
|
-
if ( ka[ i ] != kb[ i ] )
|
1183
|
-
return false;
|
1184
|
-
for ( i = ka.length - 1; i >= 0; i-- ) {
|
1185
|
-
key = ka[i];
|
1186
|
-
if ( !this.eql( a[ key ], b[ key ] ) )
|
1187
|
-
return false;
|
1188
|
-
}
|
1189
|
-
return true;
|
1190
|
-
} catch ( e ) {
|
1191
|
-
return false;
|
1192
|
-
}
|
1193
|
-
}
|
1194
|
-
};
|
1195
|
-
// AMD Compliance
|
1196
|
-
if ( "function" === typeof define && define.amd ) {
|
1197
|
-
define( 'validator', [],function() { return exports; } );
|
1109
|
+
// AMD export
|
1110
|
+
if ( typeof define === 'function' && define.amd ) {
|
1111
|
+
define( 'vendors/validator.js/dist/validator',[],function() {
|
1112
|
+
return exports;
|
1113
|
+
} );
|
1114
|
+
// commonjs export
|
1115
|
+
} else if ( typeof module !== 'undefined' && module.exports ) {
|
1116
|
+
module.exports = exports;
|
1117
|
+
// browser
|
1118
|
+
} else {
|
1119
|
+
window[ 'undefined' !== typeof validatorjs_ns ? validatorjs_ns : 'Validator' ] = exports;
|
1198
1120
|
}
|
1199
|
-
} )(
|
1200
|
-
|
1121
|
+
} )( );
|
1201
1122
|
|
1123
|
+
// This is needed for Browserify usage that requires Validator.js through module.exports
|
1124
|
+
Validator = 'undefined' !== typeof Validator ? Validator : module.exports;
|
1202
1125
|
var ParsleyValidator = function (validators, catalog) {
|
1203
1126
|
this.__class__ = 'ParsleyValidator';
|
1204
1127
|
this.Validator = Validator;
|
@@ -1772,7 +1695,7 @@ window.ParsleyConfig.validators.remote = {
|
|
1772
1695
|
// loop through fields to validate them one by one
|
1773
1696
|
for (var i = 0; i < this.fields.length; i++) {
|
1774
1697
|
// do not validate a field if not the same as given validation group
|
1775
|
-
if (group &&
|
1698
|
+
if (group && !this._isFieldInGroup(this.fields[i], group))
|
1776
1699
|
continue;
|
1777
1700
|
fieldValidationResult = this.fields[i].validate(force);
|
1778
1701
|
if (true !== fieldValidationResult && fieldValidationResult.length > 0 && this.validationResult)
|
@@ -1786,13 +1709,18 @@ window.ParsleyConfig.validators.remote = {
|
|
1786
1709
|
this._refreshFields();
|
1787
1710
|
for (var i = 0; i < this.fields.length; i++) {
|
1788
1711
|
// do not validate a field if not the same as given validation group
|
1789
|
-
if (group &&
|
1712
|
+
if (group && !this._isFieldInGroup(this.fields[i], group))
|
1790
1713
|
continue;
|
1791
1714
|
if (false === this.fields[i].isValid(force))
|
1792
1715
|
return false;
|
1793
1716
|
}
|
1794
1717
|
return true;
|
1795
1718
|
},
|
1719
|
+
_isFieldInGroup: function (field, group) {
|
1720
|
+
if(ParsleyUtils.isArray(field.options.group))
|
1721
|
+
return -1 !== $.inArray(field.options.group, group);
|
1722
|
+
return field.options.group === group;
|
1723
|
+
},
|
1796
1724
|
_refreshFields: function () {
|
1797
1725
|
return this.actualizeOptions()._bindFields();
|
1798
1726
|
},
|
@@ -2188,7 +2116,7 @@ window.ParsleyConfig.i18n.en = $.extend(window.ParsleyConfig.i18n.en || {}, {
|
|
2188
2116
|
if ('undefined' !== typeof window.ParsleyValidator)
|
2189
2117
|
window.ParsleyValidator.addCatalog('en', window.ParsleyConfig.i18n.en, true);
|
2190
2118
|
|
2191
|
-
// Parsley.js 2.0.
|
2119
|
+
// Parsley.js 2.0.4
|
2192
2120
|
// http://parsleyjs.org
|
2193
2121
|
// (c) 20012-2014 Guillaume Potier, Wisembly
|
2194
2122
|
// Parsley may be freely distributed under the MIT license.
|
@@ -2196,7 +2124,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
2196
2124
|
// ### Parsley factory
|
2197
2125
|
var Parsley = function (element, options, parsleyFormInstance) {
|
2198
2126
|
this.__class__ = 'Parsley';
|
2199
|
-
this.__version__ = '2.0.
|
2127
|
+
this.__version__ = '2.0.4';
|
2200
2128
|
this.__id__ = ParsleyUtils.hash(4);
|
2201
2129
|
// Parsley must be instanciated with a DOM element or jQuery $element
|
2202
2130
|
if ('undefined' === typeof element)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parsley-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jiri Pospisil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|