Filename | /home/ocbnet/domain/ocbnet.ch/vhost/webmerge/htdocs/webmerge/scripts/modules/OCBNET/CSS/Parser/Selectors.pm |
Statements | Executed 21 statements in 6.06ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
8 | 8 | 1 | 3.08ms | 3.08ms | CORE:regcomp (opcode) | OCBNET::CSS::Parser::Selectors::
8 | 8 | 1 | 81µs | 81µs | CORE:qr (opcode) | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 81µs | 177µs | BEGIN@10 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 64µs | 64µs | BEGIN@19.8 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 59µs | 768µs | BEGIN@29 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 57µs | 88µs | BEGIN@11 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 33µs | 33µs | BEGIN@22 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 29µs | 29µs | BEGIN@25 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 26µs | 26µs | BEGIN@16 | OCBNET::CSS::Parser::Selectors::
1 | 1 | 1 | 22µs | 22µs | BEGIN@19 | OCBNET::CSS::Parser::Selectors::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | ################################################################################################### | ||||
2 | # Copyright 2013 by Marcel Greter | ||||
3 | # This file is part of Webmerge (GPL3) | ||||
4 | #################################################################################################### | ||||
5 | # regular expressions to match css2/css3 selectors | ||||
6 | #################################################################################################### | ||||
7 | package OCBNET::CSS::Parser::Selectors; | ||||
8 | #################################################################################################### | ||||
9 | |||||
10 | 2 | 151µs | 2 | 273µs | # spent 177µs (81+96) within OCBNET::CSS::Parser::Selectors::BEGIN@10 which was called:
# once (81µs+96µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 10 # spent 177µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@10
# spent 96µs making 1 call to strict::import |
11 | 2 | 212µs | 2 | 120µs | # spent 88µs (57+32) within OCBNET::CSS::Parser::Selectors::BEGIN@11 which was called:
# once (57µs+32µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 11 # spent 88µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@11
# spent 32µs making 1 call to warnings::import |
12 | |||||
13 | #################################################################################################### | ||||
14 | |||||
15 | # define our version string | ||||
16 | 1 | 143µs | 1 | 26µs | # spent 26µs within OCBNET::CSS::Parser::Selectors::BEGIN@16 which was called:
# once (26µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 16 # spent 26µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@16 |
17 | |||||
18 | # load exporter and inherit from it | ||||
19 | 3 | 486µs | 2 | 86µs | BEGIN { use Exporter qw(); our @ISA = qw(Exporter); } # spent 64µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@19.8
# spent 22µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@19 |
20 | |||||
21 | # define our functions that will be exported | ||||
22 | 1 | 193µs | 1 | 33µs | # spent 33µs within OCBNET::CSS::Parser::Selectors::BEGIN@22 which was called:
# once (33µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 22 # spent 33µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@22 |
23 | |||||
24 | # define our functions than can be exported | ||||
25 | 1 | 159µs | 1 | 29µs | # spent 29µs within OCBNET::CSS::Parser::Selectors::BEGIN@25 which was called:
# once (29µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 25 # spent 29µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@25 |
26 | |||||
27 | #################################################################################################### | ||||
28 | |||||
29 | 2 | 1.13ms | 2 | 1.48ms | # spent 768µs (59+709) within OCBNET::CSS::Parser::Selectors::BEGIN@29 which was called:
# once (59µs+709µs) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 29 # spent 768µs making 1 call to OCBNET::CSS::Parser::Selectors::BEGIN@29
# spent 709µs making 1 call to Exporter::import |
30 | |||||
31 | #################################################################################################### | ||||
32 | |||||
33 | # create matchers for the various css selector types | ||||
34 | 1 | 136µs | 2 | 68µs | our $re_css_id = qr/\#$re_css_name/; # select single id # spent 55µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 13µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
35 | 1 | 84µs | 2 | 49µs | our $re_css_tag = qr/(?:$re_css_name|\*)/; # select single tag # spent 40µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
36 | 1 | 76µs | 2 | 37µs | our $re_css_class = qr/\.$re_css_name/; # select single class # spent 29µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 8µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
37 | 1 | 79µs | 2 | 46µs | our $re_css_pseudo = qr/\:{1,2}$re_css_name/; # select single pseudo # spent 38µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 8µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
38 | |||||
39 | # select attributes and its content with advanced css2/css3 selectors | ||||
40 | 1 | 151µs | 2 | 116µs | our $re_css_attr = qr/\[$re_css_name\s*(?:[\~\^\$\*\|]?=\s*(?:\'$re_apo\'|\"$re_quot\"|[^\)]*))?\]/; # spent 106µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
41 | |||||
42 | #################################################################################################### | ||||
43 | |||||
44 | # create expression to match a single rule | ||||
45 | # example : DIV#id.class1.class2:hover | ||||
46 | 1 | 470µs | 2 | 433µs | our $re_css_selector = qr/(?: # spent 423µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 9µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
47 | \* | ||||
48 | | $re_css_attr* $re_css_pseudo+ | ||||
49 | | $re_css_class+ $re_css_attr* $re_css_pseudo* | ||||
50 | | $re_css_id $re_css_class* $re_css_attr* $re_css_pseudo* | ||||
51 | | $re_css_tag $re_css_id? $re_css_class* $re_css_attr* $re_css_pseudo* | ||||
52 | )/x; | ||||
53 | |||||
54 | #################################################################################################### | ||||
55 | |||||
56 | # create expression to match complex rules | ||||
57 | # example : #id DIV.class FORM A:hover | ||||
58 | 1 | 892µs | 2 | 851µs | our $re_css_selector_rule = qr/$re_css_selector(?:(?:\s*[\>\+\~]\s*|\s+)$re_css_selector)*/; # spent 840µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 10µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
59 | |||||
60 | #################################################################################################### | ||||
61 | |||||
62 | # create expression to match multiple complex rules | ||||
63 | # example : #id DIV.class FORM A:hover, BODY DIV.header | ||||
64 | 1 | 1.61ms | 2 | 1.56ms | our $re_css_selector_rules = qr/$re_css_selector_rule(?:\s*,\s*$re_css_selector_rule)*/; # spent 1.55ms making 1 call to OCBNET::CSS::Parser::Selectors::CORE:regcomp
# spent 14µs making 1 call to OCBNET::CSS::Parser::Selectors::CORE:qr |
65 | |||||
66 | #################################################################################################### | ||||
67 | #################################################################################################### | ||||
68 | 1 | 88µs | 1; | ||
# spent 81µs within OCBNET::CSS::Parser::Selectors::CORE:qr which was called 8 times, avg 10µs/call:
# once (14µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 64
# once (13µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 34
# once (10µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 58
# once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 46
# once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 40
# once (9µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 35
# once (8µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 36
# once (8µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 37 | |||||
# spent 3.08ms within OCBNET::CSS::Parser::Selectors::CORE:regcomp which was called 8 times, avg 385µs/call:
# once (1.55ms+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 64
# once (840µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 58
# once (423µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 46
# once (106µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 40
# once (55µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 34
# once (40µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 35
# once (38µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 37
# once (29µs+0s) by OCBNET::CSS::Parser::CSS::BEGIN@30 at line 36 |