/[suikacvs]/messaging/manakai/lib/Message/DOM/CSSRule.pm
Suika

Diff of /messaging/manakai/lib/Message/DOM/CSSRule.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by wakaba, Mon Jan 14 03:55:23 2008 UTC revision 1.9 by wakaba, Mon Feb 11 00:32:53 2008 UTC
# Line 60  sub ____new ($$$) { Line 60  sub ____new ($$$) {
60  sub css_text ($;$) {  sub css_text ($;$) {
61    ## TODO: setter    ## TODO: setter
62    
63    ## TODO: Browser compatibility    ## NOTE: Where and how white space characters are inserted are
64      ## intentionally changed from those in browsers so that properties are
65      ## more prettily printed.
66      ## See <http://suika.fam.cx/gate/2005/sw/cssText> for what browsers do.
67    local $Error::Depth = $Error::Depth + 1;    local $Error::Depth = $Error::Depth + 1;
68    return $_[0]->selector_text . " {\n" . $_[0]->style->css_text . "}\n";    return $_[0]->selector_text . " {\n" . $_[0]->style->css_text . '}';
69  } # css_text  } # css_text
70    
71  sub type ($) { Message::DOM::CSSRule::STYLE_RULE }  sub type ($) { Message::DOM::CSSRule::STYLE_RULE }
# Line 78  sub selector_text ($;$) { Line 81  sub selector_text ($;$) {
81    my $self = $_[0];    my $self = $_[0];
82    require Whatpm::CSS::SelectorsSerializer;    require Whatpm::CSS::SelectorsSerializer;
83    return Whatpm::CSS::SelectorsSerializer->serialize_selector_text    return Whatpm::CSS::SelectorsSerializer->serialize_selector_text
84        ($$self->{_selectors}, sub {        ($$self->{_selectors}, ${$self->parent_style_sheet}->{_nsmap});
         ## TODO: We should have some caching mechanism, otherwise  
         ## too many computation for complex selectors in long style sheet.  
         return $self->parent_style_sheet->manakai_lookup_namespace_prefix  
             ($_[0]);  
       });  
85  } # selector_text  } # selector_text
86    
87  sub style ($) {  sub style ($) {
# Line 118  sub encoding ($) { Line 116  sub encoding ($) {
116  package Message::DOM::CSSImportRule;  package Message::DOM::CSSImportRule;
117  push our @ISA, 'Message::DOM::CSSRule', 'Message::IF::CSSImportRule';  push our @ISA, 'Message::DOM::CSSRule', 'Message::IF::CSSImportRule';
118    
119  sub ____new ($$$$) {  sub ____new ($$$$$) {
120    my $self = bless \{href => $_[1], media => $_[2], style_sheet => $_[3]}, $_[0];    my $self = bless \{href => $_[1],
121    ${$_[3]}->{owner_rule} = $self;                       base_uri => $_[2], ## Ref to base URI
122    Scalar::Util::weaken (${$_[3]}->{owner_rule});                       media => \$_[3],
123                         style_sheet => $_[4]}, $_[0];
124      require Message::DOM::MediaList;
125      bless $$self->{media}, 'Message::DOM::MediaList';
126      ${$_[4]}->{owner_rule} = $self;
127      Scalar::Util::weaken (${$_[4]}->{owner_rule});
128    return $self;    return $self;
129  } # ____new  } # ____new
130    
131  ## |CSSRule| attributes  ## |CSSRule| attributes
132    
133  ## TODO: |css_text|  sub css_text ($;$) {
134      ## TODO: setter
135    
136      my $self = shift;
137      my $r = '@import url(' . $self->href . ')';
138      my $media = ''.$self->media;
139      if ($media) {
140        $r .= ' ' . $media;
141      }
142      $r .= ';';
143      return $r;
144    } # css_text
145    
146  sub type ($) { Message::DOM::CSSRule::IMPORT_RULE }  sub type ($) { Message::DOM::CSSRule::IMPORT_RULE }
147    
# Line 149  package Message::DOM::CSSMediaRule; Line 163  package Message::DOM::CSSMediaRule;
163  push our @ISA, 'Message::DOM::CSSRule', 'Message::IF::CSSMediaRule';  push our @ISA, 'Message::DOM::CSSRule', 'Message::IF::CSSMediaRule';
164    
165  sub ____new ($$$) {  sub ____new ($$$) {
166    my $self = bless \{media => $_[1], css_rules => $_[2]}, $_[0];    my $self = bless \{media => \$_[1], css_rules => $_[2]}, $_[0];
167      require Message::DOM::MediaList;
168      bless $$self->{media}, 'Message::DOM::MediaList';
169    for (@{$_[2]}) {    for (@{$_[2]}) {
170      ${$_}->{parent_rule} = $self;      ${$_}->{parent_rule} = $self;
171      Scalar::Util::weaken (${$_}->{parent_rule});      Scalar::Util::weaken (${$_}->{parent_rule});
# Line 159  sub ____new ($$$) { Line 175  sub ____new ($$$) {
175    
176  ## |CSSRule| attributes  ## |CSSRule| attributes
177    
178  ## TODO: |css_text|  sub css_text ($;$) {
179      ## TODO: setter
180      my $v = '@media ' . $_[0]->media . " {\n";
181      for (@{${$_[0]}->{css_rules}}) {
182        $v .= $_->css_text . "\n";
183        ## BUG: Browsers do indent.
184      }
185      $v .= "}";
186      return $v;
187    } # css_text
188    
189  sub type ($) { Message::DOM::CSSRule::MEDIA_RULE }  sub type ($) { Message::DOM::CSSRule::MEDIA_RULE }
190    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24