| 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 | OCBNET::CSS::Parser::Selectors::CORE:regcomp (opcode) |
| 8 | 8 | 1 | 81µs | 81µs | OCBNET::CSS::Parser::Selectors::CORE:qr (opcode) |
| 1 | 1 | 1 | 81µs | 177µs | OCBNET::CSS::Parser::Selectors::BEGIN@10 |
| 1 | 1 | 1 | 64µs | 64µs | OCBNET::CSS::Parser::Selectors::BEGIN@19.8 |
| 1 | 1 | 1 | 59µs | 768µs | OCBNET::CSS::Parser::Selectors::BEGIN@29 |
| 1 | 1 | 1 | 57µs | 88µs | OCBNET::CSS::Parser::Selectors::BEGIN@11 |
| 1 | 1 | 1 | 33µs | 33µs | OCBNET::CSS::Parser::Selectors::BEGIN@22 |
| 1 | 1 | 1 | 29µs | 29µs | OCBNET::CSS::Parser::Selectors::BEGIN@25 |
| 1 | 1 | 1 | 26µs | 26µs | OCBNET::CSS::Parser::Selectors::BEGIN@16 |
| 1 | 1 | 1 | 22µs | 22µs | OCBNET::CSS::Parser::Selectors::BEGIN@19 |
| 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 |