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