forked from reflex/reflex-framework
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCSSCondition.as
More file actions
55 lines (47 loc) · 1.3 KB
/
CSSCondition.as
File metadata and controls
55 lines (47 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package mx.styles
{
import reflex.style.IStylable;
import flash.display.DisplayObject;
public class CSSCondition
{
protected static var onSpace:RegExp = new RegExp("\\s+");
protected var _kind:String;
protected var _value:String;
protected var _specificity:uint;
public function CSSCondition(kind:String, value:String)
{
_kind = kind;
_value = value;
_specificity = (kind == "id" ? 100 : 10);
}
public function get kind():String
{
return _kind;
}
public function get value():String
{
return _value;
}
public function get specificity():uint
{
return _specificity;
}
public function match(obj:Object):Boolean
{
var stylable:IStylable = obj as IStylable;
var displayObject:DisplayObject = obj as DisplayObject;
if (_kind == "id" && stylable) return stylable.id == _value;
if (_kind == "id" && displayObject) return displayObject.name == _value;
if (_kind == "class") return stylable.styleName.split(onSpace).indexOf(_value) != -1;
if (_kind == "pseudo") return stylable.state.split(onSpace).indexOf(_value) != -1;
return false;
}
public function toString():String
{
if (_kind == "id") return "#id" + _value;
if (_kind == "class") return "." + _value;
if (_kind == "pseudo") return ":" + _value;
return "";
}
}
}