Author: reebalazs
Date: Tue Dec 25 12:58:30 2007
New Revision: 50075

Modified:
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/   (props changed)
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kssparser.js
   kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js
   
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_interfaces.js
   
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_kssparser.js
Log:
Refactor the event registry - in progress

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js     
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/errors.js     
Tue Dec 25 12:58:30 2007
@@ -139,7 +139,7 @@
 ;;; };
 
 ;;; err.kssSelectorError = function(message){
-;;;    return setErrorInfo(null, 'RuleMergeError', message);
+;;;    return setErrorInfo(null, 'KssSelectorError', message);
 ;;; };
 
 

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js   
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/eventreg.js   
Tue Dec 25 12:58:30 2007
@@ -38,49 +38,13 @@
 *     defaultActionMethodName = null: if there is no default action implemented
 *     func must be a class (constructor) function, this is the class that
 *           implements the binder.
+*
+* XXX EventRegistry becomes pure BBB, when the new javascript docstring 
registry
+* is implemented.
 */
 var _EventRegistry = function () {
-    //this.content = {};
-    this.classes = {};
-    //this.eventSets = [];
-};
-
-/* binder registration */
-
-_EventRegistry.prototype.registerBinder = function(className, func) {
-    if (typeof(func) == 'undefined') {
-;;;     kukit.E = 'func argument is mandatory when registering an event';
-;;;     kukit.E += ' binder (_EventRegistry.registerBinder).';
-        throw new Error(kukit.E);
-    }
-    if (this.classes[className]) {
-        // Do not allow redefinition
-;;;     var msg = 'Error : event class [' + className + '] already 
registered.';
-;;;     kukit.logError(msg);
-        return;
-    
-    }
-    // Decorate and store the class
-    decorateEventBinderClass(func);
-    this.classes[className] = func;
-};
-
-_EventRegistry.prototype.existsBinder = function(className) {
-    var func = this.classes[className];
-    return (typeof(func) != 'undefined');
 };
 
-_EventRegistry.prototype.getBinderClass = function(className) {
-    var func = this.classes[className];
-    if (! func) {
-        // not found
-;;;     kukit.E = 'Error : undefined event setup type [' + className + '].';
-        throw new Error(kukit.E);
-        }
-    return func;
-};
-
-
 /* there are the actual registration methods, to be called from plugins */
 
 _EventRegistry.prototype.register =
@@ -226,6 +190,12 @@
 *
 * p.s. oper is not required to make it easy to adapt existing code
 * so we create a new oper below
+*
+* XXX New from kss 1.4: the event's name must stand with the full namespace
+* (dashed) format, while in previous version the namespace was figured out
+* from the binder instance; this server no purpose and is now removed
+* during a simplification process.
+* 
 */
 
 var _EventBinder__continueEvent__ =
@@ -237,6 +207,7 @@
     oper.node = node;
     if (node) {
         // if we found the binding, just use that
+        // XXX XXX
         var info = kukit.engine.binderInfoRegistry.getBinderInfoById(
             this.__binderId__);
         var newOper = info.bound.getBoundOperForNode(name, node);
@@ -394,13 +365,19 @@
     method.call(this, name, oper);
 };
 
-var decorateEventBinderClass = function(cls) {
+this.decorateEventBinderClass = function(cls) {
+    // See if we are set up already?
+    if (cls.__decorated_for_kss__) {
+        return;
+    }
     cls.prototype.__continueEvent__ = _EventBinder__continueEvent__;
     cls.prototype.__continueEvent_allNodes__ =
         _EventBinder__continueEvent_allNodes__;
     cls.prototype._EventBinder_triggerEvent = _EventBinder_triggerEvent;
     cls.prototype._EventBinder_callMethod = _EventBinder_callMethod;
     cls.prototype.__makeFuncToBind__ = _EventBinder_makeFuncToBind;
+    // mark decorated
+    cls.prototype.__decorated_for_kss__ = true;
 };
 
 /* Event instance registry 
@@ -416,23 +393,28 @@
 };
 
 er.BinderInfoRegistry.prototype.getOrCreateBinderInfo =
-    function (id, className, namespace) {
+    function (kssSelector) {
+    // We use the key as the selector's merge id.
+    var key = kssSelector.thisMergeId();
     // Get or create the event.
-    var binderInfo = this.info[id];
+    var binderInfo = this.info[key];
     if (typeof(binderInfo) == 'undefined') {
         // Create a new event.
 ;;;     var msg = 'Instantiating event id [' + id + '], className [';
 ;;;     msg += className + '], namespace [' + namespace + '].';
 ;;;     kukit.logDebug(msg);
+
+        //
+        // The creation of binder instances happens from here.
+        //
+
+        // XXX XXX
         var binderClass = kukit.eventsGlobalRegistry.getBinderClass(className);
+
+        // Create the binder instance and the binder info
         var binder = new binderClass();
-        
         binderInfo = this.info[id] = new _BinderInfo(binder);
 
-        // decorate it with id and class
-        binder.__binderId__ = id;
-        binder.__binderClassName__ = className;
-        binder.__eventNamespace__ = namespace;
         // store the bound rules
         //binder.__bound_rules__ = [];
     } else if (binderInfo.getBinder().__binderClassName__ != 
@@ -459,6 +441,7 @@
 er.BinderInfoRegistry.prototype.getSingletonBinderInfoByName =
     function (namespace, name) {
     //Get className
+    // XXX XXX XXX
     var className = kukit.eventsGlobalRegistry.get(namespace, name).className;
     // Get an event.
     var id = er.makeId(namespace, className);
@@ -823,18 +806,11 @@
     }
 };
 
-er.makeId = function(namespace, name) {
-    if (namespace == null) {
-        namespace = '';
-    }
-    return '@' + namespace + '@' + name;
-};
-
-er.makeMergeId = function(id, namespace, name) {
-    if (namespace == null) {
-        namespace = '';
-    }
-    return id + '@' + namespace + '@' + name;
+er.makeMergeId = function(id, name) {
+    // name cannot contain a @
+    // id can be any string
+    // so the merge id will be unique
+    return name + '@' + id;
 };
 
 }();                              /// MODULE END

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js 
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/interfaces.js 
Tue Dec 25 12:58:30 2007
@@ -276,21 +276,12 @@
 ;;;         throw new Error(kukit.E);
 ;;;     }
 
+        // Decorate binder class.
+        kukit.er.decorateEventBinderClass(config.binderClass);
+
         // store the config
         this.config = config;
 
-        // Register binder class by its classname as well.
-        // XXX TODO
-        // Find out or generate the class name,
-        //var className = config.binderClass.prototype.__className__;
-        //if (typeof(className) == 'undefined') {
-        //    // Create a className, and register it too.
-        //    className = '' + _eventClassCounter;
-        //    _eventClassCounter += 1;
-        //    this.registerBinder(className, klass);
-        //    klass.prototype.__className__ = className;
-        //}
-
     };
 
     this.finalize = function(loader) {

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kssparser.js
==============================================================================
--- kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kssparser.js  
(original)
+++ kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/kssparser.js  
Tue Dec 25 12:58:30 2007
@@ -791,7 +791,11 @@
             id = pseudotoken.value.arg.txt;
         }
     }
-    var name = pseudotoken.value.methodName;
+    // XXX We really don't use the name and the namespace
+    // separated here, so the following code could be removed
+    // and multi-level namespaces would be supported.
+    var origName = pseudotoken.value.methodName;
+    var name = origName;
     var splitname = name.split('-');
     var namespace = null;
     if (splitname.length > 2) {
@@ -805,8 +809,8 @@
     }
     // Protect the error for better logging
 ;;; try {
-        this.kssSelector = new kukit.rd.KssSelector(isEvent, css, name,
-            namespace, id, ppid);
+        this.kssSelector = new kukit.rd.KssSelector(isEvent, css, origName,
+                id, ppid);
 ;;; } catch(e) {
 ;;;     if (e.name == 'KssSelectorError') {
 ;;;         // Log the message
@@ -847,7 +851,6 @@
         // Store event rules in the common list
         for (var i=0; i<parser.eventRules.length; i++) {
             var rule = parser.eventRules[i];
-            rule.kssSelector.prepareId();
             this.rules.push(rule);
         }
 ;;; } catch(e) {

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js
==============================================================================
--- 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js   
    (original)
+++ 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/kukit/resourcedata.js   
    Tue Dec 25 12:58:30 2007
@@ -24,7 +24,7 @@
 /*
 *  class KssSelector
 */
-kukit.rd.KssSelector = function(isEvent, css, name, namespace, id, ppid) {
+kukit.rd.KssSelector = function(isEvent, css, name, id, ppid) {
     this.isEventSelector = isEvent;
     this.isMethodSelector = ! isEvent;
 // XXX GC row and column are wrong...
@@ -37,62 +37,56 @@
 ;;;     var msg = 'Kss selector name must not contain @: [' + name + '].';
 ;;;     throw kukit.err.kssSelectorError(msg);
 ;;;     }
-;;; if (id && id.indexOf('@') != -1) {
-;;;     var msg = 'Kss selector id must not contain @: [' + id + '].';
-;;;     throw kukit.err.kssSelectorError(msg);
-;;;     }
-;;; if (namespace && namespace.indexOf('@') != -1) {
-;;;     var msg = 'Kss selector namespace must not contain @: [' + namespace;
-;;;     msg = msg + '].';
-;;;     throw kukit.err.kssSelectorError(msg);
-;;;    }
 ;;; if (! isEvent) {
 ;;;     // method rule
 ;;;     if (css != 'document' && css != 'behaviour') {
-;;;         var msg = 'KssSpecialSelector [' + name;
+;;;         var msg = 'KssSpecialSelector [' + css;
 ;;;         msg = msg + '] must have one of the allowed names.';
 ;;;         throw kukit.err.kssSelectorError(msg);
 ;;;    }
 ;;;     if (ppid) {
-;;;         var msg = 'KssSpecialSelector [' + name + '] must not stand ';
-;;;         msg += 'with an event id acquired by parameter provider ['
+;;;         var msg = 'KssSpecialSelector [' + css + '] must not stand ';
+;;;         msg += 'with an event id acquired by value provider ['
 ;;;         msg += ppid.methodName +  ']';
-;;;         throw new kukit.err.KssSelectorError(msg);
+;;;         throw new kukit.err.kssSelectorError(msg);
 ;;;     }
 ;;; }
     this.css = css;
     this.name = name;
-    this.namespace = namespace;
     this.className = null;
     this.id = id;
     this.ppid = ppid;
+    this.prepareId();
     // finish up the KSS on it
     // XXX We should not have this here, because this disables testing the 
parser
     // standalone, without a plugin registry. Original behaviour
     // should be reverted instead.
-    this.setClassName();
+    this.checkRegistry();
 };
 
-kukit.rd.KssSelector.prototype.setClassName = function() {
+kukit.rd.KssSelector.prototype.checkRegistry = function() {
     // Sets up id and class on the selector, based on registration info
     // XXX GC instead of relying on exceptions, test if key exists
     try {
-        this.className = kukit.eventsGlobalRegistry.get(
-            this.namespace, this.name).className;
+        kukit.eventsGlobalRegistry.get(
+            null, this.name);
     } catch(e) {
         throw kukit.err.parsingError(e.message);
     }
 };
 
 kukit.rd.KssSelector.prototype.prepareId = function() {
+    // We prepare the id a bit. If there is no ppid specified,
+    // we can already produce the mergeId here.
     if (this.ppid == null) {
-        if (this.id == null && this.ppid == null) {
+        if (this.id == null) {
             // singleton for class
-            this.id = kukit.er.makeId(this.namespace, this.className);
+            // singleton will have an id ''
+            this.id = '';
         }
         // Also set the merge id. The rules with the same merge
         // id should be merged on the same node.
-        this.mergeId = kukit.er.makeMergeId(this.id, this.namespace, 
this.name);
+        this.mergeId = kukit.er.makeMergeId(this.id, this.name);
     }
 };
 
@@ -106,15 +100,9 @@
         var id = this.ppid.pprovider.eval(this.ppid.args, node, {});
         // check that the id is not empty or null!
         if (! id) {
-;;;         var namestr;
-;;;         if (this.namespace) {
-;;;            namestr = this.namespace + '-' + this.name;
-;;;         } else {
-;;;            namestr = this.name;
-;;;         }
 ;;;         kukit.E = 'Did not get a valid state id, when evaluated';
 ;;;         kukit.E += ' the value provider [' + this.ppid.methodName + ']';
-;;;         kukit.E += ' in kss selector [' + namestr + ']';
+;;;         kukit.E += ' in kss selector [' + this.name + ']';
 ;;;         kukit.E += ' css=[' + this.css + ']';
 ;;;         throw kukit.E;
         }
@@ -130,10 +118,11 @@
     } else {
         // Evaluate it.
         var id = this.getId(node);
-        this.mergeId = kukit.er.makeMergeId(id, this.namespace, this.name);
+        return kukit.er.makeMergeId(id, this.name);
     }
 };
 
+
 /*
 * Kss parameter values. There are two kinds: text and method.
 *
@@ -311,8 +300,7 @@
     var id = this.kssSelector.getId(node);
     // Gets the event instance for the rule.
     return kukit.engine.binderInfoRegistry.getOrCreateBinderInfo(
-        this.kssSelector.id, this.kssSelector.className, 
-        this.kssSelector.namespace);
+        this.kssSelector);
 };
 
 /*
@@ -819,9 +807,9 @@
 ;;;     throw new Error('Unknown method rule category [' + category + '].');
 ;;; }
     // look up the rule
-    var namespace = binder.__eventNamespace__;
+    // XXX XXX XXX
     var id = binder.__binderId__;
-    var mergeId = kukit.er.makeMergeId(id, namespace, name);
+    var mergeId = kukit.er.makeMergeId(id, name);
     var mergedRule = dict[mergeId];
     if (typeof(mergedRule) == 'undefined') {
         // no error, just return null.

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_interfaces.js
==============================================================================
--- 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_interfaces.js
    (original)
+++ 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_interfaces.js
    Tue Dec 25 12:58:30 2007
@@ -414,6 +414,7 @@
         binditerations.getMethodDescriptor('').register({
             eventNames: ['timeout'],
             iterName: 'Each',
+            binderClass: M,
             bindMethodName: 'bind'});
         //
         // Now finalize it.

Modified: 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_kssparser.js
==============================================================================
--- 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_kssparser.js 
    (original)
+++ 
kukit/kukit.js/branch/ree-service-layer-and-refactoring/tests/test_kssparser.js 
    Tue Dec 25 12:58:30 2007
@@ -486,7 +486,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth');
@@ -504,7 +503,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  'div#update-area');
         this.assertEquals(rule.kssSelector.name,  'timeout');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['getCurrentTime'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'getCurrentTime');
@@ -522,7 +520,6 @@
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth');
@@ -539,7 +536,6 @@
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitGetPreviousMonth');
@@ -556,8 +552,7 @@
         this.assertDictEquals(rule.parms, {});
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
-        this.assertEquals(rule.kssSelector.name,  'drag');
-        this.assertEquals(rule.kssSelector.namespace,  'dnd');
+        this.assertEquals(rule.kssSelector.name,  'dnd-drag');
         this.assertEquals(rule.kssSelector.id,  'shelve');
         action = rule.actions.content['whatever'];
         this.assertEquals(action.type, 'S');
@@ -575,8 +570,7 @@
         this.assertDictEquals(rule.parms, {});
         this.assertEquals(rule.kssSelector.css,  '#button-one');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
-        this.assertEquals(rule.kssSelector.name,  'drag');
-        this.assertEquals(rule.kssSelector.namespace,  'dnd');
+        this.assertEquals(rule.kssSelector.name,  'dnd-drag');
         this.assertEquals(rule.kssSelector.id,  'annoy-me');
         action = rule.actions.content['clickedButton'];
         this.assertEquals(action.type, 'S');
@@ -595,8 +589,7 @@
         this.assertDictEquals(rule.parms, {});
         this.assertEquals(rule.kssSelector.css, 'document');
         this.assertEquals(rule.kssSelector.isMethodSelector, true);
-        this.assertEquals(rule.kssSelector.name, 'drag');
-        this.assertEquals(rule.kssSelector.namespace, 'dnd');
+        this.assertEquals(rule.kssSelector.name, 'dnd-drag');
         this.assertEquals(rule.kssSelector.id, 'annoyMe');
         action = rule.actions.content['alert'];
         this.assertEquals(action.type, 'C');
@@ -615,8 +608,7 @@
         this.assertDictEquals(rule.parms, {});
         this.assertEquals(rule.kssSelector.css, 'document');
         this.assertEquals(rule.kssSelector.isMethodSelector, true);
-        this.assertEquals(rule.kssSelector.name, 'drag');
-        this.assertEquals(rule.kssSelector.namespace, 'dnd');
+        this.assertEquals(rule.kssSelector.name, 'dnd-drag');
         this.assertEquals(rule.kssSelector.id, 'annoyMe');
         action = rule.actions.content['alert'];
         this.assertEquals(action.type, 'C');
@@ -632,7 +624,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  'div#update-area');
         this.assertEquals(rule.kssSelector.name,  'timeout');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['getCurrentTime'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'getCurrentTime');
@@ -658,8 +649,7 @@
         this.assertDictEquals(rule.parms, {'preventdefault': 'true'});
         this.assertEquals(rule.kssSelector.css, 'document');
         this.assertEquals(rule.kssSelector.isMethodSelector, true);
-        this.assertEquals(rule.kssSelector.name, 'drag');
-        this.assertEquals(rule.kssSelector.namespace, 'dnd');
+        this.assertEquals(rule.kssSelector.name, 'dnd-drag');
         this.assertEquals(rule.kssSelector.id, 'annoyMe');
         action = rule.actions.content['namespaced-alert'];
         this.assertEquals(action.type, 'C');
@@ -681,7 +671,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '#button_1');
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['setStyle'];
         this.assertEquals(action.type, 'C');
         this.assertEquals(action.name, 'setStyle');
@@ -705,7 +694,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '#button_3');
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['setStyle'];
         this.assertEquals(action.type, 'C');
         this.assertEquals(action.name, 'setStyle');
@@ -727,7 +715,6 @@
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitGetPreviousMonth');
@@ -748,7 +735,6 @@
         this.assertEquals(rule.kssSelector.css, '#button-one');
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.name, 'click');
-        this.assertEquals(rule.kssSelector.namespace, null);
         this.assertEquals(rule.kssSelector.id, null);
         this.assertEquals(rule.kssSelector.ppid.methodName, 'kssAttr');
         this.assertListEquals(rule.kssSelector.ppid.args, ['widannoy']);
@@ -784,7 +770,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '.inlineEditable');
         this.assertEquals(rule.kssSelector.name,  'blur');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse'];
         this.assertEquals((typeof(action) != 'undefined'), true);
         this.assertEquals(action.type, 'S');
@@ -819,7 +804,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '.inlineEditable');
         this.assertEquals(rule.kssSelector.name,  'blur');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['default'];
         this.assertEquals((typeof(action) != 'undefined'), true);
         this.assertEquals(action.error, 'errors');
@@ -840,8 +824,7 @@
         this.assertEquals(parser.finished, true);
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a');
-        this.assertEquals(parser.kssSelector.name, 'drag');
-        this.assertEquals(parser.kssSelector.namespace, 'dnd');
+        this.assertEquals(parser.kssSelector.name, 'dnd-drag');
         this.assertEquals(parser.kssSelector.id, 'hello');
     };
     
@@ -852,8 +835,7 @@
         this.assertEquals(parser.finished, true);
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a');
-        this.assertEquals(parser.kssSelector.name, 'drag');
-        this.assertEquals(parser.kssSelector.namespace, 'dnd');
+        this.assertEquals(parser.kssSelector.name, 'dnd-drag');
         this.assertEquals(parser.kssSelector.id, 'hello');
 
         var txt= "a:dnd-drag-toomuch(hello)";
@@ -869,8 +851,7 @@
         parser = new kukit.kssp.KssSelector(cursor, null, true);
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, '  a div#id');
-        this.assertEquals(parser.kssSelector.name, 'drag');
-        this.assertEquals(parser.kssSelector.namespace, 'dnd');
+        this.assertEquals(parser.kssSelector.name, 'dnd-drag');
         this.assertEquals(parser.kssSelector.id, 'hello');
 
         // We do not allow space here 
@@ -891,7 +872,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a div#id');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         txt= "a div.class:click ";
         cursor = new kukit.tk.Cursor(txt);
@@ -900,7 +880,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a div.class');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         txt= "a:click ";
         cursor = new kukit.tk.Cursor(txt);
@@ -909,7 +888,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         // two params: not allowed
         txt= "a:click('hello', bello)";
@@ -951,7 +929,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 
"a[href=hello].class:lang(hu) div#id");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         txt= "a[href=hello].class:lang(hu) div#id:click(hello) ";
         cursor = new kukit.tk.Cursor(txt);
@@ -960,7 +937,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 
"a[href=hello].class:lang(hu) div#id");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, 'hello');
 
         txt= "   a:lang(hu) click ";
@@ -977,7 +953,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, "   a:lang(hu-uh) b");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         // Comment in the end
         txt= "   a:lang(hu-uh) b:click/*comment here*/";
@@ -987,7 +962,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, "   a:lang(hu-uh) b");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         // Should be ok.
         txt= "a:lang(hu)/*comment here*/b:click ";
