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

Reply via email to