aboutsummaryrefslogtreecommitdiffstats
path: root/src/jqLite.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/jqLite.js')
-rw-r--r--src/jqLite.js22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/jqLite.js b/src/jqLite.js
index 9e16f8ec..e48d250b 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -100,13 +100,27 @@ function getStyle(element) {
}
+var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
+var PREFIX_REGEXP = /^(x[\:\-_]|data[\:\-_])/i;
+var MOZ_HACK_REGEXP = /^moz([A-Z])/;
/**
- * Converts dash-separated names to camelCase. Useful for dealing with css properties.
+ * Converts all accepted directives format into proper directive name.
+ * All of these will become 'myDirective':
+ * my:DiRective
+ * my-directive
+ * x-my-directive
+ * data-my:directive
+ *
+ * Also there is special case for Moz prefix starting with upper case letter.
+ * @param name Name to normalize
*/
function camelCase(name) {
- return name.replace(/\-(\w)/g, function(all, letter, offset){
- return (offset == 0 && letter == 'w') ? 'w' : letter.toUpperCase();
- });
+ return name.
+ replace(PREFIX_REGEXP, '').
+ replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
+ return offset ? letter.toUpperCase() : letter;
+ }).
+ replace(MOZ_HACK_REGEXP, 'Moz$1');
}
/////////////////////////////////////////////