@@ -996,7 +970,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, "a:lang(hu)/*comment 
here*/b");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
   
         // Should be ok.
         txt= "a:lang(hu) click/*comment here*/b:load ";
@@ -1006,7 +979,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, "a:lang(hu) click/*comment 
here*/b");
         this.assertEquals(parser.kssSelector.name, 'load');
-        this.assertEquals(parser.kssSelector.namespace, null);
 
         txt= "a:click:clack ";
         cursor = new kukit.tk.Cursor(txt);
@@ -1039,7 +1011,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, " no-document");
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, "hello");
 
             
@@ -1052,7 +1023,6 @@
         this.assertEquals(parser.kssSelector.isMethodSelector, true);
         this.assertEquals(parser.kssSelector.css, 'document');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, 'hello');
 
         txt= " document:dnd-drag(hello)  ";
@@ -1061,8 +1031,7 @@
         this.assertEquals(parser.finished, true);
         this.assertEquals(parser.kssSelector.isMethodSelector, true);
         this.assertEquals(parser.kssSelector.css, 'document');
-        this.assertEquals(parser.kssSelector.name, 'drag');
-        this.assertEquals(parser.kssSelector.namespace, 'dnd');
+        this.assertEquals(parser.kssSelector.name, 'dnd-drag');
         this.assertEquals(parser.kssSelector.id, 'hello');
  
         txt= "document";
