|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package CSS::Parse::Packed;  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
17161
 | 
 use warnings;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
116
 | 
    | 
| 
4
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
13
 | 
 use strict;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
128
 | 
    | 
| 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our $VERSION = '0.07';  | 
| 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
23
 | 
 use base qw/CSS::Parse/;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
1438
 | 
    | 
| 
9
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
582
 | 
 use Carp;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
253
 | 
    | 
| 
10
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
491
 | 
 use CSS::Style;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2370
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
80
 | 
    | 
| 
11
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
477
 | 
 use CSS::Selector;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
140
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
56
 | 
    | 
| 
12
 | 
3
 | 
 
 | 
 
 | 
  
3
  
 | 
 
 | 
437
 | 
 use CSS::Property;  | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
919
 | 
    | 
| 
 
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2915
 | 
    | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub parse_string {  | 
| 
15
 | 
6
 | 
 
 | 
 
 | 
  
6
  
 | 
  
0
  
 | 
6964
 | 
     my $self   = shift;  | 
| 
16
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
9
 | 
     my $string = shift;  | 
| 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
18
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
49
 | 
     $string =~ s{\r\n|\r|\n}{ }g;  | 
| 
19
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
16
 | 
     $string =~ s{(?:\@[\S\s]*?;)}{}g;  | 
| 
20
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
13
 | 
     $self->_parse_string($string);  | 
| 
21
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
13
 | 
     $self->_create_styles;  | 
| 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
23
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub _parse_string {  | 
| 
25
 | 
6
 | 
 
 | 
 
 | 
  
6
  
 | 
 
 | 
8
 | 
     my $self   = shift;  | 
| 
26
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
     my $string = shift;  | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
28
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
60
 | 
     for my $str (grep { /\S/ } split /(?<=\})/, $string) {  | 
| 
 
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
52
 | 
    | 
| 
29
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
86
 | 
         my ($selectors, $properties) = $str =~ m/^\s*([^{]+?)\s*\{(.*)\}\s*$/  | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             or carp "Invalid style data '$str'", next;  | 
| 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
32
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
31
 | 
         my @selectors = split /\s*,\s*/, $selectors;  | 
| 
33
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
24
 | 
         for my $property (grep { /\S/ } split /\;/, $properties) {  | 
| 
 
 | 
23
 | 
 
 | 
 
 | 
 
 | 
 
 | 
57
 | 
    | 
| 
34
 | 
13
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
74
 | 
             my ($name, $val) = $property =~ m/^\s*([\w._-]+)\s*:\s*(.*?)\s*$/  | 
| 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 or carp "Invalid property '$property'", next;  | 
| 
36
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
20
 | 
             for my $selector (@selectors) {  | 
| 
37
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
23
 | 
                 $self->stash->{$selector}->{$name} = $val;  | 
| 
38
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             }  | 
| 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
42
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
43
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub _create_styles {  | 
| 
44
 | 
6
 | 
 
 | 
 
 | 
  
6
  
 | 
 
 | 
7
 | 
     my $self = shift;  | 
| 
45
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
46
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
     my @styles;  | 
| 
47
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
     for my $selector (keys %{$self->stash}) {  | 
| 
 
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
8
 | 
    | 
| 
48
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
29
 | 
         my $s = CSS::Style->new({ adaptor => $self->{parent}->{adaptor} });  | 
| 
49
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
135
 | 
         $s->add_selector(CSS::Selector->new({ name => $selector }));  | 
| 
50
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
94
 | 
         while (my ($name, $val) = each %{ $self->stash->{$selector} }) {  | 
| 
 
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
94
 | 
    | 
| 
51
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             my $property = CSS::Property->new({  | 
| 
52
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 property => $name,  | 
| 
53
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 value    => $val,  | 
| 
54
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 adaptor  => $s->{adaptor},  | 
| 
55
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
46
 | 
             });  | 
| 
56
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
326
 | 
             $s->add_property($property);  | 
| 
57
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
58
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
12
 | 
         push @styles, $s;  | 
| 
59
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
60
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
61
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
36
 | 
     $self->{parent}->{styles} = \@styles;  | 
| 
62
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
63
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
64
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub stash {  | 
| 
65
 | 
35
 | 
 
 | 
  
100
  
 | 
  
35
  
 | 
  
0
  
 | 
200
 | 
     $_[0]->{parent}->{__PACKAGE__."::stash"} ||= {};  | 
| 
66
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
67
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
68
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
69
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |