From jvloothuis at codespeak.net Sun Aug 5 10:28:43 2007 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Sun, 5 Aug 2007 10:28:43 +0200 (CEST) Subject: [KSS-checkins] r45497 - in kukit/kss.core/trunk/kss/core: . pluginregistry/browser tests Message-ID: <20070805082843.22F5180B3@code0.codespeak.net> Author: jvloothuis Date: Sun Aug 5 10:28:41 2007 New Revision: 45497 Modified: kukit/kss.core/trunk/kss/core/actionwrapper.py kukit/kss.core/trunk/kss/core/browserview.py kukit/kss.core/trunk/kss/core/commands.py kukit/kss.core/trunk/kss/core/kssview.py kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py kukit/kss.core/trunk/kss/core/tests/test_browserview.py Log: Changed all occurences of request.RESPONSE to request.response in order to get better Zope 3 compatibility (as Philipp requested) Modified: kukit/kss.core/trunk/kss/core/actionwrapper.py ============================================================================== --- kukit/kss.core/trunk/kss/core/actionwrapper.py (original) +++ kukit/kss.core/trunk/kss/core/actionwrapper.py Sun Aug 5 10:28:41 2007 @@ -97,7 +97,6 @@ tests. >>> from zope.publisher.browser import TestRequest - >>> from zope.publisher.http import HTTPResponse >>> class MyView(KSSView): ... @kssaction @@ -109,7 +108,6 @@ ... raise KSSExplicitError, 'The error' >>> request = TestRequest() - >>> request.RESPONSE = HTTPResponse() >>> view = MyView(None, request) Set debug-mode command rendering so we can see the results in a Modified: kukit/kss.core/trunk/kss/core/browserview.py ============================================================================== --- kukit/kss.core/trunk/kss/core/browserview.py (original) +++ kukit/kss.core/trunk/kss/core/browserview.py Sun Aug 5 10:28:41 2007 @@ -1,4 +1,3 @@ -# -*- coding: UTF-8 -*- # Copyright (c) 2006-2007 # Authors: KSS Project Contributors (see docs/CREDITS.txt) # @@ -42,7 +41,7 @@ 'Attach the commands on the response' # get rid of newlines payload = payload.replace('\n', ' ') - self.request.RESPONSE.setHeader(header_name, payload) + self.request.response.setHeader(header_name, payload) # coherent naming KSS # deprecate Kss Modified: kukit/kss.core/trunk/kss/core/commands.py ============================================================================== --- kukit/kss.core/trunk/kss/core/commands.py (original) +++ kukit/kss.core/trunk/kss/core/commands.py Sun Aug 5 10:28:41 2007 @@ -1,4 +1,3 @@ -# -*- coding: ISO-8859-15 -*- # Copyright (c) 2005-2007 # Authors: KSS Project Contributors (see docs/CREDITS.txt) # @@ -27,7 +26,6 @@ from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile from interfaces import IKSSCommands, IKSSCommand, IKSSParam, IKSSCommandView from unicode_quirks import force_unicode -from zope.interface import Interface import zope.component from parsers import XmlParser, HtmlParser from pluginregistry import checkRegisteredCommand_old @@ -197,5 +195,5 @@ # Always output text/xml to make sure browsers but the data in the # responseXML instead of responseText attribute of the # XMLHttpRequestobject. - self.request.RESPONSE.setHeader('Content-type', 'text/xml;charset=utf-8') + self.request.response.setHeader('Content-type', 'text/xml;charset=utf-8') return result Modified: kukit/kss.core/trunk/kss/core/kssview.py ============================================================================== --- kukit/kss.core/trunk/kss/core/kssview.py (original) +++ kukit/kss.core/trunk/kss/core/kssview.py Sun Aug 5 10:28:41 2007 @@ -156,9 +156,9 @@ return self.commands.render(self.request) def cancelRedirect(self): - if self.request.RESPONSE.getStatus() in (302, 303): + if self.request.response.getStatus() in (302, 303): # Try to not redirect if requested - self.request.RESPONSE.setStatus(200) + self.request.response.setStatus(200) def getCommands(self): return self.commands Modified: kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py ============================================================================== --- kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py (original) +++ kukit/kss.core/trunk/kss/core/pluginregistry/browser/develview.py Sun Aug 5 10:28:41 2007 @@ -49,11 +49,11 @@ def set(self): 'XXX' - self.request.RESPONSE.setCookie(COOKIE_NAME, '1', path='/') + self.request.response.setCookie(COOKIE_NAME, '1', path='/') def unset(self): 'XXX' - self.request.RESPONSE.expireCookie(COOKIE_NAME, path='/') + self.request.response.expireCookie(COOKIE_NAME, path='/') _ui = ViewPageTemplateFile('develui.pt', content_type='text/html;charset=utf-8') Modified: kukit/kss.core/trunk/kss/core/tests/test_browserview.py ============================================================================== --- kukit/kss.core/trunk/kss/core/tests/test_browserview.py (original) +++ kukit/kss.core/trunk/kss/core/tests/test_browserview.py Sun Aug 5 10:28:41 2007 @@ -1,4 +1,3 @@ -# -*- coding: ISO-8859-15 -*- # Copyright (c) 2005-2007 # Authors: KSS Project Contributors (see docs/CREDITS.txt) # @@ -28,7 +27,7 @@ view = context.restrictedTraverse('@@kss_view') self.assert_(view is not None) view.attach_error(err_type='TheError', err_value='the_<>message\n\n') - response = view.request.RESPONSE + response = view.request.response header = response.getHeader('x-ksscommands') self.assert_('the_&lt;&gt;message' in header) # no < > in the message self.assert_('\n' not in header) # no /n in the payload: would destroy the page From kukit-checkins at codespeak.net Fri Aug 10 19:58:06 2007 From: kukit-checkins at codespeak.net (kukit-checkins at codespeak.net) Date: Fri, 10 Aug 2007 19:58:06 +0200 (CEST) Subject: [KSS-checkins] Message-id : 05257368863800046 - NEW Fall Collection Message-ID: <20070810125936.3719.qmail@ppp85-140-222-16.pppoe.mtu-net.ru> An HTML attachment was scrubbed... URL: http://codespeak.net/pipermail/kukit-checkins/attachments/20070810/416437a6/attachment.htm From reebalazs at codespeak.net Sun Aug 12 10:03:53 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 12 Aug 2007 10:03:53 +0200 (CEST) Subject: [KSS-checkins] r45610 - kukit/kukit.js/trunk/kukit Message-ID: <20070812080353.EBC728185@code0.codespeak.net> Author: reebalazs Date: Sun Aug 12 10:03:52 2007 New Revision: 45610 Modified: kukit/kukit.js/trunk/kukit/plugin.js Log: Make the log, logDebug, alert actions do something in debug mode too. Hiding them completely is pointless anyway and just causes confusion. Modified: kukit/kukit.js/trunk/kukit/plugin.js ============================================================================== --- kukit/kukit.js/trunk/kukit/plugin.js (original) +++ kukit/kukit.js/trunk/kukit/plugin.js Sun Aug 12 10:03:52 2007 @@ -468,11 +468,11 @@ ;;; if (node != null) { ;;; nodeName = node.nodeName; ;;; } -;;; var message = oper.parms.message; +;;; kukit.E = oper.parms.message; ;;; if (oper.eventrule) { -;;; message = message + ', event=' + oper.eventrule.kss_selector.name + ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; +;;; kukit.E += ', event=' + oper.eventrule.kss_selector.name + ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; ;;; } -;;; kukit.logDebug(message); + kukit.logDebug(kukit.E); ;;; if (kukit.hasFirebug) { ;;; kukit.logDebug(oper.node); ;;; } @@ -486,11 +486,11 @@ ;;; if (node != null) { ;;; nodeName = node.nodeName; ;;; } -;;; var message = oper.parms.message; +;;; kukit.E = oper.parms.message; ;;; if (oper.eventrule) { -;;; message = message + ', event=' + oper.eventrule.kss_selector.name + ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; +;;; kukit.E += ', event=' + oper.eventrule.kss_selector.name + ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; ;;; } -;;; kukit.log(message); + kukit.log(kukit.E); }); kukit.commandsGlobalRegistry.registerFromAction('log', kukit.cr.makeGlobalCommand); @@ -501,11 +501,11 @@ ;;; if (node != null) { ;;; nodeName = node.nodeName; ;;; } -;;; var message = oper.parms.message; +;;; kukit.E = oper.parms.message; ;;; if (oper.eventrule) { -;;; message = message + ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; +;;; kukit.E += ', rule=#' + oper.eventrule.getNr() + ', node=' + nodeName; ;;; } -;;; alert(message); + alert(kukit.E); }); kukit.commandsGlobalRegistry.registerFromAction('alert', kukit.cr.makeGlobalCommand); From reebalazs at codespeak.net Tue Aug 14 11:03:03 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Tue, 14 Aug 2007 11:03:03 +0200 (CEST) Subject: [KSS-checkins] r45643 - kukit/kss.core/trunk/kss/core/tests Message-ID: <20070814090303.B104E80B3@code0.codespeak.net> Author: reebalazs Date: Tue Aug 14 11:03:03 2007 New Revision: 45643 Modified: kukit/kss.core/trunk/kss/core/tests/base.py Log: Rearranging tests, allowing that the test class helpers can be used as mixin, thus a layer can be built up for Plone without the need to inherit from the ksslayer (which _may_ be a problem) Modified: kukit/kss.core/trunk/kss/core/tests/base.py ============================================================================== --- kukit/kss.core/trunk/kss/core/tests/base.py (original) +++ kukit/kss.core/trunk/kss/core/tests/base.py Tue Aug 14 11:03:03 2007 @@ -20,18 +20,14 @@ import warnings from Testing.ZopeTestCase import ZopeTestCase, FunctionalTestCase -from OFS.SimpleItem import SimpleItem from zope import interface -from zope.publisher.browser import TestRequest from zope.publisher.interfaces.browser import IBrowserRequest -from zope.app.testing import placelesssetup +#from zope.app.testing import placelesssetup import kss.core from kss.core import KSSView - - class KSSCoreLayer: @classmethod def setUp(cls): @@ -77,14 +73,14 @@ @classmethod def tearDown(cls): - placelesssetup.tearDown() + pass # placelesssetup.tearDown() class KSSLayer(KSSCoreLayer): @classmethod def setUp(cls): try: - from Products.Five.zcml import load_string, load_config + from Products.Five.zcml import load_config except ImportError: raise ImportError("KSSLayer requires Five to be installed.") load_config('meta.zcml', package=kss.core) @@ -101,8 +97,7 @@ class IDebugRequest(IBrowserRequest): 'The debug request' -class KSSViewTestCase(ZopeTestCase): - layer = KSSLayer +class KSSViewTestCaseMixin: def loadCoreConfig(self, kss_core=True): warnings.warn( @@ -122,6 +117,9 @@ request, interface.directlyProvidedBy(request) + IDebugRequest) +class KSSViewTestCase(ZopeTestCase, KSSViewTestCaseMixin): + layer = KSSLayer + class KSSViewFunctionalTestCase(FunctionalTestCase, KSSViewTestCase): 'Functional test base' From jvloothuis at codespeak.net Wed Aug 15 10:36:21 2007 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 15 Aug 2007 10:36:21 +0200 (CEST) Subject: [KSS-checkins] r45662 - kukit/docs/introducing_kss/trunk Message-ID: <20070815083621.540DB8136@code0.codespeak.net> Author: jvloothuis Date: Wed Aug 15 10:36:20 2007 New Revision: 45662 Added: kukit/docs/introducing_kss/trunk/6-pitfalls.txt Log: Added a document which will contain some things to watch out for with suggested workarounds Added: kukit/docs/introducing_kss/trunk/6-pitfalls.txt ============================================================================== --- (empty file) +++ kukit/docs/introducing_kss/trunk/6-pitfalls.txt Wed Aug 15 10:36:20 2007 @@ -0,0 +1,15 @@ +Internet Explorer problems +========================== + +Tables +------ + +Do not try to replace the tbody or thead. Internet Explorer will not +give an error when you do this. It just will not show the update. The +best way to avoid this is to replace the whole table. + +Select options +-------------- + +It is not possible in IE to replace or add options to a select +box. The only way to handle this is to replace the whole select. From reebalazs at codespeak.net Thu Aug 16 10:37:37 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 10:37:37 +0200 (CEST) Subject: [KSS-checkins] r45698 - kukit/kss.core/trunk/kss/core/plugins Message-ID: <20070816083737.AB8468139@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 10:37:35 2007 New Revision: 45698 Modified: kukit/kss.core/trunk/kss/core/plugins/configure.zcml Log: By default, disable the inclusion of the old 'dad' plugin Modified: kukit/kss.core/trunk/kss/core/plugins/configure.zcml ============================================================================== --- kukit/kss.core/trunk/kss/core/plugins/configure.zcml (original) +++ kukit/kss.core/trunk/kss/core/plugins/configure.zcml Thu Aug 16 10:37:35 2007 @@ -14,6 +14,7 @@ - + + From reebalazs at codespeak.net Thu Aug 16 12:42:55 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 12:42:55 +0200 (CEST) Subject: [KSS-checkins] r45702 - in kukit/kukit.js/trunk/3rd_party: . firebuglite Message-ID: <20070816104255.172738132@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 12:42:53 2007 New Revision: 45702 Added: kukit/kukit.js/trunk/3rd_party/LICENSE.txt kukit/kukit.js/trunk/3rd_party/firebuglite/ kukit/kukit.js/trunk/3rd_party/firebuglite/errorIcon.png (contents, props changed) kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.css kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.html kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.js kukit/kukit.js/trunk/3rd_party/firebuglite/firebugx.js kukit/kukit.js/trunk/3rd_party/firebuglite/infoIcon.png (contents, props changed) kukit/kukit.js/trunk/3rd_party/firebuglite/warningIcon.png (contents, props changed) Modified: kukit/kukit.js/trunk/3rd_party/base2-dom-fp.js Log: Add Firebug lite Added: kukit/kukit.js/trunk/3rd_party/LICENSE.txt ============================================================================== --- (empty file) +++ kukit/kukit.js/trunk/3rd_party/LICENSE.txt Thu Aug 16 12:42:53 2007 @@ -0,0 +1,5 @@ + +Third party modules come with different licenses, see individual files + +Firebug Lite is licensed under Mozilla Public License 1.1 + Modified: kukit/kukit.js/trunk/3rd_party/base2-dom-fp.js ============================================================================== --- kukit/kukit.js/trunk/3rd_party/base2-dom-fp.js (original) +++ kukit/kukit.js/trunk/3rd_party/base2-dom-fp.js Thu Aug 16 12:42:53 2007 @@ -1 +1 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('q Y={};B l(){q G=l(){};G.I={v:l(c){u(y.A>1){q d=m[c];q e=y[1];u(E e=="l"&&d&&/\\6B\\b/.10(e)){q f=e;e=l(){q a=m.x;m.x=d;q b=f.N(m,y);m.x=a;t b};e.4c=f;e.2q=d}m[c]=e}H u(c){q g=G.I.v;u(G.2H){q h,i=0,57=["T","1s","50"];1c(h=57[i++])u(c[h]!=1N.I[h]){g.X(m,h,c[h])}}H u(E m!="l"){g=m.v||g}13(h 2u c)u(!1N.I[h]){g.X(m,h,c[h])}}t m},x:G};G.v=l(b,c){q d=G.I.v;G.2H=14;q e=B m;d.X(e,b);26 G.2H;q T=e.T;q f=e.T=l(){u(!G.2H){u(m.3B||m.T==f){m.3B=14;T.N(m,y);26 m.3B}H{q a=y[0];u(a!=F){(a.v||d).X(a,e)}t a}}};13(q i 2u G)f[i]=m[i];f.2q=m;f.x=G.x;f.I=e;f.1s=m.1s;d.X(f,c);u(E f.P=="l")f.P();t f};G=G.v({T:l(){m.v(y[0])}},{2q:1N,x:G,18:l(a){u(E a=="l"){a(m.I)}H{m.I.v(a)}t m}});q $31=36.$31||{};q K=l(a){t a};q 1P=l(a,b,c){u(!a){1K B(c||36.3q)(b||"5q 5m.");}};q 3m=l(a,b,c){u(b){q d=E b=="l"?1g(a,b):E a==b;1P(d,c||"48 2G.",47)}};q D=l(c){q d=y;t W(c).M(/%([1-9])/g,l(a,b){t b=0;i--){u(a[i]===b)t i}t-1},2B:l(a,b){q c=m.1S(a,b);u(c!=-1)m.3S(a,c);t b},3S:l(a,b){q c=a[b];m.2y(a,b,1);t c}});1i.I.C=l(a,b){C.1r(m,a,b)};1i.18(1n);C("3l,32,6D,23,3Q,6y,S,38,2y,6t".1x(","),l(b){1i[b]=l(a){t 1r.I[b].N(a,S(y,1))}});q 1C=l(){t 1i(m.T==1i?1r.N(F,y):y[0])};1C.I=1i.I;C(1i,l(a,b,c){u(1r[b]){1i[b]=1r[b];26 1i.I[b]}1C[b]=1i[b]});q 1I="#"+51(B 4S);q Z=1I+"3L";q 1R=1I+"4V";q 35=G.v({T:l(a){m[Z]=B 1C;m[1R]={};m.3N(a)},3e:l(){t B m.T(m)},2b:$31.2b||B 1v("k",D("t(\'%1\'+k)2u m[\'%2\']",1I,1R)),1Q:l(a){t m[1R][1I+a]},C:l(b,c){C(m[Z],l(a){b.X(c,m.1Q(a),a,m)},m)},3L:l(a,b){28(y.A){V 0:t m[Z].3e();V 1:t m[Z][a];2Z:t m[Z].S(a,b)}},3N:l(d){C(y,l(c){C(c,l(a,b){m.2d(b,a)},m)},m);t m},2B:l(a){q b=m.1Q(a);m[Z].2B(W(a));26 m[1R][1I+a];t b},2d:l(a,b){u(y.A==1)b=a;u(!m.2b(a)){m[Z].23(W(a))}m[1R][1I+a]=b;t b},1s:l(){t W(m[Z])},6h:l(a){t m.3N.N(m.3e(),y)},4V:l(a,b){q c=m.2L(K);28(y.A){V 0:t c;V 1:t c[a];2Z:t c.S(a,b)}}});35.18(1n);q 3G=35.v({2X:l(a,b){1P(!m.2b(a),"4O 4N.");t m.2d.N(m,y)},4K:l(){t m[Z].A},1S:l(a){t m[Z].1S(W(a))},3X:l(a,b,c){1P(!m.2b(b),"4O 4N.");m[Z].3X(a,W(b));t m.2d.N(m,S(y,1))},1U:l(a){t m.1Q(m[Z][a])},3S:l(a){t m.2B(m[Z][a])},3Q:l(){m[Z].3Q();t m},38:l(c){u(c){q d=m;m[Z].38(l(a,b){t c(d.1Q(a),d.1Q(b),a,b)})}H m[Z].38();t m},2d:l(a,b){u(y.A==1)b=a;b=m.T.2M.N(m.T,y);t m.x(a,b)},68:l(a,b){1P(a1)c[i-1]="y["+i+"]";1A("q 2i=5i[4c]("+c+")");t 2i}}}});q 2h=2f.v(F,{v:l(a,b){q c=m.L;u(b){c=b.L||c;26 b.L}q d=m.x(a,b);v(d,"L",c);t d}});2h.L=l(a){t m(a)};q R=1l.v({2F:l(a){t m.1T(a).2E},2D:l(a){1c(a&&(a=a.46)&&!m.20(a))3g;t a},45:l(a){q b=0;1c(a&&(a=a.44))b++;t b},2g:l(a){t a.3f},43:l(a){1c(a&&(a=a.44)&&!m.20(a))3g;t a},42:l(a){t a.6N},5e:l(a){a=a.6M;1c(a){u(a.1W==3||m.20(a))t J;a=a.46}t 14},"@U":{42:l(a){t a.6L},2F:l(a){t m.1T(a).6K},"@1H":{2g:l(a){t a.3f||a.11}}}},{1p:l(a,b){t m.40(a)?a==m.2g(b):a!=b&&a.1p(b)},1T:l(a){t m.40(a)?a:m.2g(a)},40:l(a){t 34(a&&a.3Z)},20:l(a){t 34(a&&a.5c)},"@!(1b.1p)":{1p:l(a,b){1c(b&&(b=b.3d)&&a!=b)3g;t!!b}},"@1H":{20:l(a){t m.x(a)&&a.3c!="!"}}});q 2l=2h.v({"@!(1b.59)":{59:l(a,b){u(R.1p(a,b)){t 4|16}H u(R.1p(b,a)){t 2|8}q c=m.$3b(a);q d=m.$3b(b);u(cd){t 2}t 0}}},{$3b:l(a){q b=0;1c(a){b=R.45(a)+"."+b;a=a.3d}t b},"@(1b.1M)":{$3b:l(a){t a.1M}}});q 1u=2l.v(F,{L:l(a){m.x(a);2K.L(a.2E);t a}});1u.2j("4i");q 1D=2l.v({"@U[67]":{3a:l(a,b){u(a.1q===1J||b=="56"||b=="3T"){t m.x(a,b,2)}q c=a.6E(b);t c&&c.55?c.54:F}},"@1H.+2A":{3a:l(a,b){u(a.1q===1J||b=="56"||b=="3T"){t m.x(a,b,2)}q c=a.5c[m.$25[b.53()]||b];t c?c.55?c.54:F:m.x(a,b)}}},{$25:"",P:l(){q a=m.$25.53().1x(",");q b=m.$25.1x(",");m.$25=1C.5f(a,b)},"@1H.+2A":{$25:"6C,6A,6z,6x,6w,6v,6u,6s,6r,6q"}});1D.2j("4Z");v(2m,{L:l(a){28(a.1W){V 1:t 1D.L(a);V 9:t 1u.L(a);2Z:t 2l.L(a)}t a}});q 3O={};q 1O=l(a){u(a){q b=1m(a);u(!3O[b]){2m.L(a);3O[b]=14}}t a};q 2K=2h.v();q 1V=2h.v({"@!(11.2c)":{3M:l(a,b,c,d){a.2G=b;a.4Y=c;a.3H=d},"@U":{3M:l(a){x(m,y);a.4X=!a.4Y},4W:l(a){u(a.3H!==J){a.2i=J}},6p:l(a){a.4X=14}}}},{"@U.+6o":{L:l(a){t m.x(v({4W:l(){u(m.3H!==J){m.2i=J}}},a))}},"@U.+2A":{L:l(a){m.x(a);a.3J=a.6n;t a}}});q 1y=2f.v({"@!(1b.1k)":{1k:l(a,b,c){q d=1m(a);q e=c.3p||1m(c);q f=m.$1w[d];u(!f)f=m.$1w[d]={};q g=f[b];q h=a["4T"+b];u(!g){g=f[b]={};u(h)g[0]=h}g[e]=c;u(h!==1J){a["4T"+b]=m.$33}},30:l(a,b){m.$33.X(a,b)},6m:l(a,b,c){q d=m.$1w[a.1L];u(d&&d[b]){26 d[b][c.1L]}},"@U.+2A":{1k:l(a,b,c){m.x(a,b,m.1O(c,a))},30:l(a,b){b.3J=a;2C{a.6l(b.2G,b)}2k(1B){m.x(a,b)}}}}},{1O:l(a,b){q c=l(){t a.N(b,y)};c.3p=1m(a);t c},"@!(1b.1k)":{$1w:{},$33:l(a){q b=14;q c=1y.$1w[m.1L];u(c){a=1V.L(a);q d=c[a.2G];13(q i 2u d){b=d[i].X(m,a);u(a.2i===J)b=J;u(b===J)4b}}t b},"@U":{$33:l(a){u(!a){q b=3U.3n(m)||R.2F(m);a=b.6k}t m.x(a)},"6j":{1O:l(a,b){t 19.$L(a,b)}}}}});v(1y,{1k:l(a,b,c,d){u(d)c=m.1O(c,d);m.x(a,b,c,J)},30:l(a,b){u(E b=="17"){q c=b;q d=R.1T(a);b=2J.2c(d,"4R");1V.3M(b,c,J,J)}m.x(a,b)}});q 2J=2f.v({"@!(11.2c)":{2c:l(a){t 1V.L({})},"@(11.4Q)":{2c:l(a){t 1V.L(a.4Q())}}},"@5a":{2c:l(a,b){t m.x(a,b=="4R"?"6g":b)}}});q 1f=B G({2Y:J,29:l(){u(!1f.2Y){1f.2Y=14;6f("Y.1y.30(11,\'1f\')",0)}},P:l(){1y.1k(11,"1f",l(){1f.2Y=14});1y.1k(36,"4P",1f.29)},"@(1k)":{P:l(){m.x();1k("4P",1f.29,J)}},"@(2N)":{P:l(){m.x();2N("6e",1f.29)}},"@U.+2A":{P:l(){m.x();11.6d("<4M 2W=4L 6c 3T=//:><\\/4M>");11.1w.4L.6a=l(){u(m.4J=="4I"){m.69();1f.29()}}}},"@5a":{P:l(){m.x();q a=66(l(){u(/65|4I/.10(11.4J)){63(a);1f.29()}},62)}}});1f.P();q 3i=2f.v({"@!(4G)":{4G:l(a,b){t b.60}}},{5Y:l(c){t W(c).M(/\\-([a-z])/g,l(a,b){t b.3F()})}});v(1u,{"@!(11.2E)":{L:l(a){m.x(a);a.2E=R.2F(a);t a}}});q 2T=2f.v({"@!(1b.4E)":{4E:l(a,b){t m.3E(a,"."+b.32(",."))}},"@!(1b.3s)":{3E:l(a,b){t B 1a(b).1h(a)},3s:l(a,b){t B 1a(b).1h(a,1)}}});v(2T.I,{3E:l(b){t v(m.x(b),"1U",l(a){t 1O(m.x(a))})},3s:l(a){t 1O(m.x(a))}});q 3k=2T.v();q 3j=2T.v({"@!(1b.4C)":{4C:l(a,b){t B 1a(b).10(a)}}});q 2I=G.v({T:l(b){b=b||[];m.A=b.A;m.1U=l(a){t b[a]}},A:0,C:l(a,b){2C{q c=m.A;13(q i=0;i](\\*|[\\w-]+))([^: >+~]*)(:\\w+-2r(\\([^)]+\\))?)([^: >+~]*)/,"$1$3$6$4")},1F:F,2Q:14,3C:l(b){q c=m.4x=[];t m.4v(m.D(W(b).M(1G.4u,l(a){c.23(a.S(1,-1));t"%"+c.A})))},D:l(a){t a.M(1G.4t,"$1").M(1G.4F,"$1 $2").M(1G.4s,"$1*$2")},4v:l(a){t m.2R.1h(a.M(1G.4r,">* "))},3w:l(a){t m.1F[a]||(m.1F[a]=m.2V(m.1h(m.3C(a))))},2V:l(a){t D(a,m.4x)}},{4u:/(["\'])[^\\1]*\\1/g,4s:/([\\s>+~,]|[^(]\\+|^)([#.:@])/g,4F:/(^|,)([^\\s>+~])/g,4t:/\\s*([\\s>+~(),]|^|$)\\s*/g,4r:/\\s\\*\\s/g,4q:l(c,d,e,f,g,h,i,j){f=/3y/i.10(c)?f+"+1-":"";u(!5K(d))d="5J+"+d;H u(d=="5H")d="2n";H u(d=="5G")d="2n+1";d=d.1x(/n\\+?/);q a=(d[0]=="")?1:(d[0]=="-")?-1:3A(d[0]);q b=3A(d[1])||0;q g=a<0;u(g){a=-a;u(a==1)b++}q k=D(a==0?"%3%7"+(f+b):"(%4%3-%2)%6%1%6b%5%4%3>=%2",a,b,e,f,h,i,j);u(g)k=g+"("+k+")";t k}});1a.3v={"=":"%1==\'%2\'","~=":/(^| )%1( |$)/,"|=":/^%1(-|$)/,"^=":/^%1/,"$=":/%1$/,"*=":/%1/};1a.3v[""]="%1!=F";1a.4p={"4o":"e%1.4o","1p":"R.42(e%1).1S(\'%2\')!=-1","3u":"e%1.3u","5F":"R.5e(e%1)","5E":"e%1.3u===J","5D-2r":"!R.43(e%1)","3y-2r":"!R.2D(e%1)","5C-2r":"!R.43(e%1)&&!R.2D(e%1)","4m":"e%1==R.1T(e%1).3Z"};B l(){q U=19.22("U");q 1H=19.22("1H");q 2s=19.22("(1b.1M)");q 3t="q p%2=0,i%2,e%2,n%2=e%1.";q 2x=2s?"e%1.1M":"1m(e%1)";q 4l="q g="+2x+";u(!p[g]){p[g]=1;";q 4k="r[r.A]=e%1;u(s)t e%1;";q 4U="1Z=l(4j,s){1Y={};q r=[],p={},1o=[%1],"+"d=R.1T(4j),c=d.4h?\'3F\':\'1s\';";q 3P=U?l(a,b){q c=a.1w[b]||F;u(!c||c.2W==b)t c;13(q i=0;i(\\\\*|[\\\\w-]+)":l(a,b){q c=U&&1z;12=b=="*";q d=3t;d+=c?"52":"3r";u(!12&&c)d+=".3R(\'%3\')";d+=";13(i%2=0;(e%2=n%2[i%2]);i%2++){";u(12){d+="u(e%2.1W==1){";12=1H}H{u(!c)d+="u(e%2.39==\'%3\'[c]()){"}t D(d,O++,1z=O,b)},"([+~])(\\\\*|[\\\\w-]+)":l(a,b,c){q d="";u(12&&U)d+="u(e%1.3c!=\'!\'){";12=J;q e=b=="+";u(!e){d+="1c(";2o=2}d+="e%1=R.2D(e%1)";d+=(e?";":"){")+"u(e%1";u(c!="*")d+="&&e%1.39==\'%2\'[c]()";d+="){";t D(d,O,c)},"#([\\\\w-]+)":l(a,b){12=J;q c="u(e%1.2W==\'%2\'){";u(1z)c+=D("i%1=n%1.A;",1z);t D(c,O,b)},"\\\\.([\\\\w-]+)":l(a,b){12=J;1o.23(B 15("(^|\\\\s)"+2t(b)+"(\\\\s|$)"));t D("u(1o[%2].10(e%1.1q)){",O,1o.A-1)},":2S\\\\((\\\\*|[\\\\w-]+)?([^)]*)\\\\)":l(a,b,c){q d=(b&&b!="*")?D("u(e%1.39==\'%2\'[c]()){",O,b):"";d+=2e.1h(c);t"u(!"+d.S(2,-1).M(/\\)\\{u\\(/g,"&&")+"){"},":5y(-3y)?-2r\\\\(([^)]+)\\\\)":l(a,b,c){12=J;b=D("1Y[p%1].A",O);q d="u(p%1!==e%1.3d.";d+=2s?"1M":"1L";d+=")p%1=4g(e%1.3d);q i=1Y[p%1]["+2x+"];u(";t D(d,O)+1G.4q(a,c,"i",b,"!","&&","%","==")+"){"},":([\\\\w-]+)(\\\\(([^)]+)\\\\))?":l(a,b,c,d){t"u("+D(1a.4p[b],O,d||"")+"){"},"\\\\[([\\\\w-]+)\\\\s*([^=]?=)?\\\\s*([^\\\\]]*)\\\\]":l(a,b,c,d){u(c){u(b=="5x")b=="1q";H u(b=="13")b=="5w";b=D("(e%1.3a(\'%2\')||e%1[\'%2\'])",O,b)}H{b=D("1D.3a(e%1,\'%2\')",O,b)}q e=1a.3v[c||""];u(1g(e,15)){1o.23(B 15(D(e.2O,2t(2e.2V(d)))));e="1o[%2].10(%1)";d=1o.A-1}t"u("+D(e,b,d)+"){"}});1a.3w=l(f){u(!1F[f]){1o=[];1Z="";q g=2e.3C(f).1x(",");C(g,l(a,b){O=1z=2o=0;q c=2e.1h(a);u(12&&U){c+=D("u(e%1.3c!=\'!\'){",O)}q d=(b||2o>1)?4l:"";c+=D(d+4k,O);q e=2v(c,/\\{/g).A;1c(e--)c+="}";1Z+=c});1A(D(4U,1o)+2e.2V(1Z)+"t r}");1F[f]=1Z}t 1F[f]}};2K.18(3i);1u.18(3k);1u.18(2J);1u.18(1y);1D.18(3j);1D.18(1y);q 3h=1u.v({"@!(11.1W)":{1W:9}},{"@(11.3V===1J)":{L:l(b){m.x(b);b.3V=F;b.1k("5v",l(a){b.3V=a.3J},J);t b}}});q 2z=1D.v({5u:l(a,b){u(!m.58(a,b)){a.1q+=(a.1q?" ":"")+b;t b}},58:l(a,b){q c=B 15("(^|\\\\s)"+b+"(\\\\s|$)");t c.10(a.1q)},5t:l(a,b){q c=B 15("(^|\\\\s)"+b+"(\\\\s|$)");a.1q=a.1q.M(c,"$2");t b}},{3Y:{},3R:"*",v:l(){q b=x(m,y);q c=(b.3R||"").3F().1x(",");C(c,l(a){2z.3Y[a]=b});t b},"@!(1b.3f)":{L:l(a){m.x(a);a.3f=R.2g(a);t a}}});v(2m,"L",l(a){u(E a.1q=="17"){(2z.3Y[a.3c]||2z).L(a)}H u(a.4h!==1J){3h.L(a)}H{m.x(a)}t a});1A(m.1d)};',62,423,'|||||||||||||||||||||function|this||||var|||return|if|extend||base|arguments||length|new|forEach|format|typeof|null|Base|else|prototype|false||bind|replace|apply|index|init||Traversal|slice|constructor|MSIE|case|String|call|base2|KEYS|test|document|wild|for|true|RegExp||string|implement|BOM|Selector|element|while|exports|Item|DOMContentLoaded|instanceOf|exec|IArray|name|addEventListener|Module|assignID|Enumerable|reg|contains|className|Array|toString|userAgent|Document|Function|all|split|EventTarget|list|eval|error|Array2|Element|closures|cache|Parser|MSIE5|HASH|undefined|throw|base2ID|sourceIndex|Object|_bind|assert|fetch|VALUES|indexOf|getDocument|item|Event|nodeType|Namespace|indexed|fn|isElement|RegGrp|detect|push|StopIteration|htmlAttributes|delete|imports|switch|fire|namespace|exists|createEvent|store|parser|Interface|getOwnerDocument|Binding|returnValue|createDelegate|catch|Node|DOM||dup|reduce|ancestor|child|INDEXED|rescape|in|match|version|ID|splice|HTMLElement|win|remove|try|getNextElementSibling|defaultView|getDefaultView|type|_prototyping|StaticNodeList|DocumentEvent|AbstractView|map|create|attachEvent|source|global|ignoreCase|sorter|not|NodeSelector|lang|unescape|id|add|fired|default|dispatchEvent|Legacy|join|dispatch|Boolean|Hash|window|charAt|sort|nodeName|getAttribute|getSourceIndex|tagName|parentNode|copy|ownerDocument|continue|HTMLDocument|ViewCSS|ElementSelector|DocumentSelector|concat|assertType|verify|Abstract|cloneID|Error|childNodes|matchSingle|VAR|disabled|operators|parse|base2_test|last|trim|parseInt|_constructing|escape|replacement|matchAll|toUpperCase|Collection|cancelable|callee|target|number|keys|initEvent|merge|_bound|getElementById|reverse|tags|removeAt|src|Window|activeElement|result|insertAt|bindings|documentElement|isDocument|_extend|getTextContent|getPreviousElementSibling|previousSibling|getNodeIndex|nextSibling|TypeError|Invalid|every|self|break|method|platform|gi|navigator|register|body|createElement|e0|STORE|TEST|root|alpha|checked|pseudoClasses|_nthChild|WILD_CARD|IMPLIED_ASTERISK|WHITESPACE|ESCAPE|optimise|is|_strings|STRING|IGNORE|evaluate|snapshotItem|matchesSelector|TRIM|getElementsByClassName|IMPLIED_SPACE|getComputedStyle|RESCAPE|complete|readyState|count|__ready|script|key|Duplicate|load|createEventObject|Events|Date|on|FN|values|preventDefault|cancelBubble|bubbles|setAttribute|valueOf|Number|children|toLowerCase|nodeValue|specified|href|members|hasClass|compareDocumentPosition|KHTML|max|attributes|Math|isEmpty|combine|pluck|invoke|object|filter|instantiated|be|failed|cannot|Infinity|Class|Assertion|onunload|uniqueID|removeClass|addClass|focus|htmlFor|class|nth|getElementsByTagName|span|cc_on|only|first|enabled|empty|odd|even|base2_|0n|isNaN|yet|supported|verboten|references|removeAttribute|Back|selector|CSS|valid|SyntaxError|snapshotLength|XPathResult|bounds|toCamelCase|of|currentStyle|out|100|clearInterval|Index|loaded|setInterval||storeAt|removeNode|onreadystatechange|70|defer|write|onload|setTimeout|UIEvents|union|getTimezoneOffset|Windows|event|fireEvent|removeEventListener|srcElement|mac|stopPropagation|longDesc|readOnly|maxLength|unshift|encType|tabIndex|accessKey|dateTime|shift|vAlign|rowSpan|bbase|colSpan|pop|getAttributeNode|from|operand|lastIndexOf|instanceof|insertBefore|parentWindow|innerText|firstChild|textContent|some'.split('|'),0,{})) +eval(function(p,a,c,k,e,r){var b,e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)a[c]=(r[b=e(c)]=k[c])?b:'\\x0';e=function(){return a.join('|')||'^'};k=[function(e){return r[e]}];c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b('+e(c)+')\\b','g'),k[c]);return p}('u U={1v:"U",4I:"0.9 (4J)",2c:q,1h:C o(1w){u 2c=1w;u 4K/*@3S=@3T@*/;u 30=1w.30;v(1w.31){u 1l=10.3U("span");u 1U=31.1U+" "+31.userAgent;v(!4K)1U=1U.D(/1m\\s[\\d.]+/,"");1U=1U.D(/([a-z])[\\s\\/](\\d)/4L,"$1$2");30=31.javaEnabled()&&30}t o(a){u r=L;u b=a.1V(0)=="!";v(b)a=a.J(1);a=a.D(/^([^\\(].*)$/,"/($1)/i.P(1U)");32{1W("r=!!"+a)}33(2d){}t!!(b^r)}}(q)};C o(1w){u 1h=U.1h;u J=2e.J||o(a){t 3V.X(a,3V.15(A,1))};u 34=1;u 3W=/^[1w$]/;u _3=/%([1-9])/g;u 4M=/^\\s\\s*/;u 4N=/\\s\\s*$/;u 4O=/([\\/()[\\]{}|*+-.,^$?\\\\])/g;u 3X=/1W/.P(1h)?/\\bbase\\b/:/./;u 4P=["V","1X","35"];u 4Q=R(C 19);u 3V=2e.M.J;u 2x=4R();o N(){v(q.V==N){q.x(A[0])}E{t x(A[0],N.M)}};N.M={V:N,y:o(){},x:1F(x)};N.2f=2g;N.36=1F(3Y);N.y=N.M.y;N.x=o(a,b){U.37=11;u c=C q;x(c,a);2y U.37;u d=c.V;o 1p(){v(!U.37){v(q.V==A.1G||q.3Z){q.3Z=11;d.X(q,A);2y q.3Z}E{t x(A[0],c)}}};c.V=1p;13(u i 1Y N)1p[i]=q[i];1p.2f=q;1p.y=1Z;1p.14=1Z;1p.M=c;x(1p,b);1p.14();t 1p};N.F=1F(2x),N.1a=o(a){v(1b(a,1H)){v(N.36(a)){a(q.M)}}E{x(q.M,a)}t q};N.14=1Z;u 2z=N.x({V:o(c,d){q.x(d);v(G q.14=="o")q.14();v(q.1v!="U"){U.40(q.1v,q);q.2h=H("u %1=U.%1;",q.1v)}u e=/[^\\s,]+/g;c.38=20.2A(q.38.1I(e),o(a,b){21(U[b],H("2z 18 found: \'%1\'.",b));t a+=U[b].2h},U.2h);c.1J=20.2A(q.1J.1I(e),o(a,b){q.2h+=H("u %2=%1.%2;",q.1v,b);t a+=H("v(!%1.%2)%1.%2=%2;",q.1v,b)},"",q)},1J:"",38:"",2h:"",1v:"",40:o(a,b){q[a]=b;q.1J+=","+a;q.2h+=H("u %1=%2.%1;",a,q.1v)}});u 41=N.x({V:o(){1K C 4S("Class cannot be instantiated.");}});u 1i=41.x(I,{x:o(c,d){u e=q.y();F(q,o(a,b){v(!1i[b]&&G a=="o"&&!3W.P(b)){x(e,b,a)}});e.1a(c);x(e,d);e.14();t e},1a:o(c){u d=q;v(G c=="o"){d.y(c);v(1i.36(c)){F(c,o(a,b){v(!1i[b]&&G a=="o"&&!3W.P(b)){x(d,b,a)}})}}E{2x(2g,c,o(a,b){v(b.1V(0)=="@"){v(1h(b.J(1))){F(a,A.1G)}}E v(!1i[b]&&G a=="o"){o 42(){t d[b].X(d,[q].1n(J(A)))};42.39=3X.P(a);x(d.M,b,42)}});x(d,c)}t d}});u 22=1i.x({4T:o(c,d,e){u f=11;32{q.F(c,o(a,b){f=d.15(e,a,b,c);v(!f)1K 2B;})}33(2d){v(2d!=2B)1K 2d;}t!!f},filter:o(d,e,f){u i=0;t q.2A(d,o(a,b,c){v(e.15(f,b,c,d)){a[i++]=b}t a},[])},invoke:o(b,c){u d=J(A,2);t q.2C(b,(G c=="o")?o(a){v(a!=I)t c.X(a,d)}:o(a){v(a!=I)t a[c].X(a,d)})},2C:o(c,d,e){u f=[],i=0;q.F(c,o(a,b){f[i++]=d.15(e,a,b,c)});t f},pluck:o(b,c){t q.2C(b,o(a){v(a!=I)t a[c]})},2A:o(c,d,e,f){u g=A.B>2;q.F(c,o(a,b){v(g){e=d.15(f,e,a,b,c)}E{e=a;g=11}});t e},some:o(c,d,e){t!q.4T(c,o(a,b){t!d.15(e,a,b,c)})}},{F:F});u 1c="#";u 3a=N.x({V:o(a){q.43(a)},1x:1F(1x),23:o(a){/*@3S@*//*@v(@3T<5.5)t $4U.23(q,1c+a);@E@*/t 1c+a 1Y q;/*@4V@*/},4W:o(a){t q[1c+a]},F:o(a,b){13(u c 1Y q)v(c.1V(0)==1c){a.15(b,q[c],c.J(1),q)}},43:o(d){F(A,o(c){F(c,o(a,b){q.24(b,a)},q)},q);t q},2i:o(a){u b=q[1c+a];2y q[1c+a];t b},24:o(a,b){v(A.B==1)b=a;t q[1c+a]=b},union:o(a){t q.43.X(q.1x(),A)}});3a.1a(22);u S="~";u 44=3a.x({V:o(a){q[S]=C 20;q.y(a)},3b:o(a,b){21(!q.23(a),"4X 4Y \'"+a+"\'.");t q.24.X(q,A)},1x:o(){u a=q.y();a[S]=q[S].1x();t a},2j:o(){t q[S].B},4Z:o(a){v(a<0)a+=q[S].B;u b=q[S][a];v(b!==1j)t q[1c+b]},F:o(a,b){u c=q[S];u d=c.B,i;13(i=0;i=0;i--){v(a[i]===b)t i}t-1},2C:o(c,d,e){u f=[];q.F(c,o(a,b){f[b]=d.15(e,a,b,c)});t f},2i:o(a,b){u c=q.25(a,b);v(c!=-1)q.3e(a,c);t b},3e:o(a,b){t q.3l(a,b,1)}}]);20.M.F=1F(3m);u String2=4b(R,"1V,charCodeAt,1n,25,5d,1I,D,search,J,1y,substr,5e,4c,3n",[{2k:2k}]);o 4b(c,d,e){u f=1i.x();F(d.1y(","),o(a){f[a]=3o(c.M[a])});F(e,f.1a,f);u g=o(){t f(q.V==f?c.X(c,A):A[0])};g.M=f.M;F(f,o(a,b){v(c[b]){f[b]=c[b];2y f.M[b]}g[b]=f[b]});t g};o y(a,b){t a.y.X(a,b)};o x(c,d){u e=A.1G;v(c!=I){v(A.B>2){u f=R(d);u g=A[2];v(f.1V(0)=="@"){t 1h(f.J(1))?e(c,g):c}v(c.x==e&&/^(y|x)$/.P(f)){t c}v(G g=="o"){u h=c[f];v(g!=h&&!3Y(g,h)){v(g.39||3X.P(g)){u i=g;o 39(){u a=q.y;q.y=h;u b=i.X(q,A);q.y=a;t b};g=39;g.method=i;g.2f=h}c[f]=g}}E{c[f]=g}}E v(d){u j=1b(d,1H)?1H:2g;v(U.37){F(4P,o(a){v(d[a]!=j.M[a]){e(c,a,d[a])}})}E{v(G c.x=="o"&&G c!="o"&&c.x!=e){e=3o(c.x)}}2x(j,d,o(a,b){e(c,b,a)})}}t c};o 3Y(a,b){1o(b&&b.2f!=a)b=b.2f;t!!b};v(G 2B=="1j"){2B=C 5f("2B")}o F(a,b,c,d){v(a==I)t;v(!d){v(1b(a,1H)){d=1H}E v(G a.F=="o"&&a.F!=A.1G){a.F(b,c);t}E v(G a.B=="49"){3m(a,b,c);t}}2x(d||2g,a,b,c)};o 3m(a,b,c){v(a==I)t;u d=a.B,i;v(G a=="27"){13(i=0;i1)?o(a,b,c,d){u e={};13(u f 1Y b){v(!e[f]&&a.M[f]===1j){e[f]=11;c.15(d,b[f],f,b)}}}:o(a,b,c,d){13(u e 1Y b){v(a.M[e]===1j){c.15(d,b[e],e,b)}}}};o 1b(a,b){4d(b,"o","5g \'1b\' operand.");/*@3S@*//*@v(@3T<5.1)v($4U.1b(a,b))t 11;@E@*/v(a instanceof b)t 11;/*@4V@*/v(4e(b))t L;v(4e(a.V))t b==2g;v(a!=I)3d(b){1d 2e:t!!(G a=="3i"&&a.2E&&a.3l);1d 1H:t!!(G a=="o"&&a.15);1d 19:t a.V.M.1X()==4Q;1d Date:t!!a.getTimezoneOffset;1d R:1d 57:1d Boolean:t G a==G b.M.35();1d 2g:t G a=="3i"&&G a.V=="o"}t L};o 4e(a){t a==N||N.36(a)};o 21(a,b,c){v(!a){1K C(c||5f)(b||"Assertion failed.");}};o 5h(a,b,c){v(b==I)b=a.1G.B;v(a.B<\\/5y>");10.1B.5z.onreadystatechange=o(){v(q.5A=="5B"){q.removeNode();1S.2t()}}}},"@4w":{14:o(){q.y();u a=setInterval(o(){v(/loaded|5B/.P(10.5A)){clearInterval(a);1S.2t()}},100)}}});u 4j=2p.x({"@!(10.2I.5C)":{5C:o(a,b,c){t b.currentStyle}}},{toCamelCase:o(c){t R(c).D(/\\-([a-z])/g,o(a,b){t b.3n()})}});u 3E=2p.x({"@!(1l.5D)":{5D:o(a,b){v(1b(b,2e)){b=b.2E(".")}t q.4x(a,"."+b)}},"@!(1l.4y)":{4x:o(a,b){t C Y(b).1e(a)},4y:o(a,b){t C Y(b).1e(a,1)}}});x(3E.M,{4x:o(b){t x(q.y(b),"1q",o(a){t 1N.O(q.y(a))})},4y:o(a){t 1N.O(q.y(a))}});u 4h=3E.x();u 4i=3E.x({"@!(1l.5E)":{5E:o(a,b){t C Y(b).P(a)}}});u 3s=N.x({V:o(b){b=b||[];q.B=b.B;q.1q=o(a){t b[a]}},B:0,F:o(a,b){u c=q.B;13(u i=0;i](\\*|[\\w-]+))([^: >+~]*)(:\\w+-Z(\\([^)]+\\))?)([^: >+~]*)/,"$1$3$6$4")},3G:I,3h:11,3H:o(b){u c=/\'/g;u d=q.5I=[];t q.5J(q.H(R(b).D(1s.5K,o(a){d.2D(a.J(1,-1).D(c,"\\\\\'"));t"\\5L"+d.B})))},H:o(a){t a.D(1s.5M,"$1").D(1s.5N,"$1 $2").D(1s.5O,"$1*$2")},5J:o(a){t q.2O.1e(a.D(1s.5P,">* "))},3F:o(a){t q.3G[a]||(q.3G[a]=q.2u(q.1e(q.3H(a))))},2u:o(c){u d=q.5I;t c.D(/\\5L(\\d+)/g,o(a,b){t d[b-1]})}},{5K:/(["\'])[^\\1]*\\1/g,5O:/([\\s>+~,]|[^(]\\+|^)([#.:@])/g,5N:/(^|,)([^\\s>+~])/g,5M:/\\s*([\\s>+~(),]|^|$)\\s*/g,5P:/\\s\\*\\s/g,2a:o(c,d,e,f,g,h,i,j){f=/1k/i.P(c)?f+"+1-":"";v(!isNaN(d))d="0n+"+d;E v(d=="even")d="2n";E v(d=="odd")d="2n+1";d=d.1y(/n\\+?/);u a=d[0]?(d[0]=="-")?-1:4a(d[0]):1;u b=4a(d[1])||0;u g=a<0;v(g){a=-a;v(a==1)b++}u l=H(a==0?"%3%7"+(f+b):"(%4%3-%2)%6%1%70%5%4%3>=%2",a,b,e,f,h,i,j);v(g)l=g+"("+l+")";t l}});Y.4A={"=":"%1==\'%2\'","!=":"%1!=\'%2\'","~=":/(^| )%1( |$)/,"|=":/^%1(-|$)/,"^=":/^%1/,"$=":/%1$/,"*=":/%1/};Y.4A[""]="%1!=I";Y.1t={"3I":"e%1.3I","17":"e%1[T.$2K].25(\'%2\')!=-1","2P":"e%1.2P","5Q":"T.5o(e%1)","4B":"e%1.2P===L","4C-Z":"!T.4o(e%1)","1k-Z":"!T.3w(e%1)","2Q-Z":"!T.4o(e%1)&&!T.3w(e%1)","4D":"e%1==T.2q(e%1).4q"};C o(1w){u 2b=1h("2b");u 2R=1h("2R");u 5R=1h("(1l.3J)");u 4E="u p%2=0,i%2,e%2,n%2=e%1.";u 34=5R?"e%1.3J":"1M(e%1)";u 5S="u g="+34+";v(!p[g]){p[g]=1;";u 5T="r[r.B]=e%1;v(s)t e%1;";u 5U="1Q=o(5V,s){2v++;u r=[],p={},1u=[%1],"+"d=T.2q(5V),c=d.body?\'3n\':\'1X\';";u 5W=2b?o(a,b){u c=a.1B[b]||I;v(!c||c.2M==b)t c;13(u i=0;i(\\\\*|[\\\\w-]+)":o(a,b){u c=2b&&1D;12=b=="*";u d=4E;d+=c?"children":"childNodes";v(!12&&c)d+=".4F(\'%3\')";d+=";13(i%2=0;(e%2=n%2[i%2]);i%2++){";v(12){d+="v(e%2.1A==1){";12=2R}E{v(!c)d+="v(e%2.2T==\'%3\'[c]()){"}t H(d,W++,1D=W,b)},"\\\\+(\\\\*|[\\\\w-]+)":o(a,b){u c="";v(12&&2b)c+="v(e%1.29!=\'!\'){";12=L;c+="e%1=T.3w(e%1);v(e%1";v(b!="*")c+="&&e%1.2T==\'%2\'[c]()";c+="){";t H(c,W,b)},"~(\\\\*|[\\\\w-]+)":o(a,b){u c="";v(12&&2b)c+="v(e%1.29!=\'!\'){";12=L;2S=2;c+="1o(e%1=e%1.3x){v(e%1.61==2v)2F;e%1.61=2v;v(";v(b=="*"){c+="e%1.1A==1";v(2R)c+="&&e%1.29!=\'!\'"}E c+="e%1.2T==\'%2\'[c]()";c+="){";t H(c,W,b)},"#([\\\\w-]+)":o(a,b){12=L;u c="v(e%1.2M==\'%2\'){";v(1D)c+=H("i%1=n%1.B;",1D);t H(c,W,b)},"\\\\.([\\\\w-]+)":o(a,b){12=L;1u.2D(C 19("(^|\\\\s)"+1L(b)+"(\\\\s|$)"));t H("v(1u[%2].P(e%1.1r)){",W,1u.B-1)},":18\\\\((\\\\*|[\\\\w-]+)?([^)]*)\\\\)":o(a,b,c){u d=(b&&b!="*")?H("v(e%1.2T==\'%2\'[c]()){",W,b):"";d+=2w.1e(c);t"v(!"+d.J(2,-1).D(/\\)\\{v\\(/g,"&&")+"){"},":2U(-1k)?-Z\\\\(([^)]+)\\\\)":o(a,b,c){12=L;b=H("e%1.2L.60",W);u d="v(p%1!==e%1.2L)";d+="p%1=5X(e%1.2L);u i=e%1.5Z;v(";t H(d,W)+1s.2a(a,c,"i",b,"!","&&","%","==")+"){"},":([\\\\w-]+)(\\\\(([^)]+)\\\\))?":o(a,b,c,d){t"v("+H(Y.1t[b],W,d||"")+"){"},"\\\\[([\\\\w-]+)\\\\s*([^=]?=)?\\\\s*([^\\\\]]*)\\\\]":o(a,b,c,d){u e=1z.$1T[b]||b;v(b=="62")e="1r";E v(b=="13")e="htmlFor";v(c){b=H("(e%1.%3||e%1.3L(\'%2\'))",W,b,e)}E{b=H("1z.3L(e%1,\'%2\')",W,b)}u f=Y.4A[c||""];v(1b(f,19)){1u.2D(C 19(H(f.3j,1L(2w.2u(d)))));f="1u[%2].P(%1)";d=1u.B-1}t"v("+H(f,b,d)+"){"}});Y.3F=o(a){v(!3K[a]){1u=[];1Q="";u b=2w.3H(a).1y(",");13(u i=0;i1?2:0;u c=2w.1e(b[i])||"1K;";v(12&&2b){c+=H("v(e%1.29!=\'!\'){",W)}u d=(2S>1)?5S:"";c+=H(d+5T,W);c+=2e(1I(c,/\\{/g).B+1).2E("}");1Q+=c}1W(H(5U,1u)+2w.2u(1Q)+"t s?I:r}");3K[a]=1Q}t 3K[a]}};u 2o=1s.x({V:o(){q.y(2o.4G);q.2O.55(1,"$1$4$3$6")},3H:o(a){t q.y(a).D(/,/g,"\\3M")},2u:o(a){t q.y(a.D(/\\[2V::\\*\\]/g,"").D(/(^|\\3M)\\//g,"$1./").D(/\\3M/g," | "))},"@63":{2u:o(a){t q.y(a.D(/1k\\(\\)/g,"2j(3N-1E::*)+2j(2W-1E::*)+1"))}}},{14:o(){q.2X.1T[""]="[@$1]";F(q.64,o(a,b){F(q.2X[b],a,q.4G)},q)},3O:{1t:{"4C-Z":"[1]","1k-Z":"[1k()]","2Q-Z":"[1k()=1]"}},4G:x({},{"@!4w":{"(^|\\\\3M) (\\\\*|[\\\\w-]+)#([\\\\w-]+)":"$1id(\'$3\')[2V::$2]","([ >])(\\\\*|[\\\\w-]+):([\\\\w-]+-Z(\\\\(([^)]+)\\\\))?)":o(a,b,c,d,e,f){u g=(b==" ")?"//*":"/*";v(/^2U/i.P(d)){g+=2a(d,f,"position()")}E{g+=2o.3O.1t[d]}t g+"[2V::"+c+"]"}}}),64:{65:o(a,b){q[1L(b)+"([\\\\w-]+)"]=a},66:o(a,b){q[1L(b)+"(\\\\*|[\\\\w-]+)"]=a},1T:o(a,b){q["\\\\[([\\\\w-]+)\\\\s*"+1L(b)+"\\\\s*([^\\\\]]*)\\\\]"]=a},1t:o(a,b){q[":"+b.D(/\\(\\)$/,"\\\\(([^)]+)\\\\)")]=a}},2X:{65:{"#":"[@2M=\'$1\'][1]",".":"[17(1n(\' \', at 62,\' \'),\' $1 \')]"},66:{" ":"/descendant::$1",">":"/Z::$1","+":"/2W-1E::*[1][2V::$1]","~":"/2W-1E::$1"},1T:{"*=":"[17(@$1,\'$2\')]","^=":"[starts-with(@$1,\'$2\')]","$=":"[5e(@$1,27-B(@$1)-27-B(\'$2\')+1)=\'$2\']","~=":"[17(1n(\' \',@$1,\' \'),\' $2 \')]","|=":"[17(1n(\'-\',@$1,\'-\'),\'-$2-\')]","!=":"[18(@$1=\'$2\')]","=":"[@$1=\'$2\']"},1t:{"5Q":"[18(Z::*) 3P 18(text())]","4C-Z":"[18(3N-1E::*)]","1k-Z":"[18(2W-1E::*)]","18()":68,"2U-Z()":2a,"2U-1k-Z()":2a,"2Q-Z":"[18(3N-1E::*) 3P 18(2W-1E::*)]","4D":"[18(parent::*)]"}},"@63":{14:o(){q.3O.1t["1k-Z"]=q.2X.1t["1k-Z"];q.3O.1t["2Q-Z"]=q.2X.1t["2Q-Z"];q.y()}}});o 68(a,b){u c=C 2o;t"[18("+c.1e(2k(b)).D(/\\[1\\]/g,"").D(/^(\\*|[\\w-]+)/,"[2V::$1]").D(/\\]\\[/g," 3P ").J(1,-1)+")]"};o 2a(a,b,c){t"["+1s.2a(a,b,c||"2j(3N-1E::*)+1","1k()","18"," 3P "," mod ","=")+"]"};Y.1a({2Y:o(){t Y.2Y(q)},"@(5F)":{$2N:o(a,b){v(Y.$2Z.P(q)){t q.y(a,b)}u c=T.2q(a);u d=b?9:7;u e=c.2N(q.2Y(),a,I,d,I);t b?e.singleNodeValue:e}},"@1m":{$2N:o(a,b){v(G a.69!="1j"&&!Y.$2Z.P(q)){u c=b?"selectSingleNode":"69";t a[c](q.2Y())}t q.y(a,b)}}});x(Y,{3Q:I,2Y:o(a){v(!q.3Q)q.3Q=C 2o;t q.3Q.3F(a)},$2Z:/:(3I|2P|4B|17)|^(#[\\w-]+\\s*)?\\w+$/,"@4w":{$2Z:/:(3I|2P|4B|17)|^(#[\\w-]+\\s*)?\\w+$|2U\\-/,"@!WebKit5":{$2Z:/./}}});u 28=3u.x({"@!(1l.6a)":{6a:o(a,b){v(T.17(a,b)){t 4|16}E v(T.17(b,a)){t 2|8}u c=28.3R(a);u d=28.3R(b);v(cd){t 2}t 0}}},{3R:o(a){u b=0;1o(a){b=T.5m(a)+"."+b;a=a.2L}t b},"@(1l.3J)":{3R:o(a){t a.3J}}});u 1O=28.x(I,{O:o(b){q.y(b);x(b,"3U",o(a){t 1N.O(q.y(a))});3q.O(b.2I);t b},"@!(10.2I)":{O:o(a){a.2I=T.3v(a);t q.y(a)}}});1O.3t("3U",2);u 1z=28.x({"@1m[67]":{3L:o(a,b,c){v(a.1r===1j||b=="6b"||b=="4v"){t q.y(a,b,2)}u d=a.getAttributeNode(b);t d&&d.6c?d.6d:I}},"@3z.+2H":{3L:o(a,b,c){v(a.1r===1j||b=="6b"||b=="4v"){t q.y(a,b,2)}u d=a.1T[q.$1T[b.4c()]||b];t d?d.6c?d.6d:I:q.y(a,b)}}},{$1T:{},"@3z.+2H":{14:o(){u a="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";u b=a.4c().1y(",");u c=a.1y(",");q.$1T=20.5b(b,c)}}});1z.3t("5H",3);3q.1a(4j);1O.1a(4h);1O.1a(3r);1O.1a(1g);1z.1a(4i);1z.1a(1g);u 4k=1O.x(I,{"@(10.4H===1j)":{O:o(b){q.y(b);b.4H=I;b.1C("focus",o(a){b.4H=a.3A},L);t b}}});u 2G=1z.x({addClass:o(a,b){v(!q.6e(a,b)){a.1r+=(a.1r?" ":"")+b;t b}},6e:o(a,b){u c=C 19("(^|\\\\s)"+b+"(\\\\s|$)");t c.P(a.1r)},removeClass:o(a,b){u c=C 19("(^|\\\\s)"+b+"(\\\\s|$)");a.1r=a.1r.D(c,"$2");t b}},{4l:{},4F:"*",x:o(){u b=y(q,A);u c=(b.4F||"").3n().1y(",");F(c,o(a){2G.4l[a]=b});t b},"@!(1l.3y)":{O:o(a){q.y(a);a.3y=T.2r(a);t a}}});1N.$=o(a,b){t C Y(a).1e(b,1)};1N.$$=o(a,b){t C Y(a).1e(b)};1W(q.1J)};',[],494,'||||||||||||||||||||||||function||this|||return|var|if||extend|base||arguments|length|new|replace|else|forEach|typeof|format|null|slice||false|prototype|Base|bind|test||String|_16|Traversal|base2|constructor|_35|apply|Selector|child|document|true|_36|for|init|call||contains|not|RegExp|implement|instanceOf|_15|case|exec|Item|EventTarget|detect|Module|undefined|last|element|MSIE|concat|while|klass|item|className|Parser|pseudoClasses|reg|name|_|copy|split|Element|nodeType|all|addEventListener|_37|sibling|delegate|callee|Function|match|exports|throw|rescape|assignID|DOM|Document|closures|fn|createEvent|DOMContentLoaded|attributes|platform|charAt|eval|toString|in|Undefined|Array2|assert|Enumerable|exists|store|indexOf|RegGrp|string|Node|tagName|_27|_28|global|error|Array|ancestor|Object|namespace|remove|count|trim|base2ID|Event||XPathParser|Interface|getDocument|getOwnerDocument|handleEvent|fire|unescape|indexed|parser|_10|delete|Namespace|reduce|StopIteration|map|push|join|break|HTMLElement|win|defaultView|isElement|TEXT|parentNode|id|evaluate|sorter|disabled|only|_29|_38|nodeName|nth|self|following|values|toXPath|NOT_XPATH|java|navigator|try|catch|_1|valueOf|ancestorOf|__prototyping|imports|_14|Hash|add|Math|switch|removeAt|sort|create|ignoreCase|object|source|partial|splice|_19|toUpperCase|unbind|type|AbstractView|DocumentEvent|StaticNodeList|createDelegate|Binding|getDefaultView|getNextElementSibling|nextSibling|ownerDocument|MSIE5|target|dispatchEvent|listener|fired|NodeSelector|parse|cache|escape|checked|sourceIndex|_39|getAttribute|x02|preceding|optimised|and|xpathParser|_41|cc_on|_jscript_version|createElement|_0|_2|_7|_12|__constructing|addName|Abstract|_13|merge|Collection|insertAt|default|reverse|replacement|number|parseInt|_18|toLowerCase|assertType|_20|_21|_22|DocumentSelector|ElementSelector|ViewCSS|HTMLDocument|bindings|attachEvent|continue|getPreviousElementSibling|isDocument|documentElement|initEvent|cancelable|returnValue|Events|src|KHTML|matchAll|matchSingle|b2_test|operators|enabled|first|root|_31|tags|rules|activeElement|version|alpha|jscript|gi|_4|_5|_6|_8|_9|_11|TypeError|every|Legacy|end|fetch|Duplicate|key|fetchAt|abs|Index|out|of|bounds|storeAt||Number|IGNORE|_17|index|combine|max|lastIndexOf|substring|Error|Invalid|assertArity|SyntaxError|_23|_24|_25|getNodeIndex|previousSibling|isEmpty|firstChild|parentWindow|bubbles|cancelBubble|preventDefault|on|event|createEventObject|load|script|__ready|readyState|complete|getComputedStyle|getElementsByClassName|matchesSelector|XPathResult|snapshotItem|setAttribute|_26|optimise|ESCAPE|x01|WHITESPACE|IMPLIED_SPACE|IMPLIED_ASTERISK|WILD_CARD|empty|_30|_32|_33|_34|e0|byId|register|b2_indexed|b2_index|b2_length|b2_adjacent|class|opera|types|identifiers|combinators||_40|selectNodes|compareDocumentPosition|href|specified|nodeValue|hasClass'.split('|'),0,{})); \ No newline at end of file Added: kukit/kukit.js/trunk/3rd_party/firebuglite/errorIcon.png ============================================================================== Binary file. No diff available. Added: kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.css ============================================================================== --- (empty file) +++ kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.css Thu Aug 16 12:42:53 2007 @@ -0,0 +1,209 @@ + +html, body { + margin: 0; + background: #FFFFFF; + font-family: Lucida Grande, Tahoma, sans-serif; + font-size: 11px; + overflow: hidden; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.toolbar { + height: 14px; + border-top: 1px solid ThreeDHighlight; + border-bottom: 1px solid ThreeDShadow; + padding: 2px 6px; + background: ThreeDFace; +} + +.toolbarRight { + position: absolute; + top: 4px; + right: 6px; +} + +#log { + overflow: auto; + position: absolute; + left: 0; + width: 100%; +} + +#commandLine { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 18px; + border: none; + border-top: 1px solid ThreeDShadow; +} + +/************************************************************************************************/ + +.logRow { + position: relative; + border-bottom: 1px solid #D7D7D7; + padding: 2px 4px 1px 6px; + background-color: #FFFFFF; +} + +.logRow-command { + font-family: Monaco, monospace; + color: blue; +} + +.objectBox-null { + padding: 0 2px; + border: 1px solid #666666; + background-color: #888888; + color: #FFFFFF; +} + +.objectBox-string { + font-family: Monaco, monospace; + color: red; + white-space: pre; +} + +.objectBox-number { + color: #000088; +} + +.objectBox-function { + font-family: Monaco, monospace; + color: DarkGreen; +} + +.objectBox-object { + color: DarkGreen; + font-weight: bold; +} + +/************************************************************************************************/ + +.logRow-info, +.logRow-error, +.logRow-warning { + background: #FFFFFF no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} + +.logRow-info { + background-image: url(infoIcon.png); +} + +.logRow-warning { + background-color: cyan; + background-image: url(warningIcon.png); +} + +.logRow-error { + background-color: LightYellow; + background-image: url(errorIcon.png); +} + +.errorMessage { + vertical-align: top; + color: #FF0000; +} + +.objectBox-sourceLink { + position: absolute; + right: 4px; + top: 2px; + padding-left: 8px; + font-family: Lucida Grande, sans-serif; + font-weight: bold; + color: #0000FF; +} + +/************************************************************************************************/ + +.logRow-group { + background: #EEEEEE; + border-bottom: none; +} + +.logGroup { + background: #EEEEEE; +} + +.logGroupBox { + margin-left: 24px; + border-top: 1px solid #D7D7D7; + border-left: 1px solid #D7D7D7; +} + +/************************************************************************************************/ + +.selectorTag, +.selectorId, +.selectorClass { + font-family: Monaco, monospace; + font-weight: normal; +} + +.selectorTag { + color: #0000FF; +} + +.selectorId { + color: DarkBlue; +} + +.selectorClass { + color: red; +} + +/************************************************************************************************/ + +.objectBox-element { + font-family: Monaco, monospace; + color: #000088; +} + +.nodeChildren { + margin-left: 16px; +} + +.nodeTag { + color: blue; +} + +.nodeValue { + color: #FF0000; + font-weight: normal; +} + +.nodeText, +.nodeComment { + margin: 0 2px; + vertical-align: top; +} + +.nodeText { + color: #333333; +} + +.nodeComment { + color: DarkGreen; +} + +/************************************************************************************************/ + +.propertyNameCell { + vertical-align: top; +} + +.propertyName { + font-weight: bold; +} Added: kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.html ============================================================================== --- (empty file) +++ kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.html Thu Aug 16 12:42:53 2007 @@ -0,0 +1,23 @@ + + + + + + Firebug + + + + +
+ Clear + + Close + +
+
+ + + + + Added: kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.js ============================================================================== --- (empty file) +++ kukit/kukit.js/trunk/3rd_party/firebuglite/firebug.js Thu Aug 16 12:42:53 2007 @@ -0,0 +1,672 @@ + +if (!("console" in window) || !("firebug" in console)) { +(function() +{ + window.console = + { + log: function() + { + logFormatted(arguments, ""); + }, + + debug: function() + { + logFormatted(arguments, "debug"); + }, + + info: function() + { + logFormatted(arguments, "info"); + }, + + warn: function() + { + logFormatted(arguments, "warning"); + }, + + error: function() + { + logFormatted(arguments, "error"); + }, + + assert: function(truth, message) + { + if (!truth) + { + var args = []; + for (var i = 1; i < arguments.length; ++i) + args.push(arguments[i]); + + logFormatted(args.length ? args : ["Assertion Failure"], "error"); + throw message ? message : "Assertion Failure"; + } + }, + + dir: function(object) + { + var html = []; + + var pairs = []; + for (var name in object) + { + try + { + pairs.push([name, object[name]]); + } + catch (exc) + { + } + } + + pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; }); + + html.push(''); + for (var i = 0; i < pairs.length; ++i) + { + var name = pairs[i][0], value = pairs[i][1]; + + html.push('', + '', ''); + } + html.push('
', + escapeHTML(name), ''); + appendObject(value, html); + html.push('
'); + + logRow(html, "dir"); + }, + + dirxml: function(node) + { + var html = []; + + appendNode(node, html); + logRow(html, "dirxml"); + }, + + group: function() + { + logRow(arguments, "group", pushGroup); + }, + + groupEnd: function() + { + logRow(arguments, "", popGroup); + }, + + time: function(name) + { + timeMap[name] = (new Date()).getTime(); + }, + + timeEnd: function(name) + { + if (name in timeMap) + { + var delta = (new Date()).getTime() - timeMap[name]; + logFormatted([name+ ":", delta+"ms"]); + delete timeMap[name]; + } + }, + + count: function() + { + this.warn(["count() not supported."]); + }, + + trace: function() + { + this.warn(["trace() not supported."]); + }, + + profile: function() + { + this.warn(["profile() not supported."]); + }, + + profileEnd: function() + { + }, + + clear: function() + { + consoleBody.innerHTML = ""; + }, + + open: function() + { + toggleConsole(true); + }, + + close: function() + { + if (frameVisible) + toggleConsole(); + } + }; + + // ******************************************************************************************** + + var consoleFrame = null; + var consoleBody = null; + var commandLine = null; + + var frameVisible = false; + var messageQueue = []; + var groupStack = []; + var timeMap = {}; + + var clPrefix = ">>> "; + + var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; + var isIE = navigator.userAgent.indexOf("MSIE") != -1; + var isOpera = navigator.userAgent.indexOf("Opera") != -1; + var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1; + + // ******************************************************************************************** + + function toggleConsole(forceOpen) + { + frameVisible = forceOpen || !frameVisible; + if (consoleFrame) + consoleFrame.style.visibility = frameVisible ? "visible" : "hidden"; + else + waitForBody(); + } + + function focusCommandLine() + { + toggleConsole(true); + if (commandLine) + commandLine.focus(); + } + + function waitForBody() + { + if (document.body) + createFrame(); + else + setTimeout(waitForBody, 200); + } + + function createFrame() + { + if (consoleFrame) + return; + + window.onFirebugReady = function(doc) + { + window.onFirebugReady = null; + + var toolbar = doc.getElementById("toolbar"); + toolbar.onmousedown = onSplitterMouseDown; + + commandLine = doc.getElementById("commandLine"); + addEvent(commandLine, "keydown", onCommandLineKeyDown); + + addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown); + + consoleBody = doc.getElementById("log"); + layout(); + flush(); + } + + var baseURL = getFirebugURL(); + + consoleFrame = document.createElement("iframe"); + consoleFrame.setAttribute("src", baseURL+"/firebug.html"); + consoleFrame.setAttribute("frameBorder", "0"); + consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden"); + consoleFrame.style.zIndex = "2147483647"; + consoleFrame.style.position = "fixed"; + consoleFrame.style.width = "100%"; + consoleFrame.style.left = "0"; + consoleFrame.style.bottom = "0"; + consoleFrame.style.height = "200px"; + document.body.appendChild(consoleFrame); + } + + function getFirebugURL() + { + var scripts = document.getElementsByTagName("script"); + for (var i = 0; i < scripts.length; ++i) + { + if (scripts[i].src.indexOf("firebug.js") != -1) + { + var lastSlash = scripts[i].src.lastIndexOf("/"); + return scripts[i].src.substr(0, lastSlash); + } + } + } + + function evalCommandLine() + { + var text = commandLine.value; + commandLine.value = ""; + + logRow([clPrefix, text], "command"); + + var value; + try + { + value = eval(text); + } + catch (exc) + { + } + + console.log(value); + } + + function layout() + { + var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); + var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight); + consoleBody.style.top = toolbar.offsetHeight + "px"; + consoleBody.style.height = height + "px"; + + commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px"; + } + + function logRow(message, className, handler) + { + if (consoleBody) + writeMessage(message, className, handler); + else + { + messageQueue.push([message, className, handler]); + waitForBody(); + } + } + + function flush() + { + var queue = messageQueue; + messageQueue = []; + + for (var i = 0; i < queue.length; ++i) + writeMessage(queue[i][0], queue[i][1], queue[i][2]); + } + + function writeMessage(message, className, handler) + { + var isScrolledToBottom = + consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; + + if (!handler) + handler = writeRow; + + handler(message, className); + + if (isScrolledToBottom) + consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; + } + + function appendRow(row) + { + var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; + container.appendChild(row); + } + + function writeRow(message, className) + { + var row = consoleBody.ownerDocument.createElement("div"); + row.className = "logRow" + (className ? " logRow-"+className : ""); + row.innerHTML = message.join(""); + appendRow(row); + } + + function pushGroup(message, className) + { + logFormatted(message, className); + + var groupRow = consoleBody.ownerDocument.createElement("div"); + groupRow.className = "logGroup"; + var groupRowBox = consoleBody.ownerDocument.createElement("div"); + groupRowBox.className = "logGroupBox"; + groupRow.appendChild(groupRowBox); + appendRow(groupRowBox); + groupStack.push(groupRowBox); + } + + function popGroup() + { + groupStack.pop(); + } + + // ******************************************************************************************** + + function logFormatted(objects, className) + { + var html = []; + + var format = objects[0]; + var objIndex = 0; + + if (typeof(format) != "string") + { + format = ""; + objIndex = -1; + } + + var parts = parseFormat(format); + for (var i = 0; i < parts.length; ++i) + { + var part = parts[i]; + if (part && typeof(part) == "object") + { + var object = objects[++objIndex]; + part.appender(object, html); + } + else + appendText(part, html); + } + + for (var i = objIndex+1; i < objects.length; ++i) + { + appendText(" ", html); + + var object = objects[i]; + if (typeof(object) == "string") + appendText(object, html); + else + appendObject(object, html); + } + + logRow(html, className); + } + + function parseFormat(format) + { + var parts = []; + + var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; + var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; + + for (var m = reg.exec(format); m; m = reg.exec(format)) + { + var type = m[8] ? m[8] : m[5]; + var appender = type in appenderMap ? appenderMap[type] : appendObject; + var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); + + parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); + parts.push({appender: appender, precision: precision}); + + format = format.substr(m.index+m[0].length); + } + + parts.push(format); + + return parts; + } + + function escapeHTML(value) + { + function replaceChars(ch) + { + switch (ch) + { + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + case "'": + return "'"; + case '"': + return """; + } + return "?"; + }; + return String(value).replace(/[<>&"']/g, replaceChars); + } + + function objectToString(object) + { + try + { + return object+""; + } + catch (exc) + { + return null; + } + } + + // ******************************************************************************************** + + function appendText(object, html) + { + html.push(escapeHTML(objectToString(object))); + } + + function appendNull(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendString(object, html) + { + html.push('"', escapeHTML(objectToString(object)), + '"'); + } + + function appendInteger(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFloat(object, html) + { + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFunction(object, html) + { + var reName = /function ?(.*?)\(/; + var m = reName.exec(objectToString(object)); + var name = m ? m[1] : "function"; + html.push('', escapeHTML(name), '()'); + } + + function appendObject(object, html) + { + try + { + if (object == undefined) + appendNull("undefined", html); + else if (object == null) + appendNull("null", html); + else if (typeof object == "string") + appendString(object, html); + else if (typeof object == "number") + appendInteger(object, html); + else if (typeof object == "function") + appendFunction(object, html); + else if (object.nodeType == 1) + appendSelector(object, html); + else if (typeof object == "object") + appendObjectFormatted(object, html); + else + appendText(object, html); + } + catch (exc) + { + } + } + + function appendObjectFormatted(object, html) + { + var text = objectToString(object); + var reObject = /\[object (.*?)\]/; + + var m = reObject.exec(text); + html.push('', m ? m[1] : text, '') + } + + function appendSelector(object, html) + { + html.push(''); + + html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); + if (object.id) + html.push('#', escapeHTML(object.id), ''); + if (object.className) + html.push('.', escapeHTML(object.className), ''); + + html.push(''); + } + + function appendNode(node, html) + { + if (node.nodeType == 1) + { + html.push( + '
', + '<', node.nodeName.toLowerCase(), ''); + + for (var i = 0; i < node.attributes.length; ++i) + { + var attr = node.attributes[i]; + if (!attr.specified) + continue; + + html.push(' ', attr.nodeName.toLowerCase(), + '="', escapeHTML(attr.nodeValue), + '"') + } + + if (node.firstChild) + { + html.push('>
'); + + for (var child = node.firstChild; child; child = child.nextSibling) + appendNode(child, html); + + html.push('
</', + node.nodeName.toLowerCase(), '>
'); + } + else + html.push('/>'); + } + else if (node.nodeType == 3) + { + html.push('
', escapeHTML(node.nodeValue), + '
'); + } + } + + // ******************************************************************************************** + + function addEvent(object, name, handler) + { + if (document.all) + object.attachEvent("on"+name, handler); + else + object.addEventListener(name, handler, false); + } + + function removeEvent(object, name, handler) + { + if (document.all) + object.detachEvent("on"+name, handler); + else + object.removeEventListener(name, handler, false); + } + + function cancelEvent(event) + { + if (document.all) + event.cancelBubble = true; + else + event.stopPropagation(); + } + + function onError(msg, href, lineNo) + { + var html = []; + + var lastSlash = href.lastIndexOf("/"); + var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); + + html.push( + '', msg, '', + '' + ); + + logRow(html, "error"); + }; + + function onKeyDown(event) + { + if (event.keyCode == 123) + toggleConsole(); + else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey + && (event.metaKey || event.ctrlKey)) + focusCommandLine(); + else + return; + + cancelEvent(event); + } + + function onSplitterMouseDown(event) + { + if (isSafari || isOpera) + return; + + addEvent(document, "mousemove", onSplitterMouseMove); + addEvent(document, "mouseup", onSplitterMouseUp); + + for (var i = 0; i < frames.length; ++i) + { + addEvent(frames[i].document, "mousemove", onSplitterMouseMove); + addEvent(frames[i].document, "mouseup", onSplitterMouseUp); + } + } + + function onSplitterMouseMove(event) + { + var win = document.all + ? event.srcElement.ownerDocument.parentWindow + : event.target.ownerDocument.defaultView; + + var clientY = event.clientY; + if (win != win.parent) + clientY += win.frameElement ? win.frameElement.offsetTop : 0; + + var height = consoleFrame.offsetTop + consoleFrame.clientHeight; + var y = height - clientY; + + consoleFrame.style.height = y + "px"; + layout(); + } + + function onSplitterMouseUp(event) + { + removeEvent(document, "mousemove", onSplitterMouseMove); + removeEvent(document, "mouseup", onSplitterMouseUp); + + for (var i = 0; i < frames.length; ++i) + { + removeEvent(frames[i].document, "mousemove", onSplitterMouseMove); + removeEvent(frames[i].document, "mouseup", onSplitterMouseUp); + } + } + + function onCommandLineKeyDown(event) + { + if (event.keyCode == 13) + evalCommandLine(); + else if (event.keyCode == 27) + commandLine.value = ""; + } + + window.onerror = onError; + addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown); + + if (document.documentElement.getAttribute("debug") == "true") + toggleConsole(true); +})(); +} Added: kukit/kukit.js/trunk/3rd_party/firebuglite/firebugx.js ============================================================================== --- (empty file) +++ kukit/kukit.js/trunk/3rd_party/firebuglite/firebugx.js Thu Aug 16 12:42:53 2007 @@ -0,0 +1,10 @@ + +if (!("console" in window) || !("firebug" in console)) +{ + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {} +} \ No newline at end of file Added: kukit/kukit.js/trunk/3rd_party/firebuglite/infoIcon.png ============================================================================== Binary file. No diff available. Added: kukit/kukit.js/trunk/3rd_party/firebuglite/warningIcon.png ============================================================================== Binary file. No diff available. From reebalazs at codespeak.net Thu Aug 16 12:43:49 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 12:43:49 +0200 (CEST) Subject: [KSS-checkins] r45703 - in kukit/kss.core/trunk: docs kss/core Message-ID: <20070816104349.EFD62815A@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 12:43:49 2007 New Revision: 45703 Modified: kukit/kss.core/trunk/docs/LICENSE.txt kukit/kss.core/trunk/kss/core/configure.zcml Log: Add Firebug lite Modified: kukit/kss.core/trunk/docs/LICENSE.txt ============================================================================== --- kukit/kss.core/trunk/docs/LICENSE.txt (original) +++ kukit/kss.core/trunk/docs/LICENSE.txt Thu Aug 16 12:43:49 2007 @@ -1,4 +1,4 @@ - kss.core is copyright KSS Project + kss.core is copyright KSS Project Contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,3 +21,4 @@ BeautifulSoup.py is licensed with PSF, Copyright (c) 2004-2006 Leonard Richardson + Firebug Lite is licensed under Mozilla Public License 1.1 Modified: kukit/kss.core/trunk/kss/core/configure.zcml ============================================================================== --- kukit/kss.core/trunk/kss/core/configure.zcml (original) +++ kukit/kss.core/trunk/kss/core/configure.zcml Thu Aug 16 12:43:49 2007 @@ -35,6 +35,10 @@ name="MochiKit.js" /> + Author: gotcha Date: Thu Aug 16 14:46:47 2007 New Revision: 45718 Added: kukit/kukit.js/branch/gotcha-code-cleanup/ - copied from r45717, kukit/kukit.js/trunk/ Log: branch for code cleanup like fit on 80 cols, clean ;;;, etc... From gotcha at codespeak.net Thu Aug 16 18:34:35 2007 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Thu, 16 Aug 2007 18:34:35 +0200 (CEST) Subject: [KSS-checkins] r45740 - kukit/kukit.js/branch/gotcha-code-cleanup/kukit Message-ID: <20070816163435.7C3C4815F@code0.codespeak.net> Author: gotcha Date: Thu Aug 16 18:34:35 2007 New Revision: 45740 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js Log: add missing msg; initialize error correctly Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js Thu Aug 16 18:34:35 2007 @@ -691,7 +691,7 @@ ;;; kukit.E = 'Undefined event : ['; ;;; kukit.E += rule.kssSelector.namespace; ;;; kukit.E += ':' + rule.kssSelector.name + '].'; -;;; throw new kukit.err.tk.ParsingError(msg); +;;; throw new kukit.err.tk.ParsingError(kukit.E); ;;; } this.rules.push(rule); } Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js Thu Aug 16 18:34:35 2007 @@ -146,7 +146,7 @@ ;;; var msg = nodes.length + ' nodes found for action [' + name + '].'; ;;; kukit.logDebug(msg); ;;; if (!nodes || nodes.length == 0) { -;;; kukit.logWarning(); +;;; kukit.logWarning('Action selector found no nodes.'); ;;; } for (var i=0; i < nodes.length; i++) { this.node = nodes[i]; From gotcha at codespeak.net Thu Aug 16 18:45:33 2007 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Thu, 16 Aug 2007 18:45:33 +0200 (CEST) Subject: [KSS-checkins] r45742 - kukit/kukit.js/branch/gotcha-code-cleanup/kukit Message-ID: <20070816164533.CA958815E@code0.codespeak.net> Author: gotcha Date: Thu Aug 16 18:45:32 2007 New Revision: 45742 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js kukit/kukit.js/branch/gotcha-code-cleanup/kukit/resourcedata.js kukit/kukit.js/branch/gotcha-code-cleanup/kukit/serveraction.js Log: coherent naming for kss parameters Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/oper.js Thu Aug 16 18:45:32 2007 @@ -119,11 +119,11 @@ // Check kss action parms var nodes = null; // XXX TODO this should be refactored with parms constraint checking - for (key in this.kssParameters) { + for (key in this.kssParms) { switch (key) { case 'kssSelector': { // The value already contains the results - nodes = this.kssParameters[key]; + nodes = this.kssParms[key]; } break; default: { ;;; kukit.E = 'Wrong parameter : [' + key + '] starts with '; @@ -168,7 +168,7 @@ kukit.op.Oper.prototype.executeDefaultAction = function(name, optional) { // Check kss action parms -;;; for (key in this.kssParameters) { +;;; for (key in this.kssParms) { ;;; kukit.E = 'Wrong parameter : [' + key + '] starts with "kss";'; ;;; kukit.E += ' normal parms (that do not start with kss)'; ;;; kukit.E += ' only are allowed in action-default keys.'; @@ -200,7 +200,7 @@ }; kukit.op.Oper.prototype.executeServerAction = function(name) { -;;; for (key in this.kssParameters) { +;;; for (key in this.kssParms) { ;;; if (key == 'kssUrl') { ;;; // Value will be evaluated. ;;; } else if (key == 'kssSubmitForm') { Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/resourcedata.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/resourcedata.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/resourcedata.js Thu Aug 16 18:45:32 2007 @@ -512,7 +512,7 @@ // handled as appropriate. // A cloned oper is returned. var parms = {}; - var kssParameters = {}; + var kssParms = {}; // Make sure we have defaultParameters on oper if (typeof(oper.defaultParameters) == 'undefined') { oper.defaultParameters = {}; @@ -520,8 +520,8 @@ for (var key in this.parms) { var kssvalue = this.parms[key]; if (key.match(/^kss/)) { - // kssXxx parms are separated to kssParameters. - kssvalue.evaluate(kssParameters, key, oper.node, + // kssXxx parms are separated to kssParms. + kssvalue.evaluate(kssParms, key, oper.node, oper.defaultParameters); } else { // evaluate the method parms into parms @@ -531,7 +531,7 @@ } var anOper = oper.clone({ 'parms': parms, - 'kssParameters': kssParameters, + 'kssParms': kssParms, 'action': this }); return anOper; Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/serveraction.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/serveraction.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/serveraction.js Thu Aug 16 18:45:32 2007 @@ -20,7 +20,7 @@ kukit.sa = {}; kukit.sa.ServerAction = function(name, oper) { - this.url = oper.kssParameters.kssUrl; + this.url = oper.kssParms.kssUrl; if (typeof(this.url) == 'undefined') { this.url = name; } @@ -80,7 +80,7 @@ // also add the parms that result from submitting an entire form. // This is, unlike the normal parms, is a list. Keys and values are // added at the end of the query, without mangling names. - var submitForm = this.oper.kssParameters.kssSubmitForm; + var submitForm = this.oper.kssParms.kssSubmitForm; if (submitForm) { for (var i=0; i Author: gotcha Date: Thu Aug 16 19:09:19 2007 New Revision: 45743 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/errors.js kukit/kukit.js/branch/gotcha-code-cleanup/kukit/eventreg.js kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kukit.js Log: better error messages Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/errors.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/errors.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/errors.js Thu Aug 16 19:09:19 2007 @@ -57,7 +57,7 @@ if (typeof err.number == 'number') { // show sensible error on IE err.toString = function () { - return this.name + ': ' + this.message; + return this.name + '; ' + this.message; }; } return err; @@ -91,7 +91,7 @@ ;;; kukit.err.cex.prototype.__superinit__ = kukit.err.cex.prototype.__init__; ;;; kukit.err.cex.prototype.__init__ = function(name, e, command) { ;;; var kw = this.__superinit__(name, ''); -;;; kw.message = 'Command "' + command.name + '": ' + e.toString(); +;;; kw.message = 'Command [' + command.name + '] ' + e.toString(); ;;; return kw; ;;; }; @@ -109,7 +109,7 @@ ;;; var kw = this.__superinit__(name, message); ;;; kw.eventName = eventName; ;;; kw.eventNamespace = eventNamespace; -;;; kw.message += ' when binding event name [' + eventName; +;;; kw.message += ' When binding event name [' + eventName; ;;; kw.message += '] in namespace [' + eventNamespace + '].'; ;;; return kw; ;;; }; Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/eventreg.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/eventreg.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/eventreg.js Thu Aug 16 19:09:19 2007 @@ -743,10 +743,10 @@ ;;; try { method.call(binderInstance, p1, p2, p3, p4, p5, p6); ;;; } catch(e) { -;;; var msg = 'Error during binding, reason: [' + e + '].'; -;;; var names = evenset.names; +;;; var msg = e; +;;; var names = eventSet.names; ;;; var namespace = eventSet.namespace; -;;; kukit.E = new kukit.err.rd.EventBindError(msg ,names, namespace); +;;; kukit.E = new kukit.err.rd.EventBindError(msg, names, namespace); ;;; throw kukit.E; ;;; } }; Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kukit.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kukit.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kukit.js Thu Aug 16 19:09:19 2007 @@ -261,7 +261,7 @@ ;;; } catch(e) { ;;; // Event setup errors are logged. ;;; if (e.name == 'RuleMergeError' || e.name == 'EventBindError') { -;;; var msg = 'Error setting up events: ' + e.toString(); +;;; var msg = 'Events setup - ' + e.toString(); ;;; // Log the message ;;; kukit.logFatal(msg); ;;; // and throw it... From reebalazs at codespeak.net Thu Aug 16 19:29:17 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 19:29:17 +0200 (CEST) Subject: [KSS-checkins] r45744 - kukit/kukit.js/branch/gotcha-code-cleanup/tests Message-ID: <20070816172917.F026F8169@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 19:29:15 2007 New Revision: 45744 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_requestmanager.js Log: Adjust test Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_requestmanager.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_requestmanager.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_requestmanager.js Thu Aug 16 19:29:15 2007 @@ -54,21 +54,21 @@ q.push(i3); var i4 = new kukit.rm.RequestItem(null, 4, null, 10000, 4000); q.push(i4); - this.assertEquals(q.nr, 4); + this.assertEquals(q.count, 4); // pop 2, 4 this.assertEquals(q.pop(i2), true); this.assertEquals(q.pop(i4), true); - this.assertEquals(q.nr, 2); + this.assertEquals(q.count, 2); this.assertEquals(expired.length, 0); // expire 1, 2 q.handleExpiration(12010); - this.assertEquals(q.nr, 1); + this.assertEquals(q.count, 1); this.assertEquals(expired.length, 1); this.assertEquals(expired[0].url, 1); // pop 1, 3 this.assertEquals(q.pop(i1), false); this.assertEquals(q.pop(i3), true); - this.assertEquals(q.nr, 0); + this.assertEquals(q.count, 0); this.assertEquals(expired.length, 1); }; From reebalazs at codespeak.net Thu Aug 16 19:38:11 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 19:38:11 +0200 (CEST) Subject: [KSS-checkins] r45745 - kukit/kukit.js/branch/gotcha-code-cleanup/tests Message-ID: <20070816173811.361E68166@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 19:38:10 2007 New Revision: 45745 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Log: Adjust test Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Thu Aug 16 19:38:10 2007 @@ -302,6 +302,7 @@ this.assertEquals(parser.finished, true); this.assertListEquals(parser.args, ['a', 'b']); +return; txt= "(a, b c )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, From reebalazs at codespeak.net Thu Aug 16 19:38:21 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 19:38:21 +0200 (CEST) Subject: [KSS-checkins] r45746 - kukit/kukit.js/branch/gotcha-code-cleanup/tests Message-ID: <20070816173821.DF92E8169@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 19:38:21 2007 New Revision: 45746 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Log: Adjust test Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Thu Aug 16 19:38:21 2007 @@ -302,7 +302,6 @@ this.assertEquals(parser.finished, true); this.assertListEquals(parser.args, ['a', 'b']); -return; txt= "(a, b c )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, From gotcha at codespeak.net Thu Aug 16 19:53:55 2007 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Thu, 16 Aug 2007 19:53:55 +0200 (CEST) Subject: [KSS-checkins] r45747 - in kukit/kukit.js/branch/gotcha-code-cleanup: kukit tests Message-ID: <20070816175355.787678149@code0.codespeak.net> Author: gotcha Date: Thu Aug 16 19:53:54 2007 New Revision: 45747 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Log: fix tests Modified: kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/kukit/kssparser.js Thu Aug 16 19:53:54 2007 @@ -355,7 +355,7 @@ // The previous txt must be all whitespace. if (txt) { ;;; kukit.E = 'Wrong value : unallowed characters [' + txt + ']'; -;;; kukit.E += 'before a string.'; +;;; kukit.E += ' before a string.'; this.emitError(kukit.E); } // the next one must be a string. Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Thu Aug 16 19:53:54 2007 @@ -94,31 +94,31 @@ txt= " in /* valid */ 'a string';"; src = new kukit.tk.Cursor(txt); - this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Excess characters before the string in property value'); + this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Wrong value : unallowed characters [in] before a string.'); txt= " 'a string' trashy;"; src = new kukit.tk.Cursor(txt); - this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Excess characters after the property value'); + this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Wrong value : unallowed characters after the property.'); txt= " 'a string' trashy \"trishy\";"; src = new kukit.tk.Cursor(txt); - this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Excess characters after the property value'); + this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, 'Wrong value : unallowed characters after the property.'); // multiword not ok txt= "b c"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Property value must be one word', 5); + 'Wrong value : [b c] cannot have spaces.', 5); txt= " apples and oranges ;"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Property value must be one word', 25); + 'Wrong value : [apples and oranges] cannot have spaces.', 25); txt= " /* comments; */ apples and /* more comments and*/ oranges ;"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Property value must be one word', 62); + 'Wrong value : [/* comments; */ apples and /* more comments and*/ oranges ;] cannot have spaces.', 62); // in string, multiword ok even in method txt= "'b c' "; @@ -132,13 +132,13 @@ txt= "a'b c'"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Excess characters before the string in property value', 6); + 'Wrong value : unallowed characters after the property.', 6); // Not ok txt= "'a''b c'"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Excess characters after the property value', 8); + 'Wrong value : unallowed characters after the property.', 8); }; @@ -305,12 +305,13 @@ txt= "(a, b c )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, - 'Argument value must be one word', 9); + his.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, + 'Wrong method argument [b c] : value cannot have spaces.', 9); txt= "(a, b 'x' )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, - 'Expected [comma], found [string]', 11); + 'Unexpected token : [string] found, [comma] was expected.', 11); }; @@ -339,7 +340,8 @@ var txt= "a:dnd-drag-toomuch(hello)"; var src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must be name or namespace-name but no more dashes, "dnd-drag-toomuch"', 25); + 'Wrong event selector [dnd-drag-toomuch] : qualifier should be : or :' + , 25); // maybe in std css space is not allowed in the parents, // but we tolerate it @@ -669,11 +671,11 @@ // } rule = parser.eventRules[0]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.css, '#calendar-previous a'); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['kukitresponse/kukitGetPreviousMonth']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth'); @@ -688,11 +690,11 @@ // } rule = parser.eventRules[1]; this.assertDictEquals(rule.parms, {'delay': '2000'}); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.css, 'div#update-area'); - this.assertEquals(rule.kss_selector.name, 'timeout'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['getCurrentTime']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'getCurrentTime'); @@ -707,11 +709,11 @@ // } rule = parser.eventRules[2]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, '#calendar-previous a'); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['kukitresponse/kukitGetPreviousMonth']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'kukitresponse/kukitGetPreviousMonth'); @@ -725,11 +727,11 @@ // } rule = parser.eventRules[3]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, '#calendar-previous a'); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['kukitGetPreviousMonth']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'kukitGetPreviousMonth'); @@ -744,11 +746,11 @@ // } rule = parser.eventRules[4]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, '#calendar-previous a'); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.name, 'drag'); - this.assertEquals(rule.kss_selector.namespace, 'dnd'); - this.assertEquals(rule.kss_selector.id, 'shelve'); + 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.id, 'shelve'); action = rule.actions.content['whatever']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'whatever'); @@ -763,11 +765,11 @@ //} rule = parser.eventRules[5]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, '#button-one'); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, 'annoyClicker'); - this.assertEquals(rule.kss_selector.id, 'annoy-me'); + this.assertEquals(rule.kssSelector.css, '#button-one'); + this.assertEquals(rule.kssSelector.isEventSelector, true); + this.assertEquals(rule.kssSelector.name, 'click'); + this.assertEquals(rule.kssSelector.namespace, 'annoyClicker'); + this.assertEquals(rule.kssSelector.id, 'annoy-me'); action = rule.actions.content['clickedButton']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'clickedButton'); @@ -783,11 +785,11 @@ //} rule = parser.eventRules[6]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, 'document'); - this.assertEquals(rule.kss_selector.isMethodSelector, true); - this.assertEquals(rule.kss_selector.name, 'annoy'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, 'annoyMe'); + this.assertEquals(rule.kssSelector.css, 'document'); + this.assertEquals(rule.kssSelector.isMethodSelector, true); + this.assertEquals(rule.kssSelector.name, 'annoy'); + this.assertEquals(rule.kssSelector.namespace, null); + this.assertEquals(rule.kssSelector.id, 'annoyMe'); action = rule.actions.content['alert']; this.assertEquals(action.type, 'C'); this.assertEquals(action.name, 'alert'); @@ -804,11 +806,11 @@ //} rule = parser.eventRules[7]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.css, 'document'); - this.assertEquals(rule.kss_selector.isMethodSelector, true); - this.assertEquals(rule.kss_selector.name, 'annoy'); - this.assertEquals(rule.kss_selector.namespace, 'annoyClicker'); - this.assertEquals(rule.kss_selector.id, 'annoyMe'); + this.assertEquals(rule.kssSelector.css, 'document'); + this.assertEquals(rule.kssSelector.isMethodSelector, true); + this.assertEquals(rule.kssSelector.name, 'annoy'); + this.assertEquals(rule.kssSelector.namespace, 'annoyClicker'); + this.assertEquals(rule.kssSelector.id, 'annoyMe'); action = rule.actions.content['alert']; this.assertEquals(action.type, 'C'); this.assertEquals(action.name, 'alert'); @@ -820,11 +822,11 @@ // rule 8 rule = parser.eventRules[8]; this.assertDictEquals(rule.parms, {'delay': '2000'}); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.css, 'div#update-area'); - this.assertEquals(rule.kss_selector.name, 'timeout'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['getCurrentTime']; this.assertEquals(action.type, 'S'); this.assertEquals(action.name, 'getCurrentTime'); @@ -848,11 +850,11 @@ //} rule = parser.eventRules[9]; this.assertDictEquals(rule.parms, {'preventdefault': 'true'}); - this.assertEquals(rule.kss_selector.css, 'document'); - this.assertEquals(rule.kss_selector.isMethodSelector, true); - this.assertEquals(rule.kss_selector.name, 'annoy'); - this.assertEquals(rule.kss_selector.namespace, 'annoyClicker'); - this.assertEquals(rule.kss_selector.id, 'annoyMe'); + this.assertEquals(rule.kssSelector.css, 'document'); + this.assertEquals(rule.kssSelector.isMethodSelector, true); + this.assertEquals(rule.kssSelector.name, 'annoy'); + this.assertEquals(rule.kssSelector.namespace, 'annoyClicker'); + this.assertEquals(rule.kssSelector.id, 'annoyMe'); action = rule.actions.content['namespaced-alert']; this.assertEquals(action.type, 'C'); this.assertEquals(action.name, 'namespaced-alert'); @@ -871,11 +873,11 @@ rule = parser.eventRules[10]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.css, '#button_1'); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['setStyle']; this.assertEquals(action.type, 'C'); this.assertEquals(action.name, 'setStyle'); @@ -897,11 +899,11 @@ rule = parser.eventRules[11]; this.assertDictEquals(rule.parms, {}); - this.assertEquals(rule.kss_selector.isEventSelector, true); - this.assertEquals(rule.kss_selector.css, '#button_3'); - this.assertEquals(rule.kss_selector.name, 'click'); - this.assertEquals(rule.kss_selector.namespace, null); - this.assertEquals(rule.kss_selector.id, null); + 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); + this.assertEquals(rule.kssSelector.id, null); action = rule.actions.content['setStyle']; this.assertEquals(action.type, 'C'); this.assertEquals(action.name, 'setStyle'); From reebalazs at codespeak.net Thu Aug 16 20:05:14 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 20:05:14 +0200 (CEST) Subject: [KSS-checkins] r45748 - kukit/kukit.js/branch/gotcha-code-cleanup/tests Message-ID: <20070816180514.63818815D@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 20:05:13 2007 New Revision: 45748 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Log: Adjust test Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Thu Aug 16 20:05:13 2007 @@ -305,13 +305,12 @@ txt= "(a, b c )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, - his.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, - 'Wrong method argument [b c] : value cannot have spaces.', 9); + 'Wrong method argument [b c] : value cannot have spaces', 9); txt= "(a, b 'x' )"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.MethodArgs, src, kukit.kssp.openparent, true, - 'Unexpected token : [string] found, [comma] was expected.', 11); + 'Unexpected token : [string] found, [comma] was expected.', 11); }; From reebalazs at codespeak.net Thu Aug 16 20:30:00 2007 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Thu, 16 Aug 2007 20:30:00 +0200 (CEST) Subject: [KSS-checkins] r45749 - kukit/kukit.js/branch/gotcha-code-cleanup/tests Message-ID: <20070816183000.9E5628166@code0.codespeak.net> Author: reebalazs Date: Thu Aug 16 20:29:59 2007 New Revision: 45749 Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Log: Adjust tests Modified: kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js ============================================================================== --- kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js (original) +++ kukit/kukit.js/branch/gotcha-code-cleanup/tests/test_kssparser.js Thu Aug 16 20:29:59 2007 @@ -39,7 +39,7 @@ if (! a.isMethod) { this.assertEquals(a.txt, b.txt, reason + 'text mismatch' ); } else { - this.assertEquals(a.methodname, b.methodname, reason + 'methodname mismatch'); + this.assertEquals(a.methodName, b.methodName, reason + 'methodName mismatch'); this.assertListEquals(a.args, b.args, reason + 'args mismatch'); } }; @@ -118,7 +118,8 @@ txt= " /* comments; */ apples and /* more comments and*/ oranges ;"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Wrong value : [/* comments; */ apples and /* more comments and*/ oranges ;] cannot have spaces.', 62); + //'Wrong value : [/* comments; */ apples and /* more comments and*/ oranges ;] cannot have spaces.', 62); + 'Wrong value : [apples and oranges] cannot have spaces.', 62); // in string, multiword ok even in method txt= "'b c' "; @@ -132,13 +133,13 @@ txt= "a'b c'"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Wrong value : unallowed characters after the property.', 6); + 'Wrong value : unallowed characters [a] before a string', 6); // Not ok txt= "'a''b c'"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValueInMethod, src, null, true, - 'Wrong value : unallowed characters after the property.', 8); + 'Wrong value : unallowed characters after the property.', 6); }; @@ -180,7 +181,7 @@ parser = new kukit.kssp.PropValue(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(parser.value.isMethod, true); - this.assertEquals(parser.value.methodname, 'formVar'); + this.assertEquals(parser.value.methodName, 'formVar'); this.assertListEquals(parser.value.args, ['x', 'y']); // params ok @@ -189,7 +190,7 @@ parser = new kukit.kssp.PropValue(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(parser.value.isMethod, true); - this.assertEquals(parser.value.methodname, 'formVar'); + this.assertEquals(parser.value.methodName, 'formVar'); this.assertListEquals(parser.value.args, ['x', 'y']); //ok @@ -198,23 +199,23 @@ parser = new kukit.kssp.PropValue(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(parser.value.isMethod, true); - this.assertEquals(parser.value.methodname, 'formVar'); + this.assertEquals(parser.value.methodName, 'formVar'); this.assertListEquals(parser.value.args, ['x', 'y']); txt= " a formVar(x, y)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValue, src, null, true, - 'Method property value must have a one-word method name', 16); + 'Wrong value : method name [a formVar] cannot have spaces.', 16); txt= " 'formVar'(x, y)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValue, src, null, true, - 'Excess characters after the property value', 16); + 'Wrong value : unallowed characters after the property', 16); txt= "formVar(x, y) xxx"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.PropValue, src, null, true, - 'Excess characters after the property value', 17); + 'Wrong value : unallowed characters after the property', 17); }; this.testPropValueInPseudo = function() { @@ -224,7 +225,7 @@ var src = new kukit.tk.Cursor(txt); var parser = new kukit.kssp.PropValueInPseudo(src, null, true); this.assertEquals(parser.finished, true); - this.assertEquals(parser.value.methodname, 'b'); + this.assertEquals(parser.value.methodName, 'b'); // multiword ok but does not finish txt= "b c"; @@ -232,7 +233,7 @@ parser = new kukit.kssp.PropValueInPseudo(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(src.pos, 1); - this.assertEquals(parser.value.methodname, 'b'); + this.assertEquals(parser.value.methodName, 'b'); // space ok but does not finish txt= " b"; @@ -240,7 +241,7 @@ parser = new kukit.kssp.PropValueInPseudo(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(src.pos, 0); - this.assertEquals(parser.value.methodname, ''); + this.assertEquals(parser.value.methodName, ''); // ok, does not finish txt= "apples/* more comments and*/"; @@ -248,14 +249,14 @@ parser = new kukit.kssp.PropValueInPseudo(src, null, true); this.assertEquals(parser.finished, true); this.assertEquals(src.pos, 6); - this.assertEquals(parser.value.methodname, 'apples'); + this.assertEquals(parser.value.methodName, 'apples'); // params ok txt= "click(x)"; src = new kukit.tk.Cursor(txt); parser = new kukit.kssp.PropValueInPseudo(src, null, true); this.assertEquals(parser.finished, true); - this.assertEquals(parser.value.methodname, 'click'); + this.assertEquals(parser.value.methodName, 'click'); this.assertListEquals(parser.value.args, ['x']); // more then 1 args not ok (but we check it only from kss selector) @@ -357,13 +358,13 @@ txt= " a div#id:drag (hello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 25); + 'Wrong event selector : missing event qualifier : or :().', 25); // We do not allow space here txt= " a div#id: drag(hello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 23); + 'Wrong event selector : missing event qualifier : or :().', 23); txt= "a div#id:drop "; src = new kukit.tk.Cursor(txt); @@ -398,34 +399,34 @@ txt= "a:drop('hello', bello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss pseudo value must not have more then one parms', 22); + 'Wrong event selector ::() can have only one parameter.', 22); // zero params: not std css but tolerated txt= "a:drop()"; src = new kukit.tk.Cursor(txt); parser = new kukit.kssp.KssSelector(src, null, true); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 8); + 'Wrong event selector : missing event qualifier : or :().', 8); txt= " (hello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 10); + 'Wrong event selector : missing event qualifier : or :().', 10); txt= "hello ('bello')"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 16); + 'Wrong event selector : missing event qualifier : or :().', 16); txt= "a:lang(hu) (hello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 19); + 'Wrong event selector : missing event qualifier : or :().', 19); txt= "a:lang(hu) b (hello)"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 20); + 'Wrong event selector : missing event qualifier : or :().', 20); // A valid attr selector in the css selector part. txt= "a[href=hello].class:lang(hu) div#id:click "; @@ -450,7 +451,7 @@ txt= " a:lang(hu) click "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 20); + 'Wrong event selector : missing event qualifier : or :().', 20); // Spaces in the end txt= " a:lang(hu, uh) b:click "; @@ -498,22 +499,22 @@ txt= "a:click:clack "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 14); + 'Wrong event selector : missing event qualifier : or :().', 14); txt= "a:click :clack "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'In kss event selector no space can be before the colon', 18); + 'Wrong event selector : space before the colon. at row', 18); txt= "a:click/*comment */:clack "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 26); + 'Wrong event selector : missing event qualifier : or :().', 26); txt= "click/*comment here*/:clack "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 28); + 'Wrong event selector : missing event qualifier : or :().', 28); txt= "/*comment here*/click:clack "; src = new kukit.tk.Cursor(txt); @@ -555,12 +556,12 @@ txt= "document"; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must end with an event qualifier :event or :event(id)', 8); + 'Wrong event selector : missing event qualifier : or :().', 8); txt= "document: "; src = new kukit.tk.Cursor(txt); this.assertParsingError(kukit.kssp.KssSelector, src, null, true, - 'Kss event selector must have a one-word name after the colon', 10); + 'Wrong event selector : event name cannot have spaces. at row', 10); // also, "behaviour:" works txt= " behaviour:click(hello) "; From gotcha at codespeak.net Thu Aug 16 20:56:34 2007 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Thu, 16 Aug 2007 20:56:34 +0200 (CEST) Subject: [KSS-checkins] r45751 - kukit/kukit.js/branch/gotcha-code-cleanup/kukit Message-ID: <20070816185634.651D5816F@code0.codespeak.net> Author: gotcha Date: Thu Aug 16 20:56:33 2007 New Revision: 45751 Modified: kukit/ku