@@ -1083,7 +1052,6 @@
         this.assertEquals(parser.kssSelector.isMethodSelector, true);
         this.assertEquals(parser.kssSelector.css, 'behaviour');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, 'hello');
 
     }
@@ -1093,6 +1061,10 @@
         cursor = new kukit.tk.Cursor(txt);
         this.assertParsingError(kukit.kssp.KssSelector, cursor, null, true,
             'Error : undefined event [clack].');
+        txt= " div#x:clack(hello) ";
+        cursor = new kukit.tk.Cursor(txt);
+        this.assertParsingError(kukit.kssp.KssSelector, cursor, null, true,
+            'Error : undefined event [clack].');
         txt= " document:clack(hello) ";
         cursor = new kukit.tk.Cursor(txt);
         this.assertParsingError(kukit.kssp.KssSelector, cursor, null, true,
@@ -1147,8 +1119,7 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
     };
     
@@ -1161,14 +1132,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
 
     };
 
@@ -1181,14 +1150,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
     };
 
     this.testSingleSelectorWithCommaInDoubleQuoteStringInSelector = function() 
{
@@ -1200,8 +1167,7 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a[value="Hi, I am a comma"]');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
     };
 
@@ -1214,8 +1180,7 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, "a[value='Hi, I am a comma']");
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
     };
 
