diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..395386b2
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,16 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = unset
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = tab
+indent_size = 4
+
+[*.md]
+trim_trailing_whitespace = false
+
+[package.json]
+indent_style = space
+indent_size = 2
diff --git a/.gitignore b/.gitignore
index 0dd9a511..d3bcf7c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,6 @@
*.iws
target
*.ncrunchsolution
+node_modules
+*.webinfo
+*.log
\ No newline at end of file
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 00000000..541883b6
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,18 @@
+{
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "sub": true,
+ "undef": true,
+ "boss": true,
+ "eqnull": true,
+ "browser": true,
+ "smarttabs": true,
+ "globals": {
+ "jQuery": false,
+ "ko": true
+ }
+}
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..010373fa
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - 8
+ - 10
+ - 12
+sudo: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..94d27cd3
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,128 @@
+# 2.0.4 (2019-10-09)
+
+* fix isEmptyVal doesn't always return a boolean [#617](https://github.com/Knockout-Contrib/Knockout-Validation/issues/617)
+
+* fix maxLength message for Sweedish translation [c3468ae](https://github.com/Knockout-Contrib/Knockout-Validation/commit/c3468ae62462ad68d0bdbb42c2c9fdfa7b91a71c), [#668](https://github.com/Knockout-Contrib/Knockout-Validation/pull/668), [#581](https://github.com/Knockout-Contrib/Knockout-Validation/pull/581)
+
+* update CI configuration - target newer Node.js versions and configure AppVeyor [0a5bc13](https://github.com/Knockout-Contrib/Knockout-Validation/commit/0a5bc1397e1698548729d1dc3364f015fc603e44)
+
+* upgrade QUnit testing framework to version 2.9.2 and target more versions of Knockout in CI (2.3.0, 3.4.2, 3.5.0) [b932885](https://github.com/Knockout-Contrib/Knockout-Validation/commit/b932885a3a5fd5546889a176bd98bb732ad86c2b)
+
+* improve example for custom rules usage [#609](https://github.com/Knockout-Contrib/Knockout-Validation/pull/609)
+
+* save as a dependency instead when installing via Bower [#643](https://github.com/Knockout-Contrib/Knockout-Validation/pull/643)
+
+* add Slovak - Slovak Republic (sk-SK) localization [#605](https://github.com/Knockout-Contrib/Knockout-Validation/pull/605)
+
+* add Ukrainian - Ukraine (uk-UA) localization [#648](https://github.com/Knockout-Contrib/Knockout-Validation/pull/648)
+
+* add Finnish - Finland (fi-FI) localization [#639](https://github.com/Knockout-Contrib/Knockout-Validation/pull/639)
+
+
+# 2.0.3 (2015-05-18)
+
+### Features
+* Add Arabic - Jordan (ar-JO) localization [#546](https://github.com/Knockout-Contrib/Knockout-Validation/pull/546)
+
+
+### Bug Fixes
+
+* formatMessage fails when params is falsy [#547](https://github.com/Knockout-Contrib/Knockout-Validation/issues/547)
+* async rules cannot return immediately [#341](https://github.com/Knockout-Contrib/Knockout-Validation/issues/341)
+
+
+# 2.0.2 (2015-02-02)
+
+### Bug Fixes
+
+* use `peerDependencies` for npm package dependencies [#528](https://github.com/Knockout-Contrib/Knockout-Validation/issues/528)
+* `validationElement` and `validationMessage` bindings throw if observable is not validatable [#519](https://github.com/Knockout-Contrib/Knockout-Validation/issues/519)
+* validation cannot be removed from attached observable [#526](https://github.com/Knockout-Contrib/Knockout-Validation/issues/526)
+* localization may not work in node.js; some files were still not working with RequireJS [#509](https://github.com/Knockout-Contrib/Knockout-Validation/issues/509)
+* Nuget package will contain the same file names as for Bower or NPM
+
+
+# 2.0.1 (2015-01-26)
+
+This release enables [cdnjs](https://cdnjs.com/libraries/knockout-validation) npm auto-update and fixes localization loading issue with RequireJS.
+
+
+### Bug Fixes
+
+* Localization loading randomly breaks when using requirejs [#509](https://github.com/Knockout-Contrib/Knockout-Validation/issues/509)
+
+
+### Localization
+
+* add localization file for Chinese - Taiwan (zh-TW) [#513](https://github.com/Knockout-Contrib/Knockout-Validation/pull/513)
+
+
+# 2.0.0 (2015-01-20)
+
+### Features
+
+- new localization files: Hebrew, Italian, Persian, Hungarian, Croatian, Brazilian, Japanese, Swedish, Norwegian, Chinese, German, Catalan, Danish, Korean, Latvian, Romanian, Bulgarian, Portuguese, Czech, Turkish #165, #177, #196, #201, #203, #204, #212, #221, #261, #270, #322, #327, #329, #340, #378, #411, #415, #416, #430, #467
+- add config option `errorsAsTitle` to disable setting element 'title' with error description. Default is `true` #168
+- add config option `grouping.live` to react to changes to observableArrays #223
+- add config option `decorateElementOnModified` #320
+- add config option `allowHtmlMessages` for allowing HTML in validation messages #364
+- add config option `validate.throttle` to implement throttling for validation #344
+- add support for HTML5 date, email and number input types #130
+- decorate radio buttons using checked binding #193
+- Number validator - Allow numbers starting with point. #236
+- step rule supports value `any` #271
+- remove dependency on jQuery #318
+- update knockout dependency to v3.0.0 #358
+- add `setRules` method #337
+- min and max validation use type attribute to determine behavior #355
+- make library available through npm #357
+- support observable params for validators #363
+- min and max rules work with Date observables #459
+- allow grouping options to be specified to `validatedObservable` #461
+- add version in banner #428
+- add support for `textInput` binding #451
+- add support for `selectedOptions` binding #426
+- add basic collection methods to errors, exposing raw validatables. #449
+- ko.validation.group does not resolve deferred computed values unless they have rules defined on them. #163
+- make localization files AMD and CommonJS/Node compatible #492
+- enable loading of multiple locales and add possibility to switch between them #492
+
+
+### Bug Fixes
+
+- unwrap parameters before using them in `formatMessage` #235
+- make attached error property to be observable #247, #173
+- grouping options does not overwrite global configuration options #248
+- titles are not reset when data becomes valid #170
+- reorder `phoneUS` validation checks to preserve optional properties if observable is not initialized or null. #234
+- fix memory leaks in `addAnonymousRule` rules #346
+- handle rule `params` which may be undefined #334
+- `unique` rule can behave incorrectly for external values #365
+- use update binding handler instead of utility method setTextContent #368
+- `onlyIf` doesn’t affect anonymous validation rule #374
+- fix group returns observables in errors array, not the value of each error #383
+- fix initial value for isValid of `validatedObservable` #387
+- fix check for knockout library #447
+- make `formatMessage` aware if min and max rules were created from Javascript #385
+- `writeInputAttributes` fails when anonymous rules are used #400
+- `maxLength` rule fails if the value (of the observable) is a number #457
+- `applyBindingsWithValidation` fails when called with viewModel and options #137
+- `applyBindingsWithValidation` should extend provided config #472
+- `dateISO` rule accepts months or days outside the valid range #265
+- `writeInputValidationAttributes` does not support write HTML5 attributes correctly when `params` is observable #481
+- prevent `ko.validation.group` to notify with intermediary validation state #99
+- grouping over validatedObservable objects is not possible #494
+- `showAllMessages` throws when accessing `isModified` when grouping over validatedObservable instances #269
+- `validatedObservable` does not react when its value changes #442
+- updating a validatedObservable will not reset initial validation result #209
+- `parseInputAttributes` option may duplicate rules when enabled #277
+
+
+### Breaking Changes
+
+- remove `ko.validation.configure` method, `ko.validation.init` must be used instead #496
+- rename `decorateElement` to `decorateInputElement` #361
+- do not change original data by `group` method #465, #225
+- loading localization files using `script` tags or with and `AMD loader` no longer changes the language automatically. A call to `ko.validation.locale` is required #506
+- rename some localization files due to invalid identifiers, no-NB.js → nb-NO.js, ca-CA.js → ca-ES.js c2d0ec19bc0abea073a4bbabc933e7299aa6af5b
+- change project structure #511 - directories are now lowercase
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 541b7542..b33630a2 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,23 +1,23 @@
-#Interested in Contributing?
+# Interested in Contributing?
Thanks for your interest! If you have any questions feel free to add an issue to the repo.
-##Join the Knockout.Validation Team
+## Join the Knockout.Validation Team
Firstly, I am looking for team members! The popularity of Knockout.Validation has become a bit more than I can handle purely in my own sparetime, and so I am looking for folks who want to help fix bugs, add features, and generally keep the Issue list at bay.
As a team member, you will have priority on determining the direction of Knockout.Validation. You will also get credit on all publicity, articles, references, etc... for Knockout.Validation.
If you are interested, shoot [Eric](https://github.com/ericmbarnard) a note
-##Found a bug?
+## Found a bug?
1. Please give your absolute best attempt to repro the issue with a test (it's really not that hard)
2. Fix the bug
3. Create PR to either Master, or the next upcoming release branch (eg: if there's both a 'Master' and 'v2.1' branch - create the PR against the 'v2.1' branch)
-##Want to add a feature?
+## Want to add a feature?
1. Attempt to at least start a discussion about the idea before coding it up
2. If it seems to get decent feedback, then go ahead and start building something
3. Create TESTS! It won't get merged if it doesn't have tests!
4. See #3 about creating a PR for the code you have written
-###A Note about Line Endings, etc...
-- I've added a .gitattribute file to try and force line-endings to be the same across repos. Some folks use Windows, some Mac, some Linux... I don't really care, but try not to screw up the repo formatting when doing PR's. Look at the .gitattributes and make sure you aren't breaking the mold.
\ No newline at end of file
+### A Note about Line Endings, etc...
+- I've added a .gitattribute file to try and force line-endings to be the same across repos. Some folks use Windows, some Mac, some Linux... I don't really care, but try not to screw up the repo formatting when doing PR's. Look at the .gitattributes and make sure you aren't breaking the mold.
diff --git a/Dist/Knockout-Validation.nuspec b/Dist/Knockout-Validation.nuspec
deleted file mode 100644
index 0bdcc881..00000000
--- a/Dist/Knockout-Validation.nuspec
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- Knockout.Validation
- 1.0.1
- ericbarnard
- ericbarnard
- http://www.opensource.org/licenses/mit-license.html
- https://github.com/ericmbarnard/Knockout-Validation
- false
- A Validation Library plugin for KnockoutJS. An extensible and pluggable framework for performing model-based Form and UI validation.
- Validation JavaScript knockout mvvm
-
-
-
-
-
\ No newline at end of file
diff --git a/Dist/knockout.validation.js b/Dist/knockout.validation.js
deleted file mode 100644
index e16dd2de..00000000
--- a/Dist/knockout.validation.js
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*
-===============================================================================
- Author: Eric M. Barnard - @ericmbarnard
- License: MIT (http://opensource.org/licenses/mit-license.php)
-
- Description: Validation Library for KnockoutJS
-===============================================================================
-*/
-
-/*jshint
- sub:true,
- curly: true,eqeqeq: true,
- immed: true,
- latedef: true,
- newcap: true,
- noarg: true,
- sub: true,
- undef: true,
- boss: true,
- eqnull: true,
- browser: true
-*/
-
-/*globals
- jQuery: false,
- require: false,
- exports: false,
- define: false,
- ko: false
-*/
-
-(function (factory) {
- // Module systems magic dance.
-
- if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
- // CommonJS or Node: hard-coded dependency on "knockout"
- factory(require("knockout"), exports);
- } else if (typeof define === "function" && define["amd"]) {
- // AMD anonymous module with hard-coded dependency on "knockout"
- define(["knockout", "exports"], factory);
- } else {
- // ");
- };
-
- if (jQueryTmplVersion > 0) {
- jQuery['tmpl']['tag']['ko_code'] = {
- open: "__.push($1 || '');"
- };
- jQuery['tmpl']['tag']['ko_with'] = {
- open: "with($1) {",
- close: "} "
- };
- }
- };
-
- ko.jqueryTmplTemplateEngine.prototype = new ko.templateEngine();
-
- // Use this one by default *only if jquery.tmpl is referenced*
- var jqueryTmplTemplateEngineInstance = new ko.jqueryTmplTemplateEngine();
- if (jqueryTmplTemplateEngineInstance.jQueryTmplVersion > 0)
- ko.setTemplateEngine(jqueryTmplTemplateEngineInstance);
-
- ko.exportSymbol('jqueryTmplTemplateEngine', ko.jqueryTmplTemplateEngine);
- })();
- });
- })(window, document, navigator, window["jQuery"]);
-})();
\ No newline at end of file
diff --git a/Localization/el-GR.js b/Localization/el-GR.js
deleted file mode 100644
index f756ae85..00000000
--- a/Localization/el-GR.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Το πεδίο αυτό είναι υποχρεωτικό.',
- min: 'Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση από {0}.',
- max: 'Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση από {0}.',
- minLength: 'Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες.',
- maxLength: 'Παρακαλώ εισάγετε το πολύ {0} χαρακτήρες.',
- pattern: 'Παρακαλώ ελέγξτε την τιμή αυτή.',
- step: 'Η τιμή πρέπει να αυξηθεί κατά {0}',
- email: 'Η διεύθυνση email δεν έχει έγκυρη μορφή',
- date: 'Παρακαλώ εισάγετε μια έγκυρη ημερομηνία',
- dateISO: 'Παρακαλώ εισάγετε μια έγκυρη ημερομηνία',
- number: 'Παρακαλώ εισάγετε έναν αριθμό',
- digit: 'Παρακαλώ εισάγετε ένα ψηφίο',
- phoneUS: 'Παρακαλώ εισάγετε έναν σωστό αριθμό τηλεφώνου',
- equal: 'Οι τιμές πρέπει να είναι ίσες',
- notEqual: 'Παρακαλώ επιλέξτε μια άλλη τιμή.',
- unique: 'Παρακαλώ βεβαιωθείτε ότι η τιμή είναι μοναδική.'
-});
\ No newline at end of file
diff --git a/Localization/en-US.js b/Localization/en-US.js
deleted file mode 100644
index f52774f2..00000000
--- a/Localization/en-US.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'This field is required.',
- min: 'Please enter a value greater than or equal to {0}.',
- max: 'Please enter a value less than or equal to {0}.',
- minLength: 'Please enter at least {0} characters.',
- maxLength: 'Please enter no more than {0} characters.',
- pattern: 'Please check this value.',
- step: 'The value must increment by {0}',
- email: 'This is not a proper email address',
- date: 'Please enter a proper date',
- dateISO: 'Please enter a proper date',
- number: 'Please enter a number',
- digit: 'Please enter a digit',
- phoneUS: 'Please specify a valid phone number',
- equal: 'Values must equal',
- notEqual: 'Please choose another value.',
- unique: 'Please make sure the value is unique.'
-});
\ No newline at end of file
diff --git a/Localization/es-ES.js b/Localization/es-ES.js
deleted file mode 100644
index 53f11af3..00000000
--- a/Localization/es-ES.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Este campo es obligatorio',
- min: 'Por favor, introduzca un valor igual o mayor a {0}',
- max: 'Por favor, introduzca un valor menor o igual a {0}',
- minLength: 'Por favor, introduzca al menos {0} caracteres',
- maxLength: 'Por favor, no introduzca más de {0} caracteres',
- pattern: 'Por favor, compruebe este campo',
- step: 'El valor debe incrementarse por {0}',
- email: 'Este no es una dirección de email correcta',
- date: 'Por favor, introduzca una fecha correcta',
- dateISO: 'Por favor, introduzca una fecha correcta',
- number: 'Por favor, introduzca un número',
- digit: 'Por favor, introduzca un dígito',
- phoneUS: 'Por favor, introduzca un número de teléfono válido para EEUU',
- equal: 'Los valores deben ser iguales',
- notEqual: 'Por favor, elija otro valor',
- unique: 'Por favor, asegurese de que el valor sea único'
-});
diff --git a/Localization/fa-IR.js b/Localization/fa-IR.js
deleted file mode 100644
index 21caf257..00000000
--- a/Localization/fa-IR.js
+++ /dev/null
@@ -1,40 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-* Localization By: Kiarash Soleimanzadeh(kiarash.s@hotmail.com)
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'تکمیل این فیلد اجباری است.',
- min: 'لطفاً مقداری بزرگتر یا برابر {0} وارد نمائید.',
- max: 'لطفاً مقداری کوچکتر یا برابر {0} وارد نمائید.',
- minLength: 'لطفاً حداقل {0} حرف وارد نمائید.',
- maxLength: 'لطفاً حداکثر {0} حرف وارد نمائید.',
- pattern: 'لطفاً یک مقدار معتبر وارد نمائید.',
- step: 'مقدار باید با {0} افزایش پبدا کند.',
- email: 'لطفاً یک آدرس ایمیل معتبر وارد نمائید.',
- date: 'لطفاً یک تاریخ معتبر وارد نمائید.',
- dateISO: 'لطفاً یک تاریخ معتبر وارد نمائید.',
- number: 'لطفاً یک عدد وارد نمائید.',
- digit: 'لطفاً یک عدد وارد نمائید.',
- phoneUS: 'لطفاً یک شماره تماس معتبر وارد نمائید.',
- equal: 'مقدارها باید برابر باشند.',
- notEqual: 'لطفاً یک مقدار دیگر وارد نمائید.',
- unique: 'لطفاً یک مقدار منحصربه فرد وارد نمائید.'
-});
diff --git a/Localization/fr-FR.js b/Localization/fr-FR.js
deleted file mode 100644
index ff9d855b..00000000
--- a/Localization/fr-FR.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Ce champ est obligatoire.',
- min: 'Veuillez saisir une valeur supérieure ou égale à {0}.',
- max: 'Veuillez saisir une valeur inférieure ou égale à {0}.',
- minLength: 'Veuillez saisir au moins {0} caractères.',
- maxLength: 'Veuillez saisir au plus {0} caractères.',
- pattern: 'Veuillez corriger ce champ.',
- step: 'Le pas d\'incrémentation de la valeur doit être de {0}.',
- email: 'Ceci n\'est pas une adresse électronique valide.',
- date: 'Veuillez saisir une date valide.',
- dateISO: 'Veuillez saisir une date (ISO) valide.',
- number: 'Veuillez saisir un nombre.',
- digit: 'Veuillez saisir un chiffre.',
- phoneUS: 'Veuillez saisir un numéro de téléphone valide.',
- equal: 'Les valeurs doivent être égales.',
- notEqual: 'Veuillez saisir une autre valeur.',
- unique: 'Veuillez vérifier que la valeur est unique.'
-});
\ No newline at end of file
diff --git a/Localization/he-IL.js b/Localization/he-IL.js
deleted file mode 100644
index f1b8abfd..00000000
--- a/Localization/he-IL.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
- * This is an example localization page. All of these
- * messages are the default messages for ko.validation
- *
- * Currently ko.validation only does a single parameter replacement
- * on your message (indicated by the {0}).
- *
- * The parameter that you provide in your validation extender
- * is what is passed to your message to do the {0} replacement.
- *
- * eg: myProperty.extend({ minLength: 5 });
- * ... will provide a message of "Please enter at least 5 characters"
- * when validated
- *
- * This message replacement obviously only works with primitives
- * such as numbers and strings. We do not stringify complex objects
- * or anything like that currently.
- */
-
-ko.validation.localize({
- required: 'שדה נדרש',
- min: 'אנא הכנס ערך גדול יותר או שווה ל- {0}',
- max: 'אנא הכנס ערך קטן יותר או שווה ל- {0}',
- minLength: 'אנא הכנס לפחות {0} תווים',
- maxLength: 'אנא הכנס לא יותר מאשר {0} תווים',
- pattern: 'אנא בדוק את הערך הזה',
- step: 'הערך צריך להשתנות ב - {0}',
- email: 'אנא הכנס כתובת דוא"ל חוקית',
- date: 'אנא הכנס תאריך תקין',
- dateISO: 'אנא הכנס תאריך תקין',
- number: 'אנא הכנס מספר',
- digit: 'אנא הכנס ספרה',
- phoneUS: 'אנא הכנס מספר טלפון תקין',
- equal: 'ערכים חייבים להיות שווים',
- notEqual: 'אנא בחר ערך שונה',
- unique: 'אנא וודא שהערך ייחודי'
-});
\ No newline at end of file
diff --git a/Localization/hr-HR.js b/Localization/hr-HR.js
deleted file mode 100644
index 3853ccfd..00000000
--- a/Localization/hr-HR.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Ovo polje je obavezno.',
- min: 'Unesena vrijednost mora biti jednaka ili veća od {0}.',
- max: 'Unesena vrijednost mora biti jednaka ili manja od {0}.',
- minLength: 'Minimalna dužina polja je {0} znakova.',
- maxLength: 'Maksimalna dužina polja je {0} znakova.',
- pattern: 'Unesena vrijednost nije ispravnog formata.',
- step: 'Vrijednost se mora povećavati za {0}.',
- email: 'Potrebno je unijeti ispravnu e-mail adresu.',
- date: 'Potrebno je unijeti ispravan datum.',
- dateISO: 'Potrebno je unijeti ispravan datum.',
- number: 'Unesena vrijednost mora biti broj.',
- digit: 'Unesena vrijednost mora biti znamenka.',
- phoneUS: 'Potrebno je unijeti ispravan broj telefona.',
- equal: 'Vrijednosti moraju biti jednake.',
- notEqual: 'Unesite drugu vrijednost.',
- unique: 'Unesena vrijednost mora biti jedinstvena.'
-});
\ No newline at end of file
diff --git a/Localization/hu-HU.js b/Localization/hu-HU.js
deleted file mode 100644
index e8b9c44f..00000000
--- a/Localization/hu-HU.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Ktelez megadni.',
- min: 'Nem lehet kisebb, mint {0}.',
- max: 'Nem lehet nagyobb, mint {0}.',
- minLength: 'Legalbb {0} karaktert adjon meg.',
- maxLength: 'Legfeljebb {0} karaktert adjon meg.',
- pattern: 'Krem ellenrizze ezt az rtket.',
- step: 'Az rtknek {0} rtkkel kell nvekednie.',
- email: 'A megadott email cm nem rvnyes.',
- date: 'A megadott dtum nem rvnyes.',
- dateISO: 'A megadott dtum nem rvnyes.',
- number: 'Krem szmot adjon meg.',
- digit: 'Krem szmjegyet adjon meg.',
- phoneUS: 'Krem, hogy rvnyes telefonszmot adjon meg.',
- equal: 'Az rtkeknek meg kel egyeznik.',
- notEqual: 'Az rtkeknek klnbznik kell.',
- unique: 'Az rtknek egyedieknek kell lennie.'
-});
\ No newline at end of file
diff --git a/Localization/it-IT.js b/Localization/it-IT.js
deleted file mode 100644
index c4e3ac3c..00000000
--- a/Localization/it-IT.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
- * This is an example localization page. All of these
- * messages are the default messages for ko.validation
- *
- * Currently ko.validation only does a single parameter replacement
- * on your message (indicated by the {0}).
- *
- * The parameter that you provide in your validation extender
- * is what is passed to your message to do the {0} replacement.
- *
- * eg: myProperty.extend({ minLength: 5 });
- * ... will provide a message of "Please enter at least 5 characters"
- * when validated
- *
- * This message replacement obviously only works with primitives
- * such as numbers and strings. We do not stringify complex objects
- * or anything like that currently.
- */
-
-ko.validation.localize({
- required: 'Il campo è obbligatorio.',
- min: 'Inserire un valore superiore od uguale a {0}.',
- max: 'Inserire un valore inferiore od uguale a {0}.',
- minLength: 'Inserire almeno {0} caratteri.',
- maxLength: 'Inserire al massimo {0} caratteri.',
- pattern: 'Controllare il valore inserito.',
- step: 'Il valore deve essere incrementato di {0}.',
- email: 'Indirizzo email non valido.',
- date: 'Inserire una data valida.',
- dateISO: 'Inserire una data valida.',
- number: 'Inserire un valore numerico.',
- digit: 'Inserire una cifra.',
- phoneUS: 'Specificare un numero di telefono valido.',
- equal: 'I valori devono essere uguali.',
- notEqual: 'Il valore deve essere differente.',
- unique: 'Il valore deve essere univoco.'
-});
\ No newline at end of file
diff --git a/Localization/ja-JP.js b/Localization/ja-JP.js
deleted file mode 100644
index a53bdb39..00000000
--- a/Localization/ja-JP.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'このフィールドは必須入力項目です。',
- min: '{0}以上の値を入力してください。',
- max: '{0}以下の値を入力してください。',
- minLength: '{0}文字以上の文字を入力してください。',
- maxLength: '{0}文字以下の文字数にしてください。',
- pattern: '入力値を確認してください。',
- step: 'この値は{0}で増加します。',
- email:'適切なe-mailアドレスではありません。',
- date: '適切な日付を入力してください。',
- dateISO: '適切な日付を入力してください。',
- number: '数字を入力してください。',
- digit: '数値を入力してください。',
- phoneUS: '有効な電話番号を指定してください。',
- equal: '同一の値にしてください。',
- notEqual: '他の値を選択してください。',
- unique: '一意の値であることを確認してください。'
-});
diff --git a/Localization/nl-NL.js b/Localization/nl-NL.js
deleted file mode 100644
index 9e76d34e..00000000
--- a/Localization/nl-NL.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Dit veld is verplicht.',
- min: 'Geef alstublieft een waarde in groter of gelijk aan {0}.',
- max: 'Geef alstublieft een waarde in kleiner of gelijk aan {0}.',
- minLength: 'Geef alstublief minstens {0} karakters in.',
- maxLength: 'Geef alstublief hoogstens {0} karakters in.',
- pattern: 'Verifieer alstublieft deze waarde.',
- step: 'De waarde moet veranderen in stappen van {0}.',
- email: 'Dit is geen correct emailadres.',
- date: 'Geef alstublieft een correcte datum.',
- dateISO: 'Geef alstublieft een correcte datum.',
- number: 'Geef alstublieft een nummer in.',
- digit: 'Geef alstublieft een nummer in.',
- phoneUS: 'Geef alstublieft een geldig telefoonnummer in.',
- equal: 'Waarden moeten gelijk zijn.',
- notEqual: 'Kies alstublieft een andere waarde.',
- unique: 'Verzeker er u van dat deze waarde uniek is.'
-});
\ No newline at end of file
diff --git a/Localization/no-NB.js b/Localization/no-NB.js
deleted file mode 100644
index 7d79b2e7..00000000
--- a/Localization/no-NB.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Dette feltet er obligatorisk',
- min: 'Fyll inn en verdi som er større eller lik {0}',
- max: 'Fyll inn en verdi som er mindre eller lik {0}',
- minLength: 'Fyll inn minst {0} tegn',
- maxLength: 'Fyll inn færre enn {0} tegn',
- pattern: 'Vennligst kontrollér verdien',
- step: 'Verdien må økes med {0}',
- email: 'Dette er ikke en korrekt e-postadresse',
- date: 'Fyll inn en korrekt dato',
- dateISO: 'Fyll inn en korrekt dato',
- number: 'Fyll inn ett nummer',
- digit: 'Fyll inn ett siffer',
- phoneUS: 'Vennlist spesifiser ett korrekt telefonnummer',
- equal: 'Verdiene må være like',
- notEqual: 'Vennligst velg en annen verdi',
- unique: 'Vennligst sørg for at verdien er unik'
-});
diff --git a/Localization/pl-PL.js b/Localization/pl-PL.js
deleted file mode 100644
index a27c9c06..00000000
--- a/Localization/pl-PL.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'To pole jest wymagane.',
- min: 'Wprowadź liczbę więszką lub równą {0}.',
- max: 'Wprowadź liczbę mniejszą lub równą {0}.',
- minLength: 'Wprowadź co najmniej {0} znaków.',
- maxLength: 'Wprowadź co najwyżej {0} znaków.',
- pattern: 'Sprawdź to pole.',
- step: 'Wartość musi być wielokrotnością {0}.',
- email: 'Wprowadź poprawny adres e-mail.',
- date: 'Wprowadź poprawną datę.',
- dateISO: 'Wprowadź poprawną datę.',
- number: 'Wprowadź liczbę.',
- digit: 'Wprowadź cyfrę.',
- phoneUS: 'Wprowadź poprawny numer telefonu.',
- equal: 'Wartości muszą być równe.',
- notEqual: 'Wybierz inną wartość.',
- unique: 'Sprawdź czy wartość jest unikalna.'
-});
\ No newline at end of file
diff --git a/Localization/pt-BR.js b/Localization/pt-BR.js
deleted file mode 100644
index 6da004e8..00000000
--- a/Localization/pt-BR.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Este campo é requerido.',
- min: 'Por favor, forneça um valor maior ou igual a {0}.',
- max: 'Por favor, forneça um valor menor ou igual a {0}.',
- minLength: 'Por favor, forneça ao menos {0} caracteres.',
- maxLength: 'Por favor, forneça não mais que {0} caracteres.',
- pattern: 'Por favor, verifique este valor',
- step: 'O valor deve ser incrementado por {0}',
- email: 'Por favor, forneça um endereço eletrônico válido.',
- date: 'Por favor, forneça uma data válida.',
- dateISO: 'Por favor, forneça uma data válida (ISO).',
- number: 'Por favor, forneça um número válido.',
- digit: 'Por favor, forneça somente dígitos.',
- phoneUS: 'Por favor, forneça um telefone válido',
- equal: 'Os valores devem ser iguais',
- notEqual: 'Por faovr, escolha outro valor',
- unique: 'Verifique se o valor é único'
-});
\ No newline at end of file
diff --git a/Localization/ru-RU.js b/Localization/ru-RU.js
deleted file mode 100644
index 1f434917..00000000
--- a/Localization/ru-RU.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* Страница локализации плагина для русского языка
-* сообщения в этом файле будут значениями по умолчанию для ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Необходимо заполнить это поле.',
- min: 'Значение должно быть больше или равно {0}.',
- max: 'Значение должно быть меньше или равно {0}.',
- minLength: 'Длина поля должна быть не меньше {0} символов.',
- maxLength: 'Длина поля должна быть не больше {0} символов.',
- pattern: 'Пожалуйста проверьте это поле.',
- step: 'Значение поле должно изменяться с шагом {0}',
- email: 'Введите в поле правильный адрес email',
- date: 'Пожалуйста введите правильную дату',
- dateISO: 'Пожалуйста введите правильную дату в формате ISO',
- number: 'Поле должно содержать число',
- digit: 'Поле должно содержать цифры',
- phoneUS: 'Поле должно содержать правильный номер телефона',
- equal: 'Значения должны быть равны',
- notEqual: 'Пожалуйста выберите другое значение.',
- unique: 'Значение должно быть уникальным.'
-});
\ No newline at end of file
diff --git a/Localization/sv-SE.js b/Localization/sv-SE.js
deleted file mode 100644
index 830d829e..00000000
--- a/Localization/sv-SE.js
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-
-/************************************************
-* This is an example localization page. All of these
-* messages are the default messages for ko.validation
-*
-* Currently ko.validation only does a single parameter replacement
-* on your message (indicated by the {0}).
-*
-* The parameter that you provide in your validation extender
-* is what is passed to your message to do the {0} replacement.
-*
-* eg: myProperty.extend({ minLength: 5 });
-* ... will provide a message of "Please enter at least 5 characters"
-* when validated
-*
-* This message replacement obviously only works with primitives
-* such as numbers and strings. We do not stringify complex objects
-* or anything like that currently.
-*/
-
-ko.validation.localize({
- required: 'Detta fält är obligatorisk',
- min: 'Fyll i ett värde som är större än eller lika med {0}',
- max: 'Fyll i ett värde som är mindre än eller lika med {0}',
- minLength: 'Fyll i minst {0} tecken',
- maxLength: 'Fyll i färre än {0} tecken',
- pattern: 'Var god kontrollera värdet',
- step: 'Värdet måste ökas med {0}',
- email: 'Fyll i en korrekt e-postadress',
- date: 'Fyll i ett korrekt datum',
- dateISO: 'Fyll i ett korrekt datum',
- number: 'Fyll i ett nummer',
- digit: 'Fyll i en siffra',
- phoneUS: 'Fyll i ett korrekt telefonnummer',
- equal: 'Fyll i samma värde en gång till',
- notEqual: 'Fyll i ett annat värde',
- unique: 'Fyll i ett unikt värde'
-});
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..bf1432cc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,218 @@
+# Knockout Validation
+A KnockoutJS Plugin for model and property validation
+
+[![Build Status](https://travis-ci.org/Knockout-Contrib/Knockout-Validation.svg)](https://travis-ci.org/Knockout-Contrib/Knockout-Validation)
+[![Build status](https://ci.appveyor.com/api/projects/status/rmas31qgmi07wypi/branch/master?svg=true)](https://ci.appveyor.com/project/crissdev/knockout-validation/branch/master)
+[![Bower version](https://badge.fury.io/bo/knockout-validation.svg)](http://badge.fury.io/bo/knockout-validation)
+[![npm version](https://badge.fury.io/js/knockout.validation.svg)](http://badge.fury.io/js/knockout.validation)
+[![NuGet version](https://badge.fury.io/nu/Knockout.Validation.svg)](http://badge.fury.io/nu/Knockout.Validation)
+
+Contributors:
+
+* [Eric Barnard](https://github.com/ericmbarnard)
+* [Steve Greatrex](https://github.com/stevegreatrex)
+* [Cristian Trifan](https://github.com/crissdev)
+* [Andy Booth](https://github.com/andybooth)
+* [Michal Poreba](https://github.com/michalporeba)
+* and many others!
+
+License: [MIT](http://www.opensource.org/licenses/mit-license.php)
+
+
+## Install
+
+#### Bower
+
+```sh
+bower install knockout-validation --save
+```
+
+#### NuGet
+
+```ps1
+PM> Install-Package Knockout.Validation
+```
+
+#### NPM
+
+```sh
+npm install knockout.validation --save
+```
+
+#### CDN
+
+##### [cdnjs](https://cdnjs.com/libraries/knockout-validation)
+* https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.4/knockout.validation.js
+* https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.4/knockout.validation.min.js
+
+##### [jsdelivr](http://www.jsdelivr.com/#!knockout.validation)
+- https://cdn.jsdelivr.net/npm/knockout.validation@2.0.4/dist/knockout.validation.js
+- https://cdn.jsdelivr.net/npm/knockout.validation@2.0.4/dist/knockout.validation.min.js
+
+
+## Getting Started
+```javascript
+//start using it!
+var myValue = ko.observable().extend({ required: true });
+
+//oooh complexity
+var myComplexValue = ko.observable().extend({
+ required: true,
+ minLength: 3,
+ pattern: {
+ message: 'Hey this doesnt match my pattern',
+ params: '^[A-Z0-9].$'
+ }
+ });
+
+//or chaining if you like that
+var myComplexValue = ko.observable()
+
+myComplexValue.extend({ required: true })
+ .extend({ minLength: 3 })
+ .extend({ pattern: {
+ message: 'Hey this doesnt match my pattern',
+ params: '^[A-Z0-9].$'
+ }});
+
+//want to know if all of your ViewModel's properties are valid?
+var myViewModel = ko.validatedObservable({
+ property1: ko.observable().extend({ required: true }),
+ property2: ko.observable().extend({ max: 10 })
+});
+
+console.log(myViewModel.isValid()); //false
+
+myViewModel().property1('something');
+myViewModel().property2(9);
+
+console.log(myViewModel.isValid()); //true
+
+```
+see more examples on the Fiddle: http://jsfiddle.net/KHFn8/5424/
+
+## Native Validation Rules
+**Required**:
+
+```javascript
+var myObj = ko.observable('').extend({ required: true });
+```
+**Min**:
+
+```javascript
+var myObj = ko.observable('').extend({ min: 2 });
+```
+**Max**:
+
+```javascript
+var myObj = ko.observable('').extend({ max: 99 });
+```
+**MinLength**:
+
+```javascript
+var myObj = ko.observable('').extend({ minLength: 3 });
+```
+**MaxLength**:
+
+```javascript
+var myObj = ko.observable('').extend({ maxLength: 12 });
+```
+**Email**:
+
+```javascript
+var myObj = ko.observable('').extend({ email: true });
+```
+
+... and [MANY MORE](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules)
+
+_Much thanks to the [jQuery Validation Plug-In](https://github.com/jzaefferer/jquery-validation) team for their work on many of the rules_
+## Custom Validation Rules
+#### Custom Rules
+Custom Rules can be created using the simple example below. All you need is to define a validator function and a default message.
+The validator function takes in the observable's value, and the `params` that you pass in with the `extend` method.
+
+```javascript
+ko.validation.rules['mustEqual'] = {
+ validator: function (val, params) {
+ return val === params;
+ },
+ message: 'The field must equal {0}'
+};
+ko.validation.registerExtenders();
+
+//the value '5' is the second arg ('params') that is passed to the validator
+var myCustomObj = ko.observable().extend({ mustEqual: 5 });
+```
+Learn more about Custom Rules on the [WIKI](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Custom-Validation-Rules)
+
+**Or Check out our [User-Contributed Custom Rules](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/User-Contributed-Rules)!**
+
+## HTML5 Validation Attributes
+
+**Required**:
+
+```html
+
+```
+
+**Min**:
+
+```html
+
+
+
+```
+
+**Max**:
+
+```html
+
+
+
+```
+
+**Pattern**:
+
+```html
+
+```
+
+**Step**:
+
+```html
+
+```
+**Special Note, the 'MinLength' attribute was removed until the HTML5 spec fully supports it**
+
+## Knockout Bindings
+
+### ValidationMessage
+If you want to customize the display of your objects validation message, use the `validationMessage` binding:
+
+```html
+
+
+
+
+```
+Check out more on [Validation Bindings](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Validation-Bindings)
+
+## Remote Validation Rules
+Check out our [Async Validation](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Async-Rules) and [jQuery AJAX Validation](https://github.com/ericmbarnard/Knockout-Validation/wiki/Async-Rules)
+
+## Localization
+
+Add a reference to the localization js files after the Knockout Validation plugin
+
+```html
+
+
+
+
+```
+
+Apply localized messages
+
+```js
+ko.validation.locale('el-GR');
+```
diff --git a/ReadMe.md b/ReadMe.md
deleted file mode 100644
index 2c60cc8b..00000000
--- a/ReadMe.md
+++ /dev/null
@@ -1,150 +0,0 @@
-#Knockout Validation
-A KnockoutJS Plugin for model and property validation
-
-Contributors:
-
-* [Eric Barnard](https://github.com/ericmbarnard)
-* [Andy Booth](https://github.com/andybooth)
-* [Michal Poreba](https://github.com/michalporeba)
-* and many others!
-
-License: [MIT](http://www.opensource.org/licenses/mit-license.php)
-
-###NuGet: [Knockout.Validation](http://nuget.org/packages/Knockout.Validation)
-
-Tested in IE 6+, FF7, Chrome 15
-##Getting Started
-```javascript
-//start using it!
-var myValue = ko.observable().extend({ required: true });
-
-//oooh complexity
-var myComplexValue = ko.observable().extend({
- required: true,
- minLength: 3,
- pattern: {
- message: 'Hey this doesnt match my pattern',
- params: '^[A-Z0-9].$'
- }
- });
-
-//or chaining if you like that
-var myComplexValue = ko.observable()
-
-myComplexValue.extend({ required: true })
- .extend({ minLength: 3 })
- .extend({ pattern: {
- message: 'Hey this doesnt match my pattern',
- params: '^[A-Z0-9].$'
- }});
-
-//want to know if all of your ViewModel's properties are valid?
-var myViewModel = ko.validatedObservable({
- property1: ko.observable().extend({ required: true }),
- property2: ko.observable().extend({ max: 10 })
-});
-
-console.log(myViewModel.isValid()); //false
-
-myViewModel().property1('something');
-myViewModel().property2(9);
-
-console.log(myViewModel.isValid()); //true
-
-```
-see more examples on the Fiddle: http://jsfiddle.net/ericbarnard/KHFn8/
-
-##Native Validation Rules
-**Required**:
-
-```javascript
-var myObj = ko.observable('').extend({ required: true });
-```
-**Min**:
-
-```javascript
-var myObj = ko.observable('').extend({ min: 2 });
-```
-**Max**:
-
-```javascript
-var myObj = ko.observable('').extend({ max: 99 });
-```
-**MinLength**:
-
-```javascript
-var myObj = ko.observable('').extend({ minLength: 3 });
-```
-**MaxLength**:
-
-```javascript
-var myObj = ko.observable('').extend({ maxLength: 12 });
-```
-**Email**:
-
-```javascript
-var myObj = ko.observable('').extend({ email: true });
-```
-
-... and [MANY MORE](https://github.com/ericmbarnard/Knockout-Validation/wiki/Native-Rules)
-
-_Much thanks to the [jQuery Validation Plug-In](https://github.com/jzaefferer/jquery-validation) team for their work on many of the rules_
-##Custom Validation Rules
-####Custom Rules
-Custom Rules can be created using the simple example below. All you need is to define a validator function and a default message.
-The validator function takes in the observable's value, and the `params` that you pass in with the `extend` method.
-
-```javascript
-ko.validation.rules['mustEqual'] = {
- validator: function (val, otherVal) {
- return val === otherVal;
- },
- message: 'The field must equal {0}'
-};
-ko.validation.registerExtenders();
-
-//the value '5' is the second arg ('otherVal') that is passed to the validator
-var myCustomObj = ko.observable().extend({ mustEqual: 5 });
-```
-Learn more about Custom Rules on the [WIKI](https://github.com/ericmbarnard/Knockout-Validation/wiki/Custom-Validation-Rules)
-
-###Or Check out our [User-Contributed Custom Rules](https://github.com/ericmbarnard/Knockout-Validation/wiki/User-Contributed-Rules)!###
-
-##HTML5 Validation Attributes
-
-Required: ``
-
-Min: ``
-
-Max: ``
-
-Pattern: ``
-
-Step: ``
-
-**Special Note, the 'MinLength' attribute was removed until the HTML5 spec fully supports it**
-
-##Knockout Bindings
-
-###ValidationMessage
-If you want to customize the display of your objects validation message, use the `validationMessage` binding:
-
-```html
-