| 60 |
our $Attr; ## By CSSOM attribute name |
our $Attr; ## By CSSOM attribute name |
| 61 |
our $Key; ## By internal key |
our $Key; ## By internal key |
| 62 |
|
|
| 63 |
|
sub init ($) { |
| 64 |
|
my $self = shift; |
| 65 |
|
delete $self->{style_sheet}; |
| 66 |
|
delete $self->{unitless_px}; |
| 67 |
|
delete $self->{hashless_rgb}; |
| 68 |
|
delete $self->{href}; |
| 69 |
|
delete $self->{base_uri}; |
| 70 |
|
} # init |
| 71 |
|
|
| 72 |
sub parse_char_string ($$) { |
sub parse_char_string ($$) { |
| 73 |
my $self = $_[0]; |
my $self = $_[0]; |
| 74 |
|
|
| 144 |
my $namespace_allowed = 1; |
my $namespace_allowed = 1; |
| 145 |
my $media_allowed = 1; |
my $media_allowed = 1; |
| 146 |
|
|
| 147 |
|
my $ss = $self->{style_sheet} ||= Message::DOM::CSSStyleSheet->____new |
| 148 |
|
(manakai_base_uri => $self->{base_uri}, |
| 149 |
|
css_rules => $open_rules->[0], |
| 150 |
|
## TODO: href |
| 151 |
|
## TODO: owner_node |
| 152 |
|
## TODO: media |
| 153 |
|
type => 'text/css', ## TODO: OK? |
| 154 |
|
_parser => $self, _nsmap => $nsmap); |
| 155 |
|
|
| 156 |
S: { |
S: { |
| 157 |
if ($state == BEFORE_STATEMENT_STATE) { |
if ($state == BEFORE_STATEMENT_STATE) { |
| 158 |
$t = $tt->get_next_token |
$t = $tt->get_next_token |
| 582 |
die "$0: parse_char_string: Unknown state: $state"; |
die "$0: parse_char_string: Unknown state: $state"; |
| 583 |
} |
} |
| 584 |
} # S |
} # S |
| 585 |
|
|
| 586 |
|
for (@{$$ss->{css_rules}}) { |
| 587 |
|
$$_->{parent_style_sheet} = $ss; |
| 588 |
|
Scalar::Util::weaken ($$_->{parent_style_sheet}); |
| 589 |
|
} |
| 590 |
for my $parent_rule (@$parent_rules) { |
for my $parent_rule (@$parent_rules) { |
| 591 |
for (@{$$parent_rule->{css_rules}}) { |
for (@{$$parent_rule->{css_rules}}) { |
| 592 |
$$_->{parent_rule} = $parent_rule; |
$$_->{parent_rule} = $parent_rule; |
| 594 |
} |
} |
| 595 |
} |
} |
| 596 |
|
|
|
my $ss = Message::DOM::CSSStyleSheet->____new |
|
|
(manakai_base_uri => $self->{base_uri}, |
|
|
css_rules => $open_rules->[0], |
|
|
## TODO: href |
|
|
## TODO: owner_node |
|
|
## TODO: media |
|
|
type => 'text/css', ## TODO: OK? |
|
|
_parser => $self, _nsmap => $nsmap); |
|
| 597 |
return $ss; |
return $ss; |
| 598 |
} # parse_char_string |
} # parse_char_string |
| 599 |
|
|