@@ -1228,14 +1193,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a[value="Hi, I am a comma"]');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
     };
 
     this.testMultipleSelectorsWithCommaInSingleQuoteStringInSelector = 
function() {
@@ -1247,14 +1210,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, "a[value='Hi, I am a comma']");
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
     };
 
     this.testMultipleSelectorsWithCommentAndNewline = function() {
@@ -1266,14 +1227,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
     };
 
     this.testMultipleSelectorsWithNewline = function() {
@@ -1285,14 +1244,12 @@
         var kssSelector = parser.selectors[0];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'a');
-        this.assertEquals(kssSelector.name, 'drag');
-        this.assertEquals(kssSelector.namespace, 'dnd');
+        this.assertEquals(kssSelector.name, 'dnd-drag');
         this.assertEquals(kssSelector.id, 'hello');
         var kssSelector = parser.selectors[1];
         this.assertEquals(kssSelector.isEventSelector, true);
         this.assertEquals(kssSelector.css, 'div a');
         this.assertEquals(kssSelector.name, 'click');
-        this.assertEquals(kssSelector.namespace, null);
     };
 
     this.testSingleSelectorWithFirstComma = function() {
@@ -1349,7 +1306,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth');
@@ -1361,7 +1317,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '.inlineEditable');
         this.assertEquals(rule.kssSelector.name,  'blur');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth');
