app/assets/javascripts/validity.js in sprangular-0.0.1 vs app/assets/javascripts/validity.js in sprangular-0.1.0

- old
+ new

@@ -1,60 +1,101 @@ (function() { + var formatMessage, messages; + + messages = { + required: "can't be blank", + greaterThan: "must be greater than %arg", + greaterThanOrEqual: "must be greater than or equal to %arg", + lessThan: "must be less than %arg", + lessThanOrEqual: "must be less than or equal to %arg", + regex: 'is invalid', + length: "length must be %length", + lengthGreaterThan: "length must be greater than %length", + lengthLessThan: "length must be less than %length", + number: "must be a number" + }; + + formatMessage = function(messageKey, args) { + var key, message, regex, value; + message = messages[messageKey]; + for (key in args) { + value = args[key]; + regex = RegExp("%" + key, "g"); + message = message.replace(regex, value); + } + return message; + }; + window.Validity = { + MESSAGES: messages, RULES: { required: function(object, attr) { if (!object[attr]) { - return "can't be blank"; + return formatMessage('required'); } }, greaterThan: function(object, attr, arg) { if (!(Number(object[attr]) > arg)) { - return "must be greater than " + arg; + return formatMessage('greaterThan', { + arg: arg + }); } }, greaterThanOrEqual: function(object, attr, arg) { if (!(Number(object[attr]) >= arg)) { - return "must be greater than or equal to " + arg; + return formatMessage('greaterThanOrEqual', { + arg: arg + }); } }, lessThan: function(object, attr, arg) { if (!(Number(object[attr]) < arg)) { - return "must be less than " + arg; + return formatMessage('lessThan', { + arg: arg + }); } }, lessThanOrEqual: function(object, attr, arg) { if (!(Number(object[attr]) <= arg)) { - return "must be less than or equal to " + arg; + return formatMessage('lessThanOrEqual', { + arg: arg + }); } }, regex: function(object, attr, arg) { if (!String(object[attr]).match(arg)) { - return 'is invalid'; + return formatMessage('regex'); } }, length: function(object, attr, arg) { var length, value; value = object[attr] || ''; if (typeof arg === 'number') { if (value.length !== arg) { - return "length must be " + arg; + return formatMessage('length', { + length: arg + }); } } else if (typeof arg === 'object') { if (length = arg['greaterThan']) { if (value.length < length) { - return "length must be greater than " + length; + return formatMessage('lengthGreaterThan', { + length: length + }); } } if (length = arg['lessThan']) { if (value.length > length) { - return "length must be less than " + length; + return formatMessage('lengthLessThan', { + length: length + }); } } } }, number: function(object, attr) { if (typeof object[attr] !== 'number') { - return "must be a number"; + return formatMessage('number'); } } }, _normalizeRules: function(rules) { var attr, def, dict, self;