Changeset 10854 for lang/actionscript

Show
Ignore:
Timestamp:
05/01/08 03:17:13 (5 years ago)
Author:
gyuque
Message:

selector evaluator (in progress...)

Location:
lang/actionscript/ascss/src
Files:
1 added
6 modified

Legend:

Unmodified
Added
Removed
  • lang/actionscript/ascss/src/SelectTest.as

    r10847 r10854  
    44        import flash.text.*; 
    55        import css.*; 
     6        import cssdom.*; 
    67        public class SelectTest extends Sprite 
    78        { 
     
    910                private static var theInstance:SelectTest; 
    1011         
     12                private var mDefaultFmt:TextFormat = new TextFormat(); 
     13                private var mOKFmt:TextFormat      = new TextFormat(); 
     14                private var mNGFmt:TextFormat      = new TextFormat(); 
    1115 
    1216                public static const TestCSS:String =  
    13 '.foot #credit em {\n'+ 
     17'.index em {\n'+ 
    1418' color: #940;\n'+ 
    1519'}'; 
    1620 
     21                public static const TestDoc:XML =  
     22<body class="index"> 
     23        <em>foobar</em> 
     24</body> 
     25; 
     26 
    1727                function SelectTest() 
    1828                { 
     29                        mDefaultFmt.color = 0xffffff; 
     30                        mDefaultFmt.font = "Arial"; 
     31                        mOKFmt.color = 0x55ff22; 
     32                        mNGFmt.color = 0xff6622; 
     33 
    1934                        mTextOut = new TextField(); 
    20                         mTextOut.textColor = 0xffffff; 
     35                        mTextOut.defaultTextFormat = mDefaultFmt; 
    2136                        addChild(mTextOut); 
    2237                        mTextOut.width = 480; 
     
    2742                } 
    2843 
     44                 
     45 
    2946                private function start():void 
    3047                { 
    3148                        puts("--------------"); 
    3249                        puts(TestCSS); 
     50                        puts("--------------"); 
     51                        puts(TestDoc); 
    3352                        puts("--------------"); 
    3453                        var ascss:ASCSS = new ASCSS(TestCSS); 
     
    4160                        doc.appendStyleSheet(sheet); 
    4261                        puts("--------------"); 
     62 
     63                        var wrp:XMLElementWrapper = XMLElementWrapper.createFor(TestDoc); 
     64                        putsAssert("<body> has class", wrp.hasClass); 
     65                        putsAssert("<body> DOES NOT have id", !wrp.hasId); 
     66                        putsAssert("<body> has firstChild", wrp.firstChild != null); 
     67                        putsAssert("Parent of <body>'s firstChild is <body>", wrp.firstChild.parentNode == wrp); 
     68                        putsAssert("Local name of <body>'s firstChild is 'em'", wrp.firstChild.localName == 'em'); 
     69                        puts("--------------"); 
     70                        puts("initializing CSSStyleSelector for <em>"); 
     71 
     72                        var computeTarget:IASCSSElement = wrp.firstChild; 
    4373                        var sel:CSSStyleSelector = doc.createStyleSelector(); 
     74                        sel.initElementAndPseudoState(computeTarget); 
     75                        sel.initForStyleResolve(computeTarget, null); 
     76 
     77                        puts("--------------"); 
     78                        var authorStyle:CSSRuleSet = sel.authorStyle; 
     79                        putsAssert("sel.authorStyle != null;  Our CSS is set correctly", authorStyle != null); 
     80                        putsAssert("ruleset.getTagRules('em') != null; 'em' is set to the map", authorStyle.getTagRules('em') != null); 
     81 
     82                        var indexes:Array = [-1, -1]; 
     83                        sel.matchRules(authorStyle, indexes); 
    4484                } 
    4585 
     
    75115                } 
    76116 
     117                public static function putsAssert(name:String, res:Boolean):void 
     118                { 
     119                        theInstance.mTextOut.defaultTextFormat = res ? theInstance.mOKFmt : theInstance.mNGFmt; 
     120                        puts(name+": "+(res ? "[ O K ]" : "[ N G ]")); 
     121 
     122                        theInstance.mTextOut.defaultTextFormat = theInstance.mDefaultFmt; 
     123                } 
     124 
    77125                public static function puts(s:*):void 
    78126                { 
  • lang/actionscript/ascss/src/css/CSSRuleSet.as

    r10847 r10854  
    7070                        if (!key) return; 
    7171                        var rules:CSSRuleDataList = CSSRuleDataList(map[key] || null); 
    72 SelectTest.puts(key+" "+rule+" "+sel.dump()) 
    7372 
    7473                        if (!rules) { 
  • lang/actionscript/ascss/src/css/CSSSelector.as

    r10771 r10854  
    214214                        return mPseudoType; 
    215215                } 
     216 
     217                public function get relation():uint 
     218                { 
     219                        return m_relation; 
     220                } 
    216221        } 
    217222} 
  • lang/actionscript/ascss/src/css/CSSStyleSelector.as

    r10847 r10854  
    3838                } 
    3939 
     40                public function get authorStyle():CSSRuleSet 
     41                { 
     42                        return mAuthorStyle; 
     43                } 
     44 
    4045                public function initForStyleResolve(e:IASCSSElement, defaultParent:RenderStyle):void 
    4146                { 
     
    6873                                matchRulesForList(rules.getIDRules(mElement.idAttribute), aRuleIndexes); 
    6974 
     75                        // todo: class match here.... 
     76 
     77                        matchRulesForList(rules.getTagRules(mElement.localName), aRuleIndexes); 
    7078                } 
    7179 
     
    8088                                const localName:String         = mElement.localName; 
    8189                                const selectorLocalName:String = d.selector.m_tag.localName; 
     90 
    8291                                if ((localName == selectorLocalName || selectorLocalName == '*') && checkSelector1(d.selector)) 
    8392                                { 
     
    110119                        if (!checkOneSelector(sel, e, isAncestor, isSubSelector)) 
    111120                                return SelectorFailsLocally; 
    112                          
     121 
     122                    // The rest of the selectors has to match 
     123                    var relation:uint = sel.relation; 
     124 
     125                    // Prepare next sel 
     126                        sel = sel.m_tagHistory; 
     127                        if (!sel) 
     128                                return SelectorMatches; 
     129 
     130                        if (relation != CSSSelector.SubSelector) 
     131                                // Bail-out if this selector is irrelevant for the pseudoStyle 
     132                                if (mPseudoStyle != RenderStyle.NOPSEUDO && mPseudoStyle != dynamicPseudo) 
     133                                        return SelectorFailsCompletely; 
     134 
     135                        switch (relation) 
     136                        { 
     137                        case CSSSelector.Descendant: 
     138                                SelectTest.puts("reached CSSStyleSheet.as:138"); 
     139                                SelectTest.puts(" todo: implement descendant selector matching"); 
     140                                break; 
     141                        } 
    113142 
    114143                        return SelectorFailsCompletely; 
  • lang/actionscript/ascss/src/cssdom/IASCSSElement.as

    r10847 r10854  
    88                function get hasClass():Boolean; 
    99                function get idAttribute():String; 
     10                function get firstChild():IASCSSElement; 
    1011                function get parentNode():IASCSSElement; 
    1112        }