@@ -1393,7 +1348,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '#calendar-previous a');
         this.assertEquals(rule.kssSelector.name,  'click');
-        this.assertEquals(rule.kssSelector.namespace,  null);
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
         this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth');
@@ -1405,7 +1359,6 @@
         this.assertEquals(rule.kssSelector.isEventSelector, true);
         this.assertEquals(rule.kssSelector.css,  '.inlineEditable');
         this.assertEquals(rule.kssSelector.name,  'keydown');
-        this.assertEquals(rule.kssSelector.namespace,  null);
 
         action = rule.actions.content['kukitresponse/kukitGetPreviousMonth'];
         this.assertEquals(action.type, 'S');
@@ -1458,7 +1411,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, null);
         this.assertEquals(parser.kssSelector.ppid.methodName, 'kssAttr');
         this.assertListEquals(parser.kssSelector.ppid.args, ['hello']);
@@ -1472,7 +1424,6 @@
         this.assertEquals(parser.kssSelector.isEventSelector, true);
         this.assertEquals(parser.kssSelector.css, 'a');
         this.assertEquals(parser.kssSelector.name, 'click');
-        this.assertEquals(parser.kssSelector.namespace, null);
         this.assertEquals(parser.kssSelector.id, null);
         this.assertEquals(parser.kssSelector.ppid.methodName, 'kssAttr');
         this.assertListEquals(parser.kssSelector.ppid.args, ['hello', 'true']);
@@ -1485,6 +1436,17 @@
             'Wrong event selector : [,] is not expected before the closing 
parenthesis. :<EVENTNAME>(<ID>) can have only one parameter.', 000);
     };
 
+    
this.testValueProvidersInEventIdentificationCannotStandWithSpecialSelectors = 
function() {
+        txt= " document:clack(kssAttr(hello)) ";
+        cursor = new kukit.tk.Cursor(txt);
+        this.assertParsingError(kukit.kssp.KssSelector, cursor, null, true,
+            'KssSelectorError: KssSpecialSelector [document] must not stand 
with an event id acquired by value provider [kssAttr]');
+        txt= " behaviour:clack(kssAttr(hello)) ";
+        cursor = new kukit.tk.Cursor(txt);
+        this.assertParsingError(kukit.kssp.KssSelector, cursor, null, true,
+            'KssSelectorError: KssSpecialSelector [behaviour] must not stand 
with an event id acquired by value provider [kssAttr]');
+    };
+
 };
 
 kukit.KssParserSelectorsTestCase.prototype = new kukit.KssParserTestCaseBase;
_______________________________________________
Kukit-checkins mailing list
[email protected]
http://codespeak.net/mailman/listinfo/kukit-checkins

Reply via email to