From jvloothuis at codespeak.net Wed Jul 2 20:42:19 2008 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 2 Jul 2008 20:42:19 +0200 (CEST) Subject: [KSS-checkins] r56247 - kukit/kss.base/branches/grokkerdam-api-tweaks/src/kss/base Message-ID: <20080702184219.D4AE2498184@codespeak.net> Author: jvloothuis Date: Wed Jul 2 20:42:18 2008 New Revision: 56247 Removed: kukit/kss.base/branches/grokkerdam-api-tweaks/src/kss/base/commandset.py Log: Removed unnused file Deleted: /kukit/kss.base/branches/grokkerdam-api-tweaks/src/kss/base/commandset.py ============================================================================== From jvloothuis at codespeak.net Wed Jul 2 20:50:32 2008 From: jvloothuis at codespeak.net (jvloothuis at codespeak.net) Date: Wed, 2 Jul 2008 20:50:32 +0200 (CEST) Subject: [KSS-checkins] r56248 - in kukit/kss.base/trunk: docs src/kss/base Message-ID: <20080702185032.4474B698031@codespeak.net> Author: jvloothuis Date: Wed Jul 2 20:50:30 2008 New Revision: 56248 Added: kukit/kss.base/trunk/src/kss/base/core.py - copied unchanged from r56247, kukit/kss.base/branches/grokkerdam-api-tweaks/src/kss/base/core.py kukit/kss.base/trunk/src/kss/base/core.txt - copied unchanged from r56247, kukit/kss.base/branches/grokkerdam-api-tweaks/src/kss/base/core.txt Removed: kukit/kss.base/trunk/src/kss/base/commandset.py kukit/kss.base/trunk/src/kss/base/corecommands.py kukit/kss.base/trunk/src/kss/base/corecommands.txt Modified: kukit/kss.base/trunk/docs/HISTORY.txt kukit/kss.base/trunk/src/kss/base/__init__.py kukit/kss.base/trunk/src/kss/base/commands.py kukit/kss.base/trunk/src/kss/base/commands.txt kukit/kss.base/trunk/src/kss/base/config.py kukit/kss.base/trunk/src/kss/base/plugin.py kukit/kss.base/trunk/src/kss/base/plugin.txt kukit/kss.base/trunk/src/kss/base/registry.py kukit/kss.base/trunk/src/kss/base/selectors.py kukit/kss.base/trunk/src/kss/base/tests.py Log: Merged with the branch made on the Grokkerdam sprint based on Balazs's feedback. The shorty summary is that concept of command sets changed from classes to modules. Modified: kukit/kss.base/trunk/docs/HISTORY.txt ============================================================================== --- kukit/kss.base/trunk/docs/HISTORY.txt (original) +++ kukit/kss.base/trunk/docs/HISTORY.txt Wed Jul 2 20:50:30 2008 @@ -4,6 +4,15 @@ kss.base - 0.4dev Unreleased + - changed the concept of command sets from classes to + modules. This means you now need to import the helpers + directly. For the core this would mean doing something like + this:: + + from kss.base import core, KSSCommands + commands = KSSCommands() + core.replaceInnerHTML(commands, '#some-node', 'some value') + - renamed `load_plugins`, `unload_plugins`, and `activated_plugins` to respectively `activate`, `deactivate`, and `active_plugins` [gotcha] Modified: kukit/kss.base/trunk/src/kss/base/__init__.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/__init__.py (original) +++ kukit/kss.base/trunk/src/kss/base/__init__.py Wed Jul 2 20:50:30 2008 @@ -1,4 +1,3 @@ from kss.base.commands import KSSCommands -from kss.base.selectors import selectors from kss.base.plugin import activate from kss.base.commands import xmldata, htmldata, cdatadata Modified: kukit/kss.base/trunk/src/kss/base/commands.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/commands.py (original) +++ kukit/kss.base/trunk/src/kss/base/commands.py Wed Jul 2 20:50:30 2008 @@ -6,7 +6,6 @@ except ImportError: # no soup support BeautifulSoup = BeautifulStoneSoup = lambda v: v -from kss.base.registry import command_set_registry from kss.base.selectors import Selector soup_enabled = False @@ -122,9 +121,3 @@ lines.append(line + ')') return '\n'.join(lines) - def __getattr__(self, name): - return command_set_registry.get(name)(self) - -class KSSCommandSet(object): - def __init__(self, commands): - self.commands = commands Modified: kukit/kss.base/trunk/src/kss/base/commands.txt ============================================================================== --- kukit/kss.base/trunk/src/kss/base/commands.txt (original) +++ kukit/kss.base/trunk/src/kss/base/commands.txt Wed Jul 2 20:50:30 2008 @@ -172,61 +172,6 @@ replaceHTML('#someid', html='some value') -Command sets -============ - -Command sets wrap the commands system and provide a highlevel API to -communicate with the browser. Command sets are responsible for escaping and -validating data. - -Let us take a look at the base class for all commandsets. - - >>> from kss.base.commands import KSSCommandSet - >>> commands = KSSCommands() - >>> commandset = KSSCommandSet(commands) - -It wraps commands in the command set. We can still access the -commands directly by using the `commands` attribute. - - >>> commandset.commands - <...KSSCommands object at ...> - -Take a look at the core command set for a better understanding of the usage pattern. - - -Using command sets -================== - -In the previous examples, we saw how to load command sets directly. Usually, we -do not need to do this. This is because the command renderer can also look -them up by name. This is done by using the KSS plugin registry. - -We will now demonstrate this in the next example. First we need to load the -registry. - - >>> from kss.base.corecommands import KSSCoreCommands - >>> from kss.base.registry import command_set_registry - -Now we can register our command set. (For more information about the registry -look at the documentation of kss.pluginregistry.) - - >>> command_set_registry.register('core', KSSCoreCommands) - -Command sets are accessed as attributes on the command renderer. - - >>> commands = KSSCommands() - >>> commands.core.replaceInnerHTML(css('div'), 'example') - >>> print commands - replaceInnerHTML(css('div'), html=htmldata('example')) - -In this case, we used `replaceInnerHTML` method that is defined in the core -command set. This is equivalent but shorter than explicitely adding a command. - -Let us clean up. - - >>> command_set_registry.unregister('core') - - Soup support ============ Deleted: /kukit/kss.base/trunk/src/kss/base/commandset.py ============================================================================== Modified: kukit/kss.base/trunk/src/kss/base/config.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/config.py (original) +++ kukit/kss.base/trunk/src/kss/base/config.py Wed Jul 2 20:50:30 2008 @@ -1,7 +1,7 @@ import os from kss.base.plugin import Plugin -from kss.base.corecommands import KSSCoreCommands +from kss.base import core from kss.base.selectors import css, htmlid, samenode, parentnode kukit_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'kukit') @@ -43,7 +43,7 @@ for f in third_party_js] commandsets = { - 'core': KSSCoreCommands, + 'core': core, } selectors = {None: [css, htmlid, samenode, parentnode]} Deleted: /kukit/kss.base/trunk/src/kss/base/corecommands.py ============================================================================== --- /kukit/kss.base/trunk/src/kss/base/corecommands.py Wed Jul 2 20:50:30 2008 +++ (empty file) @@ -1,91 +0,0 @@ -from kss.base.commands import KSSCommandSet -from kss.base import htmldata - -class KSSCoreCommands(KSSCommandSet): - - def setAttribute(self, selector, name, value): - self.commands.add('setAttribute', selector, name=name, value=value) - - def setStyle(self, selector, name, value): - if ' ' in name: - raise ValueError('Style properties cannot contain spaces') - self.commands.add('setStyle', selector, name=name, value=value) - - def addClass(self, selector, value): - self.commands.add('addClass', selector, value=value) - - def removeClass(self, selector, value): - self.commands.add('removeClass', selector, value=value) - - def toggleClass(self, selector, value): - self.commands.add('toggleClass', selector, value=value) - - def focus(self, selector): - self.commands.add('focus', selector) - - def replaceInnerHTML(self, selector, value, withKssSetup=True): - """Replace the contents of a node (selector) with the new `value`""" - extra_args = {} - if not withKssSetup: - extra_args['withKssSetup'] = 'False' - self.commands.add('replaceInnerHTML', selector, html=htmldata(value), - **extra_args) - - def replaceHTML(self, selector, value, withKssSetup=True): - extra_args = {} - if not withKssSetup: - extra_args['withKssSetup'] = 'False' - self.commands.add('replaceHTML', selector, html=value, - **extra_args) - - def insertHTMLBefore(self, selector, value): - self.commands.add('insertHTMLBefore', selector, html=value) - - def insertHTMLAfter(self, selector, value): - self.commands.add('insertHTMLAfter', selector, html=value) - - def insertHTMLAsFirstChild(self, selector, value): - self.commands.add('insertHTMLAsFirstChild', selector, html=value) - - def insertHTMLAsLastChild(self, selector, value): - self.commands.add('insertHTMLAsLastChild', selector, html=value) - - - - def deleteNode(self, selector): - self.commands.add('deleteNode', selector) - - def deleteNodeBefore(self, selector): - self.commands.add('deleteNodeBefore', selector) - - def deleteNodeAfter(self, selector): - self.commands.add('deleteNodeAfter', selector) - - def clearChildNodes(self, selector): - self.commands.add('clearChildNodes', selector) - - - - def copyChildNodesFrom(self, selector, id): - self.commands.add('copyChildNodesFrom', selector, html_id=id) - - def copyChildNodesTo(self, selector, id): - self.commands.add('copyChildNodesTo', selector, html_id=id) - - - - def moveNodeBefore(self, selector, id): - self.commands.add('moveNodeBefore', selector, html_id=id) - - def moveNodeAfter(self, selector, id): - self.commands.add('moveNodeAfter', selector, html_id=id) - - - def setStateVar(self, varname, value): - self.commands.add('setStateVar', None, varname=varname, value=value) - - def triggerEvent(self, name, **kwargs): - self.commands.add('triggerEvent', None, name=name, **kwargs) - - - Deleted: /kukit/kss.base/trunk/src/kss/base/corecommands.txt ============================================================================== --- /kukit/kss.base/trunk/src/kss/base/corecommands.txt Wed Jul 2 20:50:30 2008 +++ (empty file) @@ -1,265 +0,0 @@ -============= -Core commands -============= - -The core commands wrap all KSS commands provided by the core plugin. -They are always available. -These do not contain any effects and focus mostly on DOM manipulation. - -First we instantiate the command set. - - >>> from kss.base.corecommands import KSSCoreCommands - >>> from kss.base import KSSCommands - >>> from kss.base.selectors import css - - >>> commands = KSSCommands() - >>> core = KSSCoreCommands(commands) - -Let us look at the individual methods provided by the core commands. - - >>> core.replaceInnerHTML(css('div'), 'some <h1>html</h1>') - >>> commands.render() - '...replaceInnerHTML......' - ------------------ -Node modification ------------------ - -Set attribute -------------- - - >>> commands.clear() - >>> core.setAttribute(css('div'), 'some name', 'some value') - >>> print commands - setAttribute(css('div'), name='some name', value='some value') - -Set style ---------- - -You can use `setStyle` to change the look off an element. - - >>> commands.clear() - >>> core.setStyle(css('div'), 'somename', 'some value') - >>> print commands - setStyle(css('div'), name='somename', value='some value') - -It also has some validation so that you do not accidentily do an -unallowed thing. - - >>> core.setStyle(css('div'), 'some name', 'some value') - Traceback (most recent call last): - ... - ValueError: Style properties cannot contain spaces - - -Add class ---------- - - >>> commands.clear() - >>> core.addClass(css('div'), 'somename') - >>> print commands - addClass(css('div'), value='somename') - - -Remove class ------------- - - >>> commands.clear() - >>> core.removeClass(css('div'), 'somename') - >>> print commands - removeClass(css('div'), value='somename') - -Toggle class ------------- - - >>> commands.clear() - >>> core.toggleClass(css('div'), 'somename') - >>> print commands - toggleClass(css('div'), value='somename') - - ----------------- -HTML replacement ----------------- - -Replace inner HTML ------------------- - - >>> commands.clear() - >>> core.replaceInnerHTML(css('div'), 'some html') - >>> print commands - replaceInnerHTML(css('div'), html=htmldata('some html')) - -You can also avoid KSS event setup. Use this only if you really need -the speedup, as the KSS resource will not be bound to those new nodes. - - >>> core.replaceInnerHTML(css('div'), 'some html', withKssSetup=False) - >>> print commands - replaceInnerHTML(css('div'), html=htmldata('some html')) - replaceInnerHTML(css('div'), html=htmldata('some html'), withKssSetup='False') - - -Replace HTML ------------- - - >>> commands.clear() - >>> core.replaceHTML(css('div'), 'some html') - >>> print commands - replaceHTML(css('div'), html='some html') - -You can also pass withKssSetup here (see replace inner HTML). - - >>> core.replaceHTML(css('div'), 'some html', withKssSetup=False) - >>> print commands - replaceHTML(css('div'), html='some html') - replaceHTML(css('div'), html='some html', withKssSetup='False') - - --------------- -HTML insertion --------------- - -Insert HTML before ------------------- - - >>> commands.clear() - >>> core.insertHTMLBefore(css('div'), 'some html') - >>> print commands - insertHTMLBefore(css('div'), html='some html') - -Insert HTML after ------------------ - - >>> commands.clear() - >>> core.insertHTMLAfter(css('div'), 'some html') - >>> print commands - insertHTMLAfter(css('div'), html='some html') - -Insert HTML as first child --------------------------- - - >>> commands.clear() - >>> core.insertHTMLAsFirstChild(css('div'), 'some html') - >>> print commands - insertHTMLAsFirstChild(css('div'), html='some html') - -Insert HTML as last child --------------------------- - - >>> commands.clear() - >>> core.insertHTMLAsLastChild(css('div'), 'some html') - >>> print commands - insertHTMLAsLastChild(css('div'), html='some html') - - ------------- -Node removal ------------- - -Delete node ------------ - - >>> commands.clear() - >>> core.deleteNode(css('div')) - >>> print commands - deleteNode(css('div')) - -Delete node before ------------------- - - >>> commands.clear() - >>> core.deleteNodeBefore(css('div')) - >>> print commands - deleteNodeBefore(css('div')) - -Delete node after ------------------ - - >>> commands.clear() - >>> core.deleteNodeAfter(css('div')) - >>> print commands - deleteNodeAfter(css('div')) - -Clear child nodes ------------------ - - >>> commands.clear() - >>> core.clearChildNodes(css('div')) - >>> print commands - clearChildNodes(css('div')) - -------- -Special -------- - -Focus ------ - - >>> commands.clear() - >>> core.focus(css('div')) - >>> print commands - focus(css('div')) - - -------------- -Copying nodes -------------- - -Copy child nodes from ----------------------- - - >>> commands.clear() - >>> core.copyChildNodesFrom(css('div'), 'nodeid') - >>> print commands - copyChildNodesFrom(css('div'), html_id='nodeid') - - -Copy child nodes to -------------------- - - >>> commands.clear() - >>> core.copyChildNodesTo(css('div'), 'nodeid') - >>> print commands - copyChildNodesTo(css('div'), html_id='nodeid') - - ------------- -Moving nodes ------------- - -Move node before ----------------- - - >>> commands.clear() - >>> core.moveNodeBefore(css('div'), 'nodeid') - >>> print commands - moveNodeBefore(css('div'), html_id='nodeid') - -Move node after ---------------- - - >>> commands.clear() - >>> core.moveNodeAfter(css('div'), 'nodeid') - >>> print commands - moveNodeAfter(css('div'), html_id='nodeid') - - --------------- -Global actions --------------- - -Set client variable -------------------- - - >>> commands.clear() - >>> core.setStateVar('varname', 'value') - >>> print commands - setStateVar(varname='varname', value='value') - -Trigger event -------------- - - >>> commands.clear() - >>> core.triggerEvent('eventname') - >>> print commands - triggerEvent(name='eventname') Modified: kukit/kss.base/trunk/src/kss/base/plugin.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/plugin.py (original) +++ kukit/kss.base/trunk/src/kss/base/plugin.py Wed Jul 2 20:50:30 2008 @@ -2,8 +2,7 @@ from pkg_resources import iter_entry_points -from kss.base.registry import command_set_registry, plugin_registry -from kss.base import selectors as selector_registry +from kss.base.registry import plugin_registry class Plugin(object): priority = 100 @@ -13,28 +12,6 @@ selectors = {} commandsets = {} - def register_commandsets(self, registry): - for name, commandset in self.commandsets.iteritems(): - registry.register(name, commandset) - - def unregister_commandsets(self, registry): - for name, commandset in self.commandsets.iteritems(): - registry.unregister(name) - - def _selectors(self): - for name, selectors in self.selectors.iteritems(): - for selector in selectors: - yield selector.type, selector - - def register_selectors(self): - for id, selector in self._selectors(): - selector_registry.register(id, selector) - - def unregister_selectors(self): - for id, selector in self._selectors(): - selector_registry.unregister(id) - - def javascripts_from(path): javascripts = [] if not os.path.isdir(path): @@ -70,9 +47,6 @@ plugin = plugin_factory() plugin_registry.register(name, plugin) - # Setup of all hooks - plugin.register_commandsets(command_set_registry) - plugin.register_selectors() return raise KeyError("Plugin is not registered: %s" % name) @@ -85,10 +59,6 @@ plugin_factory = entry_point.load() plugin = plugin_factory() - # Tear down of all hooks - plugin.unregister_commandsets(command_set_registry) - plugin.unregister_selectors() - plugin_registry.unregister(name) Modified: kukit/kss.base/trunk/src/kss/base/plugin.txt ============================================================================== --- kukit/kss.base/trunk/src/kss/base/plugin.txt (original) +++ kukit/kss.base/trunk/src/kss/base/plugin.txt Wed Jul 2 20:50:30 2008 @@ -26,7 +26,7 @@ example.) >>> import kss.base - >>> from kss.base.corecommands import KSSCoreCommands + >>> from kss.base import core >>> from kss.base.selectors import Selector >>> class Silly(Selector): @@ -40,7 +40,7 @@ ... 'javascript/plugin.js')] ... extra_javascripts = [] ... commandsets = { - ... 'example': KSSCoreCommands, + ... 'example': core, ... } ... selectors = {'example': [Silly]} @@ -87,14 +87,6 @@ >>> tuple(active_plugins()) (('kss-testing', ),) -The additional selector we registered is now available in the selector -registry. It can be looked up based on the class name with the key -from the registrion as the namespace. - - >>> from kss.base import selectors - >>> print selectors['example-silly']('testing') - example-silly('testing') - Finally we deactivate our plugin to clean up. >>> from kss.base.plugin import deactivate Modified: kukit/kss.base/trunk/src/kss/base/registry.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/registry.py (original) +++ kukit/kss.base/trunk/src/kss/base/registry.py Wed Jul 2 20:50:30 2008 @@ -18,5 +18,4 @@ __getitem__ = get -command_set_registry = Registry() plugin_registry = Registry() Modified: kukit/kss.base/trunk/src/kss/base/selectors.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/selectors.py (original) +++ kukit/kss.base/trunk/src/kss/base/selectors.py Wed Jul 2 20:50:30 2008 @@ -1,5 +1,3 @@ -from kss.base.registry import Registry - class Selector(object): """A base for selectors. Plugins that implement this, need to implement __init__ themselves, and set type as a string. @@ -40,5 +38,3 @@ def __init__(self, value): self.value = value - -selectors = Registry() Modified: kukit/kss.base/trunk/src/kss/base/tests.py ============================================================================== --- kukit/kss.base/trunk/src/kss/base/tests.py (original) +++ kukit/kss.base/trunk/src/kss/base/tests.py Wed Jul 2 20:50:30 2008 @@ -6,7 +6,7 @@ doctest.DocFileSuite( 'selectors.txt', 'registry.txt', 'plugin.txt', - 'commands.txt', 'corecommands.txt', + 'commands.txt', 'core.txt', 'javascript.txt', 'utils.txt', package='kss.base', optionflags=doctest.ELLIPSIS|doctest.REPORT_ONLY_FIRST_FAILURE, From gotcha at codespeak.net Fri Jul 4 10:31:18 2008 From: gotcha at codespeak.net (gotcha at codespeak.net) Date: Fri, 4 Jul 2008 10:31:18 +0200 (CEST) Subject: [KSS-checkins] r56289 - kukit/kss.demo/branch/1.4 Message-ID: <20080704083118.827B7169FC7@codespeak.net> Author: gotcha Date: Fri Jul 4 10:31:18 2008 New Revision: 56289 Modified: kukit/kss.demo/branch/1.4/setup.py Log: package has dependency on elementtree Modified: kukit/kss.demo/branch/1.4/setup.py ============================================================================== --- kukit/kss.demo/branch/1.4/setup.py (original) +++ kukit/kss.demo/branch/1.4/setup.py Fri Jul 4 10:31:18 2008 @@ -28,6 +28,7 @@ # -*- Extra requirements: -*- 'setuptools', 'kss.core>=dev', + 'elementtree' ], entry_points=""" # -*- Entry points: -*- From kukit-checkins at codespeak.net Sun Jul 6 01:54:38 2008 From: kukit-checkins at codespeak.net (VIAGRA ® Official Site) Date: Sun, 6 Jul 2008 01:54:38 +0200 (CEST) Subject: [KSS-checkins] SPECIAL OFFERS-Pharmacy Online July Sale 70% Message-ID: <20080706025231.19626.qmail@dtmd-4db210d2.pool.einsundeins.de> An HTML attachment was scrubbed... URL: http://codespeak.net/pipermail/kukit-checkins/attachments/20080706/cf354164/attachment.htm From reebalazs at codespeak.net Sun Jul 6 16:24:29 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:24:29 +0200 (CEST) Subject: [KSS-checkins] r56334 - kukit/kss.core/branch/1.4/docs Message-ID: <20080706142429.4549A169E3E@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:24:27 2008 New Revision: 56334 Modified: kukit/kss.core/branch/1.4/docs/HISTORY.txt Log: Add missing history Modified: kukit/kss.core/branch/1.4/docs/HISTORY.txt ============================================================================== --- kukit/kss.core/branch/1.4/docs/HISTORY.txt (original) +++ kukit/kss.core/branch/1.4/docs/HISTORY.txt Sun Jul 6 16:24:27 2008 @@ -6,6 +6,10 @@ - ... + - Include meta.zcml from configure.zcml, in order to + allow easier loading of dependent zcml during unittests + [gotcha, jfroche] + kss.core - 1.4.1 Released 2008-06-02 - Add @@kss_devel_mode/needs_old_cssquery, to enable a workaround From reebalazs at codespeak.net Sun Jul 6 16:25:13 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:25:13 +0200 (CEST) Subject: [KSS-checkins] r56335 - kukit/kss.demo/branch/1.4/docs Message-ID: <20080706142513.2B400169E3E@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:25:12 2008 New Revision: 56335 Modified: kukit/kss.demo/branch/1.4/docs/HISTORY.txt Log: Add missing history Modified: kukit/kss.demo/branch/1.4/docs/HISTORY.txt ============================================================================== --- kukit/kss.demo/branch/1.4/docs/HISTORY.txt (original) +++ kukit/kss.demo/branch/1.4/docs/HISTORY.txt Sun Jul 6 16:25:12 2008 @@ -6,6 +6,10 @@ - ... + - Include meta.zcml from configure.zcml, in order to + allow easier loading of dependent zcml during unittests + [gotcha, jfroche] + kss.demo - 1.4.1 Released 2008-06-02 - Prepare for release From reebalazs at codespeak.net Sun Jul 6 16:27:19 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:27:19 +0200 (CEST) Subject: [KSS-checkins] r56336 - kukit/kss.core/tag/1.4.2 Message-ID: <20080706142719.AD34F169E3E@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:27:18 2008 New Revision: 56336 Added: kukit/kss.core/tag/1.4.2/ - copied from r56335, kukit/kss.core/branch/1.4/ Log: Tag release From reebalazs at codespeak.net Sun Jul 6 16:34:42 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:34:42 +0200 (CEST) Subject: [KSS-checkins] r56337 - kukit/kukit.js/tag/1.4.2 Message-ID: <20080706143442.B217B2A00DD@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:34:42 2008 New Revision: 56337 Added: kukit/kukit.js/tag/1.4.2/ - copied from r56336, kukit/kukit.js/branch/1.4/ Log: Tag for release From reebalazs at codespeak.net Sun Jul 6 16:41:35 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:41:35 +0200 (CEST) Subject: [KSS-checkins] r56338 - in kukit/kukit.js/tag/1.4.2: . doc Message-ID: <20080706144135.C395C2A00DD@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:41:35 2008 New Revision: 56338 Modified: kukit/kukit.js/tag/1.4.2/doc/HISTORY.txt kukit/kukit.js/tag/1.4.2/version.txt Log: Set release Modified: kukit/kukit.js/tag/1.4.2/doc/HISTORY.txt ============================================================================== --- kukit/kukit.js/tag/1.4.2/doc/HISTORY.txt (original) +++ kukit/kukit.js/tag/1.4.2/doc/HISTORY.txt Sun Jul 6 16:41:35 2008 @@ -2,10 +2,11 @@ (name of developer listed in brackets) -kukit.js - 1.4dev Unreleased - - - ... - +kukit.js - 1.4.2 Released 2008-07-06 + + - prepare release + [ree] + kukit.js - 1.4.1 Released 2008-06-02 - Fix a typo that caused an exception instead of Modified: kukit/kukit.js/tag/1.4.2/version.txt ============================================================================== --- kukit/kukit.js/tag/1.4.2/version.txt (original) +++ kukit/kukit.js/tag/1.4.2/version.txt Sun Jul 6 16:41:35 2008 @@ -1 +1 @@ -1.4dev unreleased +1.4.2 Released 2008-07-06 From reebalazs at codespeak.net Sun Jul 6 16:42:31 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:42:31 +0200 (CEST) Subject: [KSS-checkins] r56339 - kukit/kss.concatresource/tag/1.4.2 Message-ID: <20080706144231.9CA7D2A0189@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:42:31 2008 New Revision: 56339 Added: kukit/kss.concatresource/tag/1.4.2/ - copied from r56338, kukit/kss.concatresource/branch/1.4/ Log: Tag release From reebalazs at codespeak.net Sun Jul 6 16:45:30 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:45:30 +0200 (CEST) Subject: [KSS-checkins] r56340 - kukit/kukit.js/branch/1.4/doc Message-ID: <20080706144530.8E56B2A0189@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:45:30 2008 New Revision: 56340 Modified: kukit/kukit.js/branch/1.4/doc/HISTORY.txt Log: Adjust history Modified: kukit/kukit.js/branch/1.4/doc/HISTORY.txt ============================================================================== --- kukit/kukit.js/branch/1.4/doc/HISTORY.txt (original) +++ kukit/kukit.js/branch/1.4/doc/HISTORY.txt Sun Jul 6 16:45:30 2008 @@ -5,7 +5,12 @@ kukit.js - 1.4dev Unreleased - ... - + +kukit.js - 1.4.2 Released 2008-07-06 + + - prepare release + [ree] + kukit.js - 1.4.1 Released 2008-06-02 - Fix a typo that caused an exception instead of From reebalazs at codespeak.net Sun Jul 6 16:47:01 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:47:01 +0200 (CEST) Subject: [KSS-checkins] r56341 - in kukit/kss.concatresource/tag/1.4.2: . docs kss/concatresource Message-ID: <20080706144701.68AC82A0189@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:47:01 2008 New Revision: 56341 Removed: kukit/kss.concatresource/tag/1.4.2/setup.cfg Modified: kukit/kss.concatresource/tag/1.4.2/docs/HISTORY.txt kukit/kss.concatresource/tag/1.4.2/kss/concatresource/version.txt kukit/kss.concatresource/tag/1.4.2/setup.py Log: Set release Modified: kukit/kss.concatresource/tag/1.4.2/docs/HISTORY.txt ============================================================================== --- kukit/kss.concatresource/tag/1.4.2/docs/HISTORY.txt (original) +++ kukit/kss.concatresource/tag/1.4.2/docs/HISTORY.txt Sun Jul 6 16:47:01 2008 @@ -6,6 +6,11 @@ - ... +kss.concatresource - 1.4.2 Released 2008-07-06 + + - Prepare for release + [ree] + kss.concatresource - 1.4.1 Released 2008-06-02 - Prepare for release Modified: kukit/kss.concatresource/tag/1.4.2/kss/concatresource/version.txt ============================================================================== --- kukit/kss.concatresource/tag/1.4.2/kss/concatresource/version.txt (original) +++ kukit/kss.concatresource/tag/1.4.2/kss/concatresource/version.txt Sun Jul 6 16:47:01 2008 @@ -1 +1 @@ -1.4dev Unreleased +1.4.2 Released 2008-07-06 Deleted: /kukit/kss.concatresource/tag/1.4.2/setup.cfg ============================================================================== --- /kukit/kss.concatresource/tag/1.4.2/setup.cfg Sun Jul 6 16:47:01 2008 +++ (empty file) @@ -1,3 +0,0 @@ -[egg_info] -tag_build = dev -tag_svn_revision = true Modified: kukit/kss.concatresource/tag/1.4.2/setup.py ============================================================================== --- kukit/kss.concatresource/tag/1.4.2/setup.py (original) +++ kukit/kss.concatresource/tag/1.4.2/setup.py Sun Jul 6 16:47:01 2008 @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = '1.4' +version = '1.4.2' setup(name='concatresource', version=version, From reebalazs at codespeak.net Sun Jul 6 16:49:26 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:49:26 +0200 (CEST) Subject: [KSS-checkins] r56342 - kukit/kss.concatresource/branch/1.4/docs Message-ID: <20080706144926.52F81168543@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:49:25 2008 New Revision: 56342 Modified: kukit/kss.concatresource/branch/1.4/docs/HISTORY.txt Log: Adjust history Modified: kukit/kss.concatresource/branch/1.4/docs/HISTORY.txt ============================================================================== --- kukit/kss.concatresource/branch/1.4/docs/HISTORY.txt (original) +++ kukit/kss.concatresource/branch/1.4/docs/HISTORY.txt Sun Jul 6 16:49:25 2008 @@ -6,6 +6,11 @@ - ... +kss.concatresource - 1.4.2 Released 2008-07-06 + + - Prepare for release + [ree] + kss.concatresource - 1.4.1 Released 2008-06-02 - Prepare for release From reebalazs at codespeak.net Sun Jul 6 16:53:04 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:53:04 +0200 (CEST) Subject: [KSS-checkins] r56343 - in kukit/kss.core/tag/1.4.2: . docs kss/core kss/core/pluginregistry Message-ID: <20080706145304.9BDD2169E4A@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:53:04 2008 New Revision: 56343 Removed: kukit/kss.core/tag/1.4.2/setup.cfg Modified: kukit/kss.core/tag/1.4.2/docs/HISTORY.txt kukit/kss.core/tag/1.4.2/kss/core/ (props changed) kukit/kss.core/tag/1.4.2/kss/core/EXTERNALS.TXT kukit/kss.core/tag/1.4.2/kss/core/pluginregistry/ (props changed) kukit/kss.core/tag/1.4.2/kss/core/pluginregistry/EXTERNALS.TXT kukit/kss.core/tag/1.4.2/kss/core/version.txt kukit/kss.core/tag/1.4.2/setup.py Log: Set release Modified: kukit/kss.core/tag/1.4.2/docs/HISTORY.txt ============================================================================== --- kukit/kss.core/tag/1.4.2/docs/HISTORY.txt (original) +++ kukit/kss.core/tag/1.4.2/docs/HISTORY.txt Sun Jul 6 16:53:04 2008 @@ -2,10 +2,8 @@ (name of developer listed in brackets) -kss.core - 1.4dev Unreleased +kss.core - 1.4.2 Released 2008-07-06 - - ... - - Include meta.zcml from configure.zcml, in order to allow easier loading of dependent zcml during unittests [gotcha, jfroche] Modified: kukit/kss.core/tag/1.4.2/kss/core/EXTERNALS.TXT ============================================================================== --- kukit/kss.core/tag/1.4.2/kss/core/EXTERNALS.TXT (original) +++ kukit/kss.core/tag/1.4.2/kss/core/EXTERNALS.TXT Sun Jul 6 16:53:04 2008 @@ -6,4 +6,4 @@ # # svn propset svn:externals -F EXTERNALS.TXT . # -kukit http://codespeak.net/svn/kukit/kukit.js/branch/1.4/ +kukit http://codespeak.net/svn/kukit/kukit.js/tag/1.4.2/ Modified: kukit/kss.core/tag/1.4.2/kss/core/pluginregistry/EXTERNALS.TXT ============================================================================== --- kukit/kss.core/tag/1.4.2/kss/core/pluginregistry/EXTERNALS.TXT (original) +++ kukit/kss.core/tag/1.4.2/kss/core/pluginregistry/EXTERNALS.TXT Sun Jul 6 16:53:04 2008 @@ -7,4 +7,4 @@ # # concatresource is now included like as batteries -_concatresource https://codespeak.net/svn/kukit/kss.concatresource/branch/1.4/kss/concatresource +_concatresource https://codespeak.net/svn/kukit/kss.concatresource/tag/1.4.2/kss/concatresource Modified: kukit/kss.core/tag/1.4.2/kss/core/version.txt ============================================================================== --- kukit/kss.core/tag/1.4.2/kss/core/version.txt (original) +++ kukit/kss.core/tag/1.4.2/kss/core/version.txt Sun Jul 6 16:53:04 2008 @@ -1 +1 @@ -1.4dev unreleased +1.4.2 Released 2008-07-06 Deleted: /kukit/kss.core/tag/1.4.2/setup.cfg ============================================================================== --- /kukit/kss.core/tag/1.4.2/setup.cfg Sun Jul 6 16:53:04 2008 +++ (empty file) @@ -1,3 +0,0 @@ -[egg_info] -tag_build = dev -tag_svn_revision = true Modified: kukit/kss.core/tag/1.4.2/setup.py ============================================================================== --- kukit/kss.core/tag/1.4.2/setup.py (original) +++ kukit/kss.core/tag/1.4.2/setup.py Sun Jul 6 16:53:04 2008 @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = '1.4' +version = '1.4.2' def read(*rnames): return open(os.path.join(os.path.dirname(__file__), *rnames)).read() From reebalazs at codespeak.net Sun Jul 6 16:54:53 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:54:53 +0200 (CEST) Subject: [KSS-checkins] r56344 - kukit/kss.core/branch/1.4/docs Message-ID: <20080706145453.7BE1D498013@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:54:52 2008 New Revision: 56344 Modified: kukit/kss.core/branch/1.4/docs/HISTORY.txt Log: Adjust history Modified: kukit/kss.core/branch/1.4/docs/HISTORY.txt ============================================================================== --- kukit/kss.core/branch/1.4/docs/HISTORY.txt (original) +++ kukit/kss.core/branch/1.4/docs/HISTORY.txt Sun Jul 6 16:54:52 2008 @@ -6,6 +6,8 @@ - ... +kss.core - 1.4.2 Released 2008-07-06 + - Include meta.zcml from configure.zcml, in order to allow easier loading of dependent zcml during unittests [gotcha, jfroche] From reebalazs at codespeak.net Sun Jul 6 16:56:59 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 16:56:59 +0200 (CEST) Subject: [KSS-checkins] r56345 - kukit/kss.demo/tag/1.4.2 Message-ID: <20080706145659.1A86F698093@codespeak.net> Author: reebalazs Date: Sun Jul 6 16:56:58 2008 New Revision: 56345 Added: kukit/kss.demo/tag/1.4.2/ - copied from r56344, kukit/kss.demo/branch/1.4/ Log: Tag release From reebalazs at codespeak.net Sun Jul 6 17:02:01 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 17:02:01 +0200 (CEST) Subject: [KSS-checkins] r56346 - in kukit/kss.demo/tag/1.4.2: . docs kss/demo Message-ID: <20080706150201.CDD18698136@codespeak.net> Author: reebalazs Date: Sun Jul 6 17:02:01 2008 New Revision: 56346 Removed: kukit/kss.demo/tag/1.4.2/setup.cfg Modified: kukit/kss.demo/tag/1.4.2/docs/HISTORY.txt kukit/kss.demo/tag/1.4.2/kss/demo/version.txt kukit/kss.demo/tag/1.4.2/setup.py Log: Set release Modified: kukit/kss.demo/tag/1.4.2/docs/HISTORY.txt ============================================================================== --- kukit/kss.demo/tag/1.4.2/docs/HISTORY.txt (original) +++ kukit/kss.demo/tag/1.4.2/docs/HISTORY.txt Sun Jul 6 17:02:01 2008 @@ -2,9 +2,7 @@ (name of developer listed in brackets) -kss.demo - 1.4dev Unreleased - - - ... +kss.demo - 1.4.2 Released 2008-07-06 - Include meta.zcml from configure.zcml, in order to allow easier loading of dependent zcml during unittests Modified: kukit/kss.demo/tag/1.4.2/kss/demo/version.txt ============================================================================== --- kukit/kss.demo/tag/1.4.2/kss/demo/version.txt (original) +++ kukit/kss.demo/tag/1.4.2/kss/demo/version.txt Sun Jul 6 17:02:01 2008 @@ -1 +1 @@ -1.4dev Unreleased +1.4.2 Released 2008-07-06 Deleted: /kukit/kss.demo/tag/1.4.2/setup.cfg ============================================================================== --- /kukit/kss.demo/tag/1.4.2/setup.cfg Sun Jul 6 17:02:01 2008 +++ (empty file) @@ -1,3 +0,0 @@ -[egg_info] -tag_build = dev -tag_svn_revision = true Modified: kukit/kss.demo/tag/1.4.2/setup.py ============================================================================== --- kukit/kss.demo/tag/1.4.2/setup.py (original) +++ kukit/kss.demo/tag/1.4.2/setup.py Sun Jul 6 17:02:01 2008 @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import sys, os -version = '1.4' +version = '1.4.2' setup(name='kss.demo', version=version, @@ -27,7 +27,7 @@ install_requires=[ # -*- Extra requirements: -*- 'setuptools', - 'kss.core>=dev', + 'kss.core==1.4.2', 'elementtree' ], entry_points=""" From reebalazs at codespeak.net Sun Jul 6 17:03:04 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Sun, 6 Jul 2008 17:03:04 +0200 (CEST) Subject: [KSS-checkins] r56347 - kukit/kss.demo/branch/1.4/docs Message-ID: <20080706150304.BF4F66980B8@codespeak.net> Author: reebalazs Date: Sun Jul 6 17:03:04 2008 New Revision: 56347 Modified: kukit/kss.demo/branch/1.4/docs/HISTORY.txt Log: Adjust history Modified: kukit/kss.demo/branch/1.4/docs/HISTORY.txt ============================================================================== --- kukit/kss.demo/branch/1.4/docs/HISTORY.txt (original) +++ kukit/kss.demo/branch/1.4/docs/HISTORY.txt Sun Jul 6 17:03:04 2008 @@ -6,6 +6,8 @@ - ... +kss.demo - 1.4.2 Released 2008-07-06 + - Include meta.zcml from configure.zcml, in order to allow easier loading of dependent zcml during unittests [gotcha, jfroche] From reebalazs at codespeak.net Tue Jul 29 10:22:23 2008 From: reebalazs at codespeak.net (reebalazs at codespeak.net) Date: Tue, 29 Jul 2008 10:22:23 +0200 (CEST) Subject: [KSS-checkins] r56829 - kukit/kukit.js/branch/ree-binding-improvements/3rd_party Message-ID: <20080729082223.D9411169E86@codespeak.net> Author: reebalazs Date: Tue Jul 29 10:22:22 2008 New Revision: 56829 Added: kukit/kukit.js/branch/ree-binding-improvements/3rd_party/base2-dom-fp-20070816.js (props changed) - copied unchanged from r56828, kukit/kukit.js/branch/ree-binding-improvements/3rd_party/base2-dom-fp.js kukit/kukit.js/branch/ree-binding-improvements/3rd_party/base2-dom-fp.js (contents, props changed) Log: Update base2 to version that runs on FF3 Added: kukit/kukit.js/branch/ree-binding-improvements/3rd_party/base2-dom-fp.js ============================================================================== --- (empty file) +++ kukit/kukit.js/branch/ree-binding-improvements/3rd_party/base2-dom-fp.js Tue Jul 29 10:22:22 2008 @@ -0,0 +1,2 @@ +var base2={name:"base2",version:"1.0 (beta 2)",exports:"Base,Package,Abstract,Module,Enumerable,Map,Collection,RegGrp,"+"assert,assertArity,assertType,assignID,copy,detect,extend,"+"forEach,format,global,instanceOf,match,rescape,slice,trim,typeOf,"+"I,K,Undefined,Null,True,False,bind,delegate,flip,not,unbind",global:this,detect:new function(_){var global=_;var jscript=NaN/*@cc_on||@_jscript_version@*/;var java=_.java?true:false;if(_.navigator){var MSIE=/MSIE[\d.]+/g;var element=document.createElement("span");var userAgent=navigator.userAgent.replace(/([a-z])[\s\/](\d)/gi,"$1$2");if(!jscript)userAgent=userAgent.replace(MSIE,""); +if(MSIE.test(userAgent))userAgent=userAgent.match(MSIE)[0]+" "+userAgent.replace(MSIE,"");userAgent=navigator.platform+" "+userAgent;java&=navigator.javaEnabled()}return function(a){var r=false;var b=a.charAt(0)=="!";if(b)a=a.slice(1);if(a.charAt(0)=="("){try{eval("r=!!"+a)}catch(e){}}else{r=new RegExp("("+a+")","i").test(userAgent)}return!!(b^r)}}(this)};new function(_){var _0="function base(o,a){return o.base.apply(o,a)};";eval(_0);var detect=base2.detect;var Undefined=K(),Null=K(null),True=K(true),False=K(false);var _1=/%([1-9])/g;var _2=/^\s\s*/;var _3=/\s\s*$/;var _4=/([\/()[\]{}|*+-.,^$?\\])/g;var _5=/eval/.test(detect)?/\bbase\s*\(/:/.*/;var _6=["constructor","toString","valueOf"];var _7=detect("(jscript)")?new RegExp("^"+rescape(isNaN).replace(/isNaN/,"\\w+")+"$"):{test:False};var _8=1;var _9=Array.prototype.slice;var slice=Array.slice||function(a){return _9.apply(a,_9.call(arguments,1))};_10();var _11=function(a,b){base2.__prototyping=this.prototype;var c=new this;extend(c,a);delete base2.__prototyping;var d=c.constructor;function e(){if(!base2.__prototyping){if(this.constructor==arguments.callee||this.__constructing){this.__constructing=true;d.apply(this,arguments);delete this.__constructing}else{return extend(arguments[0],c)}}return this};c.constructor=e;for(var i in Base)e[i]=this[i];e.ancestor=this;e.base=Undefined;e.init=Undefined;extend(e,b);e.prototype=c;e.init();return e};var Base=_11.call(Object,{constructor:function(){if(arguments.length>0){this.extend(arguments[0])}},base:function(){},extend:delegate(extend)},Base={ancestorOf:delegate(_12),extend:_11,forEach:delegate(_10),implement:function(a){if(typeof a=="function"){if(_12(Base,a)){a(this.prototype)}}else{extend(this.prototype,a)}return this}});var Package=Base.extend({constructor:function(d,e){this.extend(e);if(this.init)this.init();if(this.name!="base2"){if(!this.parent)this.parent=base2;this.parent.addName(this.name,this);this.namespace=format("var %1=%2;",this.name,String(this).slice(1,-1))}var f=/[^\s,]+/g;if(d){d.imports=Array2.reduce(this.imports.match(f),function(a,b){eval("var ns=base2."+b);assert(ns,format("Package not found: '%1'.",b),ReferenceError);return a+=ns.namespace},_0+base2.namespace+JavaScript.namespace);d.exports=Array2.reduce(this.exports.match(f),function(a,b){var c=this.name+"."+b;this.namespace+="var "+b+"="+c+";";return a+="if(!"+c+")"+c+"="+b+";"},"",this)}},exports:"",imports:"",name:"",namespace:"",parent:null,addName:function(a,b){if(!this[a]){this[a]=b;this.exports+=","+a;this.namespace+=format("var %1=%2.%1;",a,this.name)}},addPackage:function(a){this.addName(a,new Package(null,{name:a,parent:this}))},toString:function(){return format("[%1]",this.parent?String(this.parent).slice(1,-1)+"."+this.name:this.name)}});var Abstract=Base.extend({constructor:function(){throw new TypeError("Class cannot be instantiated.");}});var Module=Abstract.extend(null,{extend:function(a,b){var c=this.base();c.implement(this);c.implement(a);extend(c,b);c.init();return c},implement:function(d){var e=this;if(typeof d=="function"){if(!_12(d,e)){this.base(d)}if(_12(Module,d)){forEach(d,function(a,b){if(!e[b]){if(typeof a=="function"&&a.call&&d.prototype[b]){a=function(){return d[b].apply(d,arguments)}}e[b]=a}})}}else{extend(e,d);_10(Object,d,function(b,c){if(c.charAt(0)=="@"){if(detect(c.slice(1))){forEach(b,arguments.callee)}}else if(typeof b=="function"&&b.call){e.prototype[c]=function(){var a=_9.call(arguments);a.unshift(this);return e[c].apply(e,a)}}})}return e}});var Enumerable=Module.extend({every:function(c,d,e){var f=true;try{this.forEach(c,function(a,b){f=d.call(e,a,b,c);if(!f)throw StopIteration;})}catch(error){if(error!=StopIteration)throw error;}return!!f},filter:function(d,e,f){var i=0;return this.reduce(d,function(a,b,c){if(e.call(f,b,c,d)){a[i++]=b}return a},[])},invoke:function(b,c){var d=_9.call(arguments,2);return this.map(b,(typeof c=="function")?function(a){return(a==null)?undefined:c.apply(a,d)}:function(a){return(a==null)?undefined:a[c].apply(a,d)})},map:function(c,d,e){var f=[],i=0;this.forEach(c,function(a,b){f[i++]=d.call(e,a,b,c)});return f},pluck:function(b,c){return this.map(b,function(a){return(a==null)?undefined:a[c]})},reduce:function(c,d,e,f){var g=arguments.length>2;this.forEach(c,function(a,b){if(g){e=d.call(f,e,a,b,c)}else{e=a;g=true}});return e},some:function(a,b,c){return!this.every(a,not(b),c)}},{forEach:forEach});var _13="#";var Map=Base.extend({constructor:function(a){this.merge(a)},copy:delegate(copy),forEach:function(a,b){for(var c in this)if(c.charAt(0)==_13){a.call(b,this[c],c.slice(1),this)}},get:function(a){return this[_13+a]},getKeys:function(){return this.map(flip(I))},getValues:function(){return this.map(I)},has:function(a){/*@cc_on@*//*@if(@_14<5.5)return $Legacy.has(this,_13+a);@else@*/return _13+a in this;/*@end@*/},merge:function(b){var c=flip(this.put);forEach(arguments,function(a){forEach(a,c,this)},this);return this},remove:function(a){delete this[_13+a]},put:function(a,b){if(arguments.length==1)b=a;this[_13+a]=b},size:function(){var a=0;for(var b in this)if(b.charAt(0)==_13)a++;return a},union:function(a){return this.merge.apply(this.copy(),arguments)}});Map.implement(Enumerable);var _15="~";var Collection=Map.extend({constructor:function(a){this[_15]=new Array2;this.base(a)},add:function(a,b){assert(!this.has(a),"Duplicate key '"+a+"'.");this.put.apply(this,arguments)},copy:function(){var a=this.base();a[_15]=this[_15].copy();return a},forEach:function(a,b){var c=this[_15];var d=c.length;for(var i=0;i1900){Date.prototype.getYear=function(){return this.getFullYear()-1900};Date.prototype.setYear=function(a){return this.setFullYear(a+1900)}}Function.prototype.prototype={};if("".replace(/^/,K("$$"))=="$"){extend(String.prototype,"replace",function(a,b){if(typeof b=="function"){var c=b;b=function(){return String(c.apply(null,arguments)).split("$").join("$$")}}return this.base(a,b)})}var Array2=_23(Array,Array,"concat,join,pop,push,reverse,shift,slice,sort,splice,unshift",[Enumerable,{combine:function(d,e){if(!e)e=d;return this.reduce(d,function(a,b,c){a[b]=e[c];return a},{})},contains:function(a,b){return this.indexOf(a,b)!=-1},copy:function(a){var b=_9.call(a);if(!b.swap)this(b);return b},flatten:function(c){var d=0;return this.reduce(c,function(a,b){if(this.like(b)){this.reduce(b,arguments.callee,a,this)}else{a[d++]=b}return a},[],this)},forEach:_24,indexOf:function(a,b,c){var d=a.length;if(c==null){c=0}else if(c<0){c=Math.max(0,d+c)}for(var i=c;i=0;i--){if(a[i]===b)return i}return-1},map:function(c,d,e){var f=[];this.forEach(c,function(a,b){f[b]=d.call(e,a,b,c)});return f},remove:function(a,b){var c=this.indexOf(a,b);if(c!=-1)this.removeAt(a,c);return b},removeAt:function(a,b){return this.splice(a,b,1)},swap:function(a,b,c){if(b<0)b+=a.length;if(c<0)c+=a.length;var d=a[b];a[b]=a[c];a[c]=d;return a}}]);Array2.reduce=Enumerable.reduce;Array2.like=function(a){return!!(a&&typeof a=="object"&&typeof a.length=="number")};var _25=/^((-\d+|\d{4,})(-(\d{2})(-(\d{2}))?)?)?T((\d{2})(:(\d{2})(:(\d{2})(\.(\d{1,3})(\d)?\d*)?)?)?)?(([+-])(\d{2})(:(\d{2}))?|Z)?$/;var _26={FullYear:2,Month:4,Date:6,Hours:8,Minutes:10,Seconds:12,Milliseconds:14};var _27={Hectomicroseconds:15,UTC:16,Sign:17,Hours:18,Minutes:20};var _28=/(((00)?:0+)?:0+)?\.0+$/;var _29=/(T[0-9:.]+)$/;var Date2=_23(Date,function(a,b,c,h,m,s,d){switch(arguments.length){case 0:return new Date;case 1:return new Date(a);default:return new Date(a,b,arguments.length==2?1:c,h||0,m||0,s||0,d||0)}},"",[{toISOString:function(c){var d="####-##-##T##:##:##.###";for(var e in _26){d=d.replace(/#+/,function(a){var b=c["getUTC"+e]();if(e=="Month")b++;return("000"+b).slice(-a.length)})}return d.replace(_28,"").replace(_29,"$1Z")}}]);Date2.now=function(){return(new Date).valueOf()};Date2.parse=function(a,b){if(arguments.length>1){assertType(b,"number","defaultDate should be of type 'number'.")}var c=String(a).match(_25);if(c){if(c[_26.Month])c[_26.Month]--;if(c[_27.Hectomicroseconds]>=5)c[_26.Milliseconds]++;var d=new Date(b||0);var e=c[_27.UTC]||c[_27.Hours]?"UTC":"";for(var f in _26){var g=c[_26[f]];if(!g)continue;d["set"+e+f](g);if(d["get"+e+f]()!=c[_26[f]]){return NaN}}if(c[_27.Hours]){var h=Number(c[_27.Sign]+c[_27.Hours]);var i=Number(c[_27.Sign]+(c[_27.Minutes]||0));d.setUTCMinutes(d.getUTCMinutes()+(h*60)+i)}return d.valueOf()}else{return Date.parse(a)}};var String2=_23(String,function(a){return new String(arguments.length==0?"":a)},"charAt,charCodeAt,concat,indexOf,lastIndexOf,match,replace,search,slice,split,substr,substring,toLowerCase,toUpperCase",[{trim:trim}]);function _23(c,constructor,d,e){var f=Module.extend();forEach(d.match(/\w+/g),function(a){f[a]=unbind(c.prototype[a])});forEach(e,f.implement,f);var g=function(){return f(this.constructor==f?constructor.apply(null,arguments):arguments[0])};g.prototype=f.prototype;forEach(f,function(a,b){if(c[b]){f[b]=c[b];delete f.prototype[b]}g[b]=f[b]});g.ancestor=Object;delete g.extend;if(c!=Array)delete g.forEach;return g};function extend(a,b){if(a&&b){if(arguments.length>2){var c=b;b={};b[c]=arguments[2]}var d=(typeof b=="function"?Function:Object).prototype;var i=_6.length,c;if(base2.__prototyping){while(c=_6[--i]){var e=b[c];if(e!=d[c]){if(_5.test(e)){_22(a,c,e)}else{a[c]=e}}}}for(c in b){if(d[c]===undefined){var e=b[c];if(c.charAt(0)=="@"){if(detect(c.slice(1)))arguments.callee(a,e);continue}var f=a[c];if(f&&typeof e=="function"){if(e!=f&&(!f.method||!_12(e,f))){if(_5.test(e)){_22(a,c,e)}else{e.ancestor=f;a[c]=e}}}else{a[c]=e}}}}return a};function _12(a,b){while(b){if(!b.ancestor)return false;b=b.ancestor;if(b==a)return true}return false};function _22(c,d,e){var f=c[d];var g=base2.__prototyping;if(g&&f!=g[d])g=null;function h(){var a=this.base;this.base=g?g[d]:f;var b=e.apply(this,arguments);this.base=a;return b};h.ancestor=f;c[d]=h};if(typeof StopIteration=="undefined"){StopIteration=new Error("StopIteration")}function forEach(a,b,c,d){if(a==null)return;if(!d){if(typeof a=="function"&&a.call){d=Function}else if(typeof a.forEach=="function"&&a.forEach!=arguments.callee){a.forEach(b,c);return}else if(typeof a.length=="number"){_24(a,b,c);return}}_10(d||Object,a,b,c)};function _24(a,b,c){if(a==null)return;var d=a.length,i;if(typeof a=="string"){for(i=0;i1)?function(a,b,c,d){var e={};for(var f in b){if(!e[f]&&a.prototype[f]===undefined){e[f]=true;c.call(d,b[f],f,b)}}}:function(a,b,c,d){for(var e in b){if(a.prototype[e]===undefined){c.call(d,b[e],e,b)}}};_10(g,h,j,k)};function typeOf(a){var b=typeof a;switch(b){case"object":return a===null?"null":typeof a.call=="function"||_7.test(a)?"function":b;case"function":return typeof a.call=="function"?b:"object";default:return b}};function instanceOf(a,b){if(typeof b!="function"){throw new TypeError("Invalid 'instanceOf' operand.");}if(a==null)return false;/*@cc_on if(typeof a.constructor!="function"){return typeOf(a)==typeof b.prototype.valueOf()}@*//*@if(@_14<5.1)if($Legacy.instanceOf(a,b))return true;@else@*/if(a instanceof b)return true;/*@end@*/if(Base.ancestorOf==b.ancestorOf)return false;if(Base.ancestorOf==a.constructor.ancestorOf)return b==Object;switch(b){case Array:return!!(typeof a=="object"&&a.join&&a.splice);case Function:return typeOf(a)=="function";case RegExp:return typeof a.constructor.$1=="string";case Date:return!!a.getTimezoneOffset;case String:case Number:case Boolean:return typeof a==typeof b.prototype.valueOf();case Object:return true}return false};function assert(a,b,c){if(!a){throw new(c||Error)(b||"Assertion failed.");}};function assertArity(a,b,c){if(b==null)b=a.callee.length;if(a.lengthd){return 2}return 0}}});var _33=document.documentElement.sourceIndex?function(a){return a.sourceIndex}:function(a){var b=0;while(a){b=Traversal.getNodeIndex(a)+"."+b;a=a.parentNode}return b};var Document=Node.extend(null,{bind:function(b){extend(b,"createElement",function(a){return DOM.bind(this.base(a))});AbstractView.bind(b.defaultView);if(b!=window.document)new DOMContentLoadedEvent(b);return this.base(b)},"@!(document.defaultView)":{bind:function(a){a.defaultView=Traversal.getDefaultView(a);return this.base(a)}}});var _34=/^(href|src)$/;var _35={"class":"className","for":"htmlFor"};var Element=Node.extend({"@MSIE.+win":{getAttribute:function(a,b,c){if(a.className===undefined){return this.base(a,b)}var d=_36(a,b);if(d&&(d.specified||b=="value")){if(_34.test(b)){return this.base(a,b,2)}else if(b=="style"){return a.style.cssText}else{return d.nodeValue}}return null},setAttribute:function(a,b,c){if(a.className===undefined){this.base(a,b,c)}else if(b=="style"){a.style.cssText=c}else{c=String(c);var d=_36(a,b);if(d){d.nodeValue=c}else{this.base(a,_35[b]||b,c)}}}},"@!(element.hasAttribute)":{hasAttribute:function(a,b){return this.getAttribute(a,b)!=null}}});extend(Element.prototype,"cloneNode",function(a){var b=this.base(a||false);b.base2ID=undefined;return b});if(_30){var _37="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";extend(_35,Array2.combine(_37.toLowerCase().split(","),_37.split(",")));var _36=_31?function(a,b){return a.attributes[b]||a.attributes[_35[b.toLowerCase()]]}:function(a,b){return a.getAttributeNode(b)}}var TEXT=_30?"innerText":"textContent";var Traversal=Module.extend({getDefaultView:function(a){return this.getDocument(a).defaultView},getNextElementSibling:function(a){while(a&&(a=a.nextSibling)&&!this.isElement(a))continue;return a},getNodeIndex:function(a){var b=0;while(a&&(a=a.previousSibling))b++;return b},getOwnerDocument:function(a){return a.ownerDocument},getPreviousElementSibling:function(a){while(a&&(a=a.previousSibling)&&!this.isElement(a))continue;return a},getTextContent:function(a){return a[TEXT]},isEmpty:function(a){a=a.firstChild;while(a){if(a.nodeType==3||this.isElement(a))return false;a=a.nextSibling}return true},setTextContent:function(a,b){return a[TEXT]=b},"@MSIE":{getDefaultView:function(a){return(a.document||a).parentWindow},"@MSIE5":{getOwnerDocument:function(a){return a.ownerDocument||a.document}}}},{contains:function(a,b){while(b&&(b=b.parentNode)&&a!=b)continue;return!!b},getDocument:function(a){return this.isDocument(a)?a:this.getOwnerDocument(a)},isDocument:function(a){return!!(a&&a.documentElement)},isElement:function(a){return!!(a&&a.nodeType==1)},"@(element.contains)":{contains:function(a,b){return a!=b&&(this.isDocument(a)?a==this.getOwnerDocument(b):a.contains(b))}},"@MSIE5":{isElement:function(a){return!!(a&&a.nodeType==1&&a.nodeName!="!")}}});var AbstractView=Binding.extend();var Event=Binding.extend({"@!(document.createEvent)":{initEvent:function(a,b,c,d){a.type=b;a.bubbles=c;a.cancelable=d;a.timeStamp=new Date().valueOf()},"@MSIE":{initEvent:function(a,b,c,d){this.base(a,b,c,d);a.cancelBubble=!a.bubbles},preventDefault:function(a){if(a.cancelable!==false){a.returnValue=false}},stopPropagation:function(a){a.cancelBubble=true}}}},{"@!(document.createEvent)":{"@MSIE":{bind:function(a){if(!a.timeStamp){a.bubbles=!!_38[a.type];a.cancelable=!!_39[a.type];a.timeStamp=new Date().valueOf()}if(!a.target){a.target=a.srcElement}a.relatedTarget=a[(a.type=="mouseout"?"to":"from")+"Element"];return this.base(a)}}}});if(_30){var _38="abort,error,select,change,resize,scroll";var _39="click,mousedown,mouseup,mouseover,mousemove,mouseout,keydown,keyup,submit,reset";_38=Array2.combine((_38+","+_39).split(","));_39=Array2.combine(_39.split(","))}var EventTarget=Interface.extend({"@!(element.addEventListener)":{addEventListener:function(a,b,c,d){var e=assignID(a);var f=assignID(c);var g=_40[e];if(!g)g=_40[e]={};var h=g[b];var i=a["on"+b];if(!h){h=g[b]={};if(i)h[0]=i}h[f]=c;if(i!==undefined){a["on"+b]=_40._41}},dispatchEvent:function(a,b){return _41.call(a,b)},removeEventListener:function(a,b,c,d){var e=_40[a.base2ID];if(e&&e[b]){delete e[b][c.base2ID]}},"@(element.fireEvent)":{dispatchEvent:function(a,b){var c="on"+b.type;b.target=a;if(a[c]===undefined){return this.base(a,b)}else{return a.fireEvent(c,b)}}}}});var _40=new Base({_41:_41,"@MSIE":{_41:function(){var a=this;var b=(a.document||a).parentWindow;if(a.Infinity)a=b;return _41.call(a,b.event)}}});function _41(a){var b=true;var c=_40[this.base2ID];if(c){Event.bind(a);var d=c[a.type];for(var i in d){var listener=d[i];if(listener.handleEvent){var result=listener.handleEvent(a)}else{result=listener.call(this,a)}if(result===false||a.returnValue===false)b=false}}return b};var DocumentEvent=Interface.extend({"@!(document.createEvent)":{createEvent:function(a,b){return Event.bind({})},"@(document.createEventObject)":{createEvent:function(a,b){return Event.bind(a.createEventObject())}}},"@(document.createEvent)":{"@!(document.createEvent('Events'))":{createEvent:function(a,b){return this.base(a,b=="Events"?"UIEvents":b)}}}});var DOMContentLoadedEvent=Base.extend({constructor:function(b){var c=false;this.fire=function(){if(!c){c=true;setTimeout(function(){var a=DocumentEvent.createEvent(b,"Events");Event.initEvent(a,"DOMContentLoaded",false,false);EventTarget.dispatchEvent(b,a)},1)}};EventTarget.addEventListener(b,"DOMContentLoaded",function(){c=true},false);this.listen(b)},listen:function(a){EventTarget.addEventListener(Traversal.getDefaultView(a),"load",this.fire,false)},"@MSIE.+win":{listen:function(a){if(a.readyState!="complete"){var b=this;a.write("