I think you're wrong about this. I expect the ConstructorMap to be
at least comparable if not faster.
A
On Sep 6, Benjamin Shine wrote:
>
> Performance. ConstructorMap is about four times longer than the list
> that I'm using, with the delta being things that don't make sense to
> be styled with CSS.
>
> Maybe my idea of performance is wrong, though -- I'll measure which
> is faster, the switch statement or hashing into the ConstructorMap.
>
> -ben
>
> On Sep 6, 2006, at 5:44 PM, Jim Grandy wrote:
>
> > Why not simply use ConstructorMap in WEB-INF/lps/lfc/glue/
> > LaszloInitiator.as?
> >
> > jim
> >
> > On Sep 6, 2006, at 2:07 PM, [EMAIL PROTECTED] wrote:
> >
> >> Author: ben
> >> Date: 2006-09-06 14:07:31 -0700 (Wed, 06 Sep 2006)
> >> New Revision: 1758
> >>
> >> Added:
> >> openlaszlo/branches/coal/test/style/elementselector/main.lzx
> >> openlaszlo/branches/coal/test/style/elementselector/
> >> specialclassnames-test.lzx
> >> Modified:
> >> openlaszlo/branches/coal/WEB-INF/lps/lfc/services/LzCSSStyle.js
> >> openlaszlo/branches/coal/test/style/elementselector/
> >> elementselector-test.lzx
> >> openlaszlo/branches/coal/test/style/elementselector/
> >> elementselectors.css
> >> Log:
> >> Change change.Pn6jg7H06.txt by [EMAIL PROTECTED] /Users/ben/src/svn/
> >> openlaszlo/branches/coal on 2006-09-06 14:00:19 PDT
> >>
> >> Summary: Make CSS support styling LzView, LzText, etc, where
> >> classname != tagname
> >>
> >> New Features: CSS selectors with tag name work
> >>
> >> Bugs Fixed:
> >>
> >> Technical Reviewer: adam (pending)
> >> QA Reviewer: frisco (pending)
> >> Doc Reviewer: frisco (pending)
> >>
> >> Documentation:
> >> Selectors like this will work now:
> >> view {
> >> nicebgcolor: "0x366d3c";
> >> styledname: "Frank";
> >> }
> >> These are a special case because LzView is the classname for
> >> nodes specified with the tag "view". Similarly for all of these:
> >> case "view": return "LzView";
> >> case "animator": return "LzAnimator";
> >> case "animatorgroup": return "LzAnimatorGroup";
> >> case "canvas": return "LzCanvas";
> >> case "drawview": return "LzDrawView";
> >> case "inputtext": return "LzInputText";
> >> case "layout": return "LzLayout";
> >> case "node": return "LzNode";
> >> case "state": return "LzState";
> >> case "text": return "LzText";
> >>
> >> .. This is a limited subset of the actual tags with different
> >> names than the associated classname. I selected this subset to be
> >> the tags that are likely to be styled via CSS.
> >>
> >> Release Notes:
> >>
> >> There will almost certainly be weird behavior for drawview, text,
> >> inputtext, and maybe canvas; this patch makes the tag to classname
> >> mapping, but does not address the rest of these classes style-
> >> ability.
> >>
> >> Details:
> >>
> >>
> >> Tests:
> >> http://localhost:8080/coal/test/style/elementselector/main.lzx
> >>
> >> Modified: openlaszlo/branches/coal/WEB-INF/lps/lfc/services/
> >> LzCSSStyle.js
> >> ===================================================================
> >> --- openlaszlo/branches/coal/WEB-INF/lps/lfc/services/LzCSSStyle.js
> >> 2006-09-06 09:00:09 UTC (rev 1757)
> >> +++ openlaszlo/branches/coal/WEB-INF/lps/lfc/services/LzCSSStyle.js
> >> 2006-09-06 21:07:31 UTC (rev 1758)
> >> @@ -158,12 +158,9 @@
> >>
> >> }
> >> //this ideally would be two separate functions, but merging them
> >> -//and inlining the cases of the switch statement is a 2x speedup
> >> +//and inlining the cases of the switch statement is a 2x speedup
> >> [awolff]
> >> LzCSSStyle._ruleOrSelectorApplies = function ( r , node ){
> >>
> >> - //TODO: special case where the classname is not the same as
> >> the tagname;
> >> - //e.g. view != LzView
> >> -
> >> //if it's a rule, grab the selector
> >> if ( r.parsed ) var rp = r.parsed;
> >> else var rp = r;
> >> @@ -178,10 +175,6 @@
> >> case (this._selTypes.class ):
> >> return (node instanceof _root.global[ rp.classname ]);
> >>
> >> - case (this._selTypes.idAndClass ):
> >> - if ( node.id != rp.id ) return false;
> >> - return (node instanceof _root.global[ rp.classname ]);
> >> -
> >> case (this._selTypes.compound ):
> >> var curnode = node;
> >> var sindex = rp.length -1;
> >> @@ -223,10 +216,9 @@
> >> "star" : 1, // *
> >> "id" : 2, // #gMyId
> >> "class" : 3, // styledbox
> >> - "idAndClass" : 4, // TODO: the compiler isn't outputting
> >> idAndClass-ish rules yet
> >> - "compound" : 5, // E F
> >> - "attribute" : 6, // [attr="val"]
> >> - "classAndAttr" : 7 // class[attr="val"]
> >> + "compound" : 4, // E F
> >> + "attribute" : 5, // [attr="val"]
> >> + "classAndAttr" : 6 // class[attr="val"]
> >> }
> >>
> >> LzCSSStyle._rules = new Array();
> >> @@ -289,13 +281,7 @@
> >> if (index >= 0) {
> >> // Assumption: there should only be one # in a selector
> >> parsed.id = sel.substring(index + 1);
> >> - if ( index == 0 ){
> >> - parsed.type = this._selTypes.id;
> >> - } else {
> >> - parsed.type = this._selTypes.idAndClass;
> >> - parsed.classname = this._normalizeClassname(
> >> - sel.substring(0, index) );
> >> - }
> >> + parsed.type = this._selTypes.id;
> >> } else {
> >> parsed.type = this._selTypes.class;
> >> parsed.classname = this._normalizeClassname( sel );
> >> @@ -306,8 +292,28 @@
> >> return parsed;
> >> }
> >>
> >> +
> >> +/* The tag name of some nodes doesn't match the associated class
> >> name, ie,
> >> + nodes declared with tag <view> are instances of LzView, not
> >> instances of view.
> >> + This function normalizes tag names into class names. The complete
> >> tag to classname
> >> + mapping is listed in LaszloInitiator.as. For speed and size, I am
> >> only actually
> >> + mapping the class names which it seems sane to style. I am
> >> excluding data-related
> >> + classes, because they will have undefined behavior when used
> >> together with CSS.
> >> + */
> >> LzCSSStyle._normalizeClassname = function ( cn ){
> >> - return cn;
> >> + switch (cn) {
> >> + case "view": return "LzView";
> >> + case "animator": return "LzAnimator";
> >> + case "animatorgroup": return "LzAnimatorGroup";
> >> + case "canvas": return "LzCanvas";
> >> + case "drawview": return "LzDrawView";
> >> + case "inputtext": return "LzInputText";
> >> + case "layout": return "LzLayout";
> >> + case "node": return "LzNode";
> >> + case "state": return "LzState";
> >> + case "text": return "LzText";
> >> + default: return cn;
> >> + }
> >> }
> >>
> >> // These objects implement
> >>
> >> Modified: openlaszlo/branches/coal/test/style/elementselector/
> >> elementselector-test.lzx
> >> ===================================================================
> >> --- openlaszlo/branches/coal/test/style/elementselector/
> >> elementselector-test.lzx 2006-09-06 09:00:09 UTC (rev 1757)
> >> +++ openlaszlo/branches/coal/test/style/elementselector/
> >> elementselector-test.lzx 2006-09-06 21:07:31 UTC (rev 1758)
> >> @@ -1,13 +1,5 @@
> >> <!-- Copyright 2001-2006 Laszlo Systems, Inc. All Rights
> >> Reserved. -->
> >> -<canvas debug="true" cssfile="elementselectors.css">
> >> - <include href="../test"/>
> >> - <script>
> >> - Debug.write("This test file exercises RUNTIME support for CSS"
> >> - + " and element selectors.");
> >> - </script>
> >> - <debug/>
> >> -
> >> - <include href="../runtime-only-tests/designerview.lzx" />
> >> +<library>
> >> <simplelayout />
> >> <designerview id="gRobby" />
> >> <designerview id="gPatrick" />
> >> @@ -40,4 +32,4 @@
> >> </testsuite>
> >>
> >>
> >> -</canvas>
> >> +</library>
> >> \ No newline at end of file
> >>
> >> Modified: openlaszlo/branches/coal/test/style/elementselector/
> >> elementselectors.css
> >> ===================================================================
> >> --- openlaszlo/branches/coal/test/style/elementselector/
> >> elementselectors.css 2006-09-06 09:00:09 UTC (rev 1757)
> >> +++ openlaszlo/branches/coal/test/style/elementselector/
> >> elementselectors.css 2006-09-06 21:07:31 UTC (rev 1758)
> >> @@ -5,3 +5,5 @@
> >> innercolor: "0x1e4d75";
> >> }
> >>
> >> +
> >> +
> >>
> >> Added: openlaszlo/branches/coal/test/style/elementselector/main.lzx
> >>
> >>
> >> Property changes on: openlaszlo/branches/coal/test/style/
> >> elementselector/main.lzx
> >> ___________________________________________________________________
> >> Name: svn:mime-type
> >> + text/plain
> >> Name: svn:eol-style
> >> + native
> >>
> >> Added: openlaszlo/branches/coal/test/style/elementselector/
> >> specialclassnames-test.lzx
> >>
> >>
> >> Property changes on: openlaszlo/branches/coal/test/style/
> >> elementselector/specialclassnames-test.lzx
> >> ___________________________________________________________________
> >> Name: svn:mime-type
> >> + text/plain
> >> Name: svn:eol-style
> >> + native
> >>
> >>
> >> _______________________________________________
> >> Laszlo-checkins mailing list
> >> [EMAIL PROTECTED]
> >> http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins
> >
> >
> > _______________________________________________
> > Laszlo-dev mailing list
> > [email protected]
> > http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>
>
> _______________________________________________
> Laszlo-dev mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>
_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev