Created
May 28, 2013 14:39
-
-
Save boye/5663228 to your computer and use it in GitHub Desktop.
Small module with a couple helper methods related to VWE functionality. Based on http://blog.kenteken.tv/2011/05/06/code-snippets-formatteren-rdw-kenteken/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Small module with a couple helper methods related to VWE functionality | |
* Based on http://blog.kenteken.tv/2011/05/06/code-snippets-formatteren-rdw-kenteken/ | |
* | |
* @author Boye Oomens <[email protected]> | |
* @type {Object} | |
*/ | |
var vwe = { | |
/** | |
* Possible plate number combinations (diplomat plates not included) | |
* @type {Array} | |
*/ | |
combos: [ | |
/^[a-zA-Z]{2}[\d]{2}[\d]{2}$/, // 0 XX-99-99 | |
/^[\d]{2}[\d]{2}[a-zA-Z]{2}$/, // 1 99-99-XX | |
/^[\d]{2}[a-zA-Z]{2}[\d]{2}$/, // 2 99-XX-99 | |
/^[a-zA-Z]{2}[\d]{2}[a-zA-Z]{2}$/, // 3 XX-99-XX | |
/^[a-zA-Z]{2}[a-zA-Z]{2}[\d]{2}$/, // 4 XX-XX-99 | |
/^[\d]{2}[a-zA-Z]{2}[a-zA-Z]{2}$/, // 5 99-XX-XX | |
/^[\d]{2}[a-zA-Z]{3}[\d]{1}$/, // 6 99-XXX-9 | |
/^[\d]{1}[a-zA-Z]{3}[\d]{2}$/, // 7 9-XXX-99 | |
/^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{1}$/, // 8 XX-999-X | |
/^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{2}$/ // 9 X-999-XX | |
], | |
/** | |
* Formats the given license plate number | |
* | |
* @param {String} plateNr | |
* @return {Number|Boolean} | |
*/ | |
format: function (plateNr, sideCode) { | |
plateNr = plateNr.replace(/-/g, '').toUpperCase(); | |
if ( sideCode >= 6 ) { | |
return plateNr.substr(0, 2) + '-' + plateNr.substr(2, 2) + '-' + plateNr.substr(4, 2); | |
} | |
if ( sideCode == 7 || sideCode == 9 ) { | |
return plateNr.substr(0, 2) + '-' + plateNr.substr(2, 3) + '-' + plateNr.substr(5, 1); | |
} | |
if ( sideCode == 8 || sideCode == 10 ) { | |
return plateNr.substr(0, 1) + '-' + plateNr.substr(1, 3) + '-' + plateNr.substr(4, 2); | |
} | |
return plateNr; | |
}, | |
/** | |
* Fetches the sidecode of the given license plate number | |
* | |
* @param {String} plateNr | |
* @return {Number|Boolean} | |
*/ | |
getSideCode: function (plateNr) { | |
var combos = this.combos, | |
i = combos.length; | |
if ( !plateNr ) { | |
return false; | |
} | |
while (i--) { | |
if ( plateNr.match( combos[i] ) ) { | |
return i + 1; | |
} | |
} | |
}, | |
/** | |
* Checks whether the given license plate is valid (according to Dutch legislation) | |
* | |
* @param {String} plateNr | |
* @return {Boolean} | |
*/ | |
isValid: function (plateNr) { | |
var results = [], | |
combos = this.combos, | |
i = combos.length; | |
if ( !plateNr ) { | |
return false; | |
} | |
while (i--) { | |
if ( combos[i].test( plateNr.replace(/-/g, '') ) ) { | |
results.push( plateNr ); | |
} | |
} | |
return !!results.length; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment