You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(24) |
Sep
|
Oct
(7) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
2005 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Allen D. <all...@us...> - 2001-08-27 16:23:18
|
Update of /cvsroot/perl-css/Parse/blib/lib/Parse/CSS/Adaptor In directory usw-pr-cvs1:/tmp/cvs-serv1029/blib/lib/Parse/CSS/Adaptor Removed Files: Default.pm Test.pm Log Message: don't really want blib in cvs, now do we? --- Default.pm DELETED --- --- Test.pm DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:23:18
|
Update of /cvsroot/perl-css/Parse/blib/lib/auto/Parse/CSS In directory usw-pr-cvs1:/tmp/cvs-serv1029/blib/lib/auto/Parse/CSS Removed Files: .exists Log Message: don't really want blib in cvs, now do we? --- .exists DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:23:17
|
Update of /cvsroot/perl-css/Parse/blib/lib/Parse In directory usw-pr-cvs1:/tmp/cvs-serv1029/blib/lib/Parse Removed Files: .exists CSS.pm Log Message: don't really want blib in cvs, now do we? --- .exists DELETED --- --- CSS.pm DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:23:17
|
Update of /cvsroot/perl-css/Parse/blib/man3 In directory usw-pr-cvs1:/tmp/cvs-serv1029/blib/man3 Removed Files: .exists Parse::CSS.3 Log Message: don't really want blib in cvs, now do we? --- .exists DELETED --- --- Parse::CSS.3 DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:23:17
|
Update of /cvsroot/perl-css/Parse/blib/arch/auto/Parse/CSS In directory usw-pr-cvs1:/tmp/cvs-serv1029/blib/arch/auto/Parse/CSS Removed Files: .exists Log Message: don't really want blib in cvs, now do we? --- .exists DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:22:01
|
Update of /cvsroot/perl-css/Parse In directory usw-pr-cvs1:/tmp/cvs-serv426 Removed Files: Makefile pm_to_blib Log Message: --- Makefile DELETED --- --- pm_to_blib DELETED --- |
From: Allen D. <all...@us...> - 2001-08-27 16:18:50
|
Update of /cvsroot/perl-css/Parse In directory usw-pr-cvs1:/tmp/cvs-serv31580 Log Message: nothing yet Status: Vendor Tag: allenday Release Tags: initial-import N Parse/CSS.pm N Parse/Makefile.PL N Parse/Makefile N Parse/pm_to_blib N Parse/test.pl N Parse/CSS/CSS.xs N Parse/CSS/Style.pm N Parse/CSS/MANIFEST N Parse/CSS/Adaptor.pm N Parse/CSS/Adaptor/Default.pm N Parse/CSS/Adaptor/Test.pm N Parse/blib/lib/Parse/.exists N Parse/blib/lib/Parse/CSS.pm N Parse/blib/lib/Parse/CSS/test.pl N Parse/blib/lib/Parse/CSS/CSS.xs N Parse/blib/lib/Parse/CSS/Style.pm N Parse/blib/lib/Parse/CSS/MANIFEST N Parse/blib/lib/Parse/CSS/Adaptor.pm N Parse/blib/lib/Parse/CSS/Adaptor/Default.pm N Parse/blib/lib/Parse/CSS/Adaptor/Test.pm N Parse/blib/lib/auto/Parse/CSS/.exists N Parse/blib/arch/auto/Parse/CSS/.exists N Parse/blib/man3/.exists N Parse/blib/man3/Parse::CSS.3 N Parse/t/test1.pl N Parse/t/t.css N Parse/t/t N Parse/t/wormbase.css No conflicts created by this import ***** Bogus filespec: - Imported sources |
From: Robin B. <da...@us...> - 2001-08-17 19:56:06
|
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC In directory usw-pr-cvs1:/tmp/cvs-serv13556/lib/CSS/SAC Modified Files: Writer.pm Log Message: slightly more informative Index: Writer.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Writer.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Writer.pm 2001/08/17 18:00:01 1.3 +++ Writer.pm 2001/08/17 19:56:03 1.4 @@ -199,7 +199,7 @@ my $dh = shift; my $at_rule = shift; - $dh->[_out_]->($dh, "\n/* $at_rule */\n"); + $dh->[_out_]->($dh, "\n/* ignorable: $at_rule */\n"); } #---------------------------------------------------------------------# |
From: Robin B. <da...@us...> - 2001-08-17 19:55:28
|
Update of /cvsroot/perl-css/CSS-SAC In directory usw-pr-cvs1:/tmp/cvs-serv13423 Modified Files: SAC.pm Changes Log Message: more and more bugfixes Index: SAC.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/SAC.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- SAC.pm 2001/08/17 19:30:03 1.5 +++ SAC.pm 2001/08/17 19:55:25 1.6 @@ -71,7 +71,7 @@ # matches a number -$RE_NUM = qr/(?:(?:[0-9]+)|(?:[0-9]*\.[0-9]+))/; +$RE_NUM = qr/(?:(?:[0-9]*\.[0-9]+)|(?:[0-9]+))/; # maps a length or assoc value to it's constant @@ -382,7 +382,7 @@ elsif ($css =~ s/^\s*\@page\s+//i) { warn "[SAC] parsing page\n" if DEBUG; # grab the name and pseudo-page if they're there - $css =~ s/^($RE_IDENT)?\s*(?::($RE_IDENT))//; + $css =~ s/^($RE_IDENT)?\s*(?::($RE_IDENT))?//; my ($name,$pseudo) = ($1,$2); # parse the block @@ -398,7 +398,7 @@ # at rules that we know nothing about will be like else { my $at_rule; - warn "[SAC] parsing unknown at rule\n" if DEBUG; + warn "[SAC] parsing unknown at rule ($css)\n" if DEBUG; # take off the @rule first $css =~ s/^\s*(\@$RE_IDENT\s*)//; @@ -1028,6 +1028,7 @@ my $new_selector = shift @tokens; eval { $new_selector->SelectorType }; if ($@) { +# last unless length $new_selector; if (ref $new_selector) { unshift @tokens, $new_selector; $new_selector = $sac->[_sf_]->create_element_selector(undef,undef); Index: Changes =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/Changes,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Changes 2001/08/17 19:30:03 1.3 +++ Changes 2001/08/17 19:55:25 1.4 @@ -6,14 +6,15 @@ a newline. As a result Text::Balanced 1.84 is now required. - fixed a bug which caused some backslash escapes to fail in IDENT tokens (thanks to Bjoern Hoehrmann) - - fixed a stupid precedence bug in the RGB regex (thanks to Steffen - Goeldner) + - fixed a stupid precedence bug in the RGB regex and the float regex + (patch by Steffen Goeldner) - HTML end comments didn't work properly (Steffen Goeldner) - @import looked for uri instead of url (Steffen Goeldner) - added the possibility to parse properties that start with a '-'. I don't think that's too spec clean, but a lot of people seem to want those as extensions in various browsers (suggested by BH). - added _ to the IDENT characters (it's in CSS2 Errata) + - fixed @page parsing (patch by SG) 0.03 Mon Apr 23 16:44:16 2001 |
From: Robin B. <da...@us...> - 2001-08-17 19:30:06
|
Update of /cvsroot/perl-css/CSS-SAC In directory usw-pr-cvs1:/tmp/cvs-serv8575 Modified Files: SAC.pm Changes Log Message: misc. fixes for Bjoern-reported bugs Index: SAC.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/SAC.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- SAC.pm 2001/08/17 18:14:22 1.4 +++ SAC.pm 2001/08/17 19:30:03 1.5 @@ -48,7 +48,7 @@ # matches a valid CSS ident (this may be wrong, needs testing) my $RE_IDENT = qr/ (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[ \x32-\xff]))|[a-zA-Z\x80-\xff]) - (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[ \x32-\xff]))|[a-zA-Z\x80-\xff0-9-])* + (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[ \x32-\xff]))|[a-zA-Z\x80-\xff0-9_-])* /xs; # matches a unicode range @@ -452,7 +452,8 @@ # error else { - $sac->[_eh_]->fatal_error('Unknown trailing tokens in style sheet'); + last if ! length $css; + $sac->[_eh_]->fatal_error('Unknown trailing tokens in style sheet: "' . $css . '"'); last; } } @@ -670,7 +671,14 @@ while (1) { # we've reached the rule, or there isn't anything left to parse - if ($$css =~ m/^\s*\{/ or !length $$css) { + if ($$css =~ m/^\s*\{/) { + if (!@sels) { + @sels = ($sac->[_sf_]->create_element_selector(undef,undef)); + } + last; + } + + elsif (!length $$css) { last; } @@ -697,6 +705,7 @@ } } + return unless @sels; # this returns nothing, there were no selectors (needed for parse) return CSS::SAC::SelectorList->new(\@sels); } #---------------------------------------------------------------------# @@ -719,6 +728,7 @@ my ($attr,$func,$args); while (1) { + $sac->parse_comments($css); # end of selector @@ -970,7 +980,6 @@ } } - ### process the tokens list # if the first token isn't an element selector then create a *|* one @@ -1019,8 +1028,14 @@ my $new_selector = shift @tokens; eval { $new_selector->SelectorType }; if ($@) { - # this is a serious exception - $sac->[_eh_]->fatal_error('Really weird input in simple selector'); + if (ref $new_selector) { + unshift @tokens, $new_selector; + $new_selector = $sac->[_sf_]->create_element_selector(undef,undef); + } + else { + # this is a serious exception (we don't know what's here) + $sac->[_eh_]->fatal_error('Really weird input in simple selector: "' . $$css . '"'); + } } # create a conditional selector with all conditions @@ -1123,7 +1138,7 @@ $$css =~ s/^\s*//; while (length $$css) { # the property - $$css =~ s/^($RE_IDENT)\s*//; + $$css =~ s/^(-?$RE_IDENT)\s*//; # includes the - prefix my $prop = $1; $sac->parse_comments($css); @@ -1134,14 +1149,12 @@ # the value my $lu = $sac->parse_property_value($css); if (!@$lu) { -#print "pvcss: $$css\n"; -# $$css =~ s/^.*?;?\s*//; -# $sac->[_eh_]->warning('Unknown token in property value'); - if ($$css =~ s/[^;]*;//) { + last unless length $$css; + if ($$css =~ s/[^;}]*(?:;|\})?//) { # this is a bit dodgy... $sac->[_eh_]->warning('Unknown token in style declaration'); } else { - $sac->[_eh_]->fatal_error('Unknown token in style declaration'); + $sac->[_eh_]->fatal_error('Unknown token in style declaration: "' . $$css . '"'); } next; } @@ -1183,6 +1196,8 @@ while (1) { my ($type,$text,$value); + $sac->parse_comments($css); + # exit conditions if (! length($$css) or $$css =~ m/^\s*(?:;|!)/) { last; @@ -1706,9 +1721,11 @@ - add docs on how to write a {Document,Error}Handler, right now there is example code in Writer, but it isn't all clearly explained. - - add an iterator that tracks loops and exits them with an error - whenever it reaches a certain (configurable) count. We need to - reliably jump out of infinite loops whenever it is needed. + - find a way to make the '-' prefix to properties optional + + - switch to spec names (?) + + - update docs =head1 AUTHOR Index: Changes =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/Changes,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Changes 2001/08/17 17:50:15 1.2 +++ Changes 2001/08/17 19:30:03 1.3 @@ -10,6 +10,10 @@ Goeldner) - HTML end comments didn't work properly (Steffen Goeldner) - @import looked for uri instead of url (Steffen Goeldner) + - added the possibility to parse properties that start with a '-'. + I don't think that's too spec clean, but a lot of people seem to want + those as extensions in various browsers (suggested by BH). + - added _ to the IDENT characters (it's in CSS2 Errata) 0.03 Mon Apr 23 16:44:16 2001 |
From: Robin B. <da...@us...> - 2001-08-17 18:14:25
|
Update of /cvsroot/perl-css/CSS-SAC In directory usw-pr-cvs1:/tmp/cvs-serv24248 Modified Files: MANIFEST SAC.pm Log Message: manifest error and smallish bug Index: MANIFEST =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/MANIFEST,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- MANIFEST 2001/08/17 13:32:14 1.1.1.1 +++ MANIFEST 2001/08/17 18:14:22 1.2 @@ -10,7 +10,7 @@ lib/CSS/SAC/Condition/Lang.pm lib/CSS/SAC/Condition/Negative.pm lib/CSS/SAC/Condition/Positional.pm -lib/CSS/lib/CSS/SAC/ConditionFactory.pm +lib/CSS/SAC/ConditionFactory.pm lib/CSS/SAC/LexicalUnit.pm lib/CSS/SAC/Selector.pm lib/CSS/SAC/Selector/CharacterData.pm Index: SAC.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/SAC.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- SAC.pm 2001/08/17 18:09:11 1.3 +++ SAC.pm 2001/08/17 18:14:22 1.4 @@ -488,7 +488,7 @@ $sac->[_dh_]->charset($charset) if $sac->[_dh_can_]->{charset}; } else { - if ($$css =~ s/[^;]*;//;) { + if ($$css =~ s/[^;]*;//) { $sac->[_eh_]->warning('Unknown token in charset declaration'); } else { |
From: Robin B. <da...@us...> - 2001-08-17 18:09:14
|
Update of /cvsroot/perl-css/CSS-SAC In directory usw-pr-cvs1:/tmp/cvs-serv23070 Modified Files: SAC.pm Log Message: a few fixes for endless loops Index: SAC.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/SAC.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- SAC.pm 2001/08/17 17:50:15 1.2 +++ SAC.pm 2001/08/17 18:09:11 1.3 @@ -2,6 +2,7 @@ ### # CSS::SAC - a SAC implementation for Perl # Robin Berjon <ro...@kn...> +# 17/08/2001 - bugfixes... # 23/04/2001 - more enhancements # 19/03/2001 - second version, various suggestions and enhancements # 24/02/2001 - prototype mark I of the new model @@ -19,7 +20,7 @@ %DIM_MAP %FUNC_MAP ); -$VERSION = '0.03'; +$VERSION = '0.04'; use CSS::SAC::ConditionFactory qw(); use CSS::SAC::SelectorFactory qw(); @@ -638,12 +639,11 @@ $sac->[_dh_]->comment($1) if $sac->[_dh_can_]->{comment}; } else { - $sac->[_eh_]->warning('Unterminated comment'); - if ($$css =~ s/[^;]*;//) { - $sac->[_eh_]->warning('Unknown token in import rule'); + if ($$css =~ s/.*\*\///) { + $sac->[_eh_]->warning('Strange comment token, guessing the parse'); } else { - $sac->[_eh_]->fatal_error('Unknown token in import rule'); + $sac->[_eh_]->fatal_error('Unterminated comment: unrecoverable'); } } } @@ -688,14 +688,11 @@ # error else { # something wrong must have happened - $$css =~ s/^[^{]*//; - $sac->[_eh_]->warning('Unknown token in selector list'); - last; - if ($$css =~ s/[^;]*;//) { - $sac->[_eh_]->warning('Unknown token in import rule'); + if ($$css =~ s/[^{]*//) { + $sac->[_eh_]->warning('Unknown token in selector list'); } else { - $sac->[_eh_]->fatal_error('Unknown token in import rule'); + $sac->[_eh_]->fatal_error('Unknown token in selector list'); } } } @@ -964,14 +961,11 @@ # an error else { - $$css =~ s/^.*?(,|{)/$1/; - $sac->[_eh_]->warning('Unknown token in simple selector'); - last; - if ($$css =~ s/[^;]*;//) { - $sac->[_eh_]->warning('Unknown token in import rule'); + if (s/^.*?(,|{)/$1/) { + $sac->[_eh_]->warning('Unknown token in simple selector'); } else { - $sac->[_eh_]->fatal_error('Unknown token in import rule'); + $sac->[_eh_]->fatal_error('Unknown token in simple selector'); } } } @@ -1140,14 +1134,14 @@ # the value my $lu = $sac->parse_property_value($css); if (!@$lu) { -print "pvcss: $$css\n"; - $$css =~ s/^.*?;?\s*//; - $sac->[_eh_]->warning('Unknown token in property value'); +#print "pvcss: $$css\n"; +# $$css =~ s/^.*?;?\s*//; +# $sac->[_eh_]->warning('Unknown token in property value'); if ($$css =~ s/[^;]*;//) { - $sac->[_eh_]->warning('Unknown token in import rule'); + $sac->[_eh_]->warning('Unknown token in style declaration'); } else { - $sac->[_eh_]->fatal_error('Unknown token in import rule'); + $sac->[_eh_]->fatal_error('Unknown token in style declaration'); } next; } |
From: Robin B. <da...@us...> - 2001-08-17 18:00:06
|
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition In directory usw-pr-cvs1:/tmp/cvs-serv20716/lib/CSS/SAC/Condition Modified Files: Attribute.pm Combinator.pm Content.pm Lang.pm Negative.pm Positional.pm Log Message: stupid dos endings, samba really sucks when it wants to Index: Attribute.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Attribute.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Attribute.pm 2001/08/17 17:50:15 1.2 +++ Attribute.pm 2001/08/17 18:00:01 1.3 @@ -1,191 +1,191 @@ - -### -# CSS::SAC::Condition::Attribute - SAC AttributeConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Attribute; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _local_name_ - _value_ - _ns_uri_ - _specified_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) -# creates a new sac AttributeCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the attribute conditions - my $local_name = shift; - my $ns_uri = shift; - my $specified = shift; - my $value = shift; - - # create a condition - my $acond = $class->SUPER::new($type); - - # add our fields - $acond->[_local_name_] = $local_name if $local_name; - $acond->[_value_] = $value if defined $value; - $acond->[_ns_uri_] = $ns_uri if defined $ns_uri; - $acond->[_specified_] = $specified if $specified; - - return $acond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Attribute::getLocalName = \&LocalName; -*CSS::SAC::Condition::Attribute::getNamespaceURI = \&NamespaceURI; -*CSS::SAC::Condition::Attribute::getValue = \&Value; -*CSS::SAC::Condition::Attribute::getSpecified = \&Specified; - - -#---------------------------------------------------------------------# -# my $lname = $cond->LocalName() -# $cond->LocalName($lname) -# get/set the local name -#---------------------------------------------------------------------# -sub LocalName { - (@_==2) ? $_[0]->[_local_name_] = $_[1] : - $_[0]->[_local_name_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $ns = $cond->NamespaceURI() -# $cond->NamespaceURI($ns) -# get/set the ns uri -#---------------------------------------------------------------------# -sub NamespaceURI { - (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : - $_[0]->[_ns_uri_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $value = $cond->Value() -# $cond->Value($value) -# get/set the value -#---------------------------------------------------------------------# -sub Value { - (@_==2) ? $_[0]->[_value_] = $_[1] : - $_[0]->[_value_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $spec = $cond->Specified() -# $cond->Specified($spec) -# get/set the 'specified' state, ie whether a specific value was -# requested for this attr -#---------------------------------------------------------------------# -sub Specified { - (@_==2) ? $_[0]->[_specified_] = $_[1] : - $_[0]->[_specified_]; -} -#---------------------------------------------------------------------# - - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Attribute - SAC AttributeConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) - -=item * $cond->new($type,$lname,$ns,$specified,$value) - -Creates a new attribute condition. - -=item * $acond->LocalName([$lname]) - -get/set the local name - -=item * $acond->NamespaceURI([$ns]) - -get/set the ns uri - -=item * $acond->Value([$value]) - -get/set the value - -=item * $acond->Specified([$spec]) - -get/set the 'specified' state, ie whether a specific value was -requested for this attr - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Attribute - SAC AttributeConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Attribute; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _local_name_ + _value_ + _ns_uri_ + _specified_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) +# creates a new sac AttributeCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the attribute conditions + my $local_name = shift; + my $ns_uri = shift; + my $specified = shift; + my $value = shift; + + # create a condition + my $acond = $class->SUPER::new($type); + + # add our fields + $acond->[_local_name_] = $local_name if $local_name; + $acond->[_value_] = $value if defined $value; + $acond->[_ns_uri_] = $ns_uri if defined $ns_uri; + $acond->[_specified_] = $specified if $specified; + + return $acond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Attribute::getLocalName = \&LocalName; +*CSS::SAC::Condition::Attribute::getNamespaceURI = \&NamespaceURI; +*CSS::SAC::Condition::Attribute::getValue = \&Value; +*CSS::SAC::Condition::Attribute::getSpecified = \&Specified; + + +#---------------------------------------------------------------------# +# my $lname = $cond->LocalName() +# $cond->LocalName($lname) +# get/set the local name +#---------------------------------------------------------------------# +sub LocalName { + (@_==2) ? $_[0]->[_local_name_] = $_[1] : + $_[0]->[_local_name_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $ns = $cond->NamespaceURI() +# $cond->NamespaceURI($ns) +# get/set the ns uri +#---------------------------------------------------------------------# +sub NamespaceURI { + (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : + $_[0]->[_ns_uri_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $value = $cond->Value() +# $cond->Value($value) +# get/set the value +#---------------------------------------------------------------------# +sub Value { + (@_==2) ? $_[0]->[_value_] = $_[1] : + $_[0]->[_value_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $spec = $cond->Specified() +# $cond->Specified($spec) +# get/set the 'specified' state, ie whether a specific value was +# requested for this attr +#---------------------------------------------------------------------# +sub Specified { + (@_==2) ? $_[0]->[_specified_] = $_[1] : + $_[0]->[_specified_]; +} +#---------------------------------------------------------------------# + + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Attribute - SAC AttributeConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) + +=item * $cond->new($type,$lname,$ns,$specified,$value) + +Creates a new attribute condition. + +=item * $acond->LocalName([$lname]) + +get/set the local name + +=item * $acond->NamespaceURI([$ns]) + +get/set the ns uri + +=item * $acond->Value([$value]) + +get/set the value + +=item * $acond->Specified([$spec]) + +get/set the 'specified' state, ie whether a specific value was +requested for this attr + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Combinator.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Combinator.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Combinator.pm 2001/08/17 17:50:15 1.2 +++ Combinator.pm 2001/08/17 18:00:01 1.3 @@ -1,147 +1,147 @@ - -### -# CSS::SAC::Condition::Combinator - SAC CombinatorConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Combinator; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _condition_1_ - _condition_2_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Combinator->new($type,$first_cond,$second_cond) -# creates a new sac CombinatorCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the combinator conditions - my $condition_1 = shift; # any default ? - my $condition_2 = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_condition_1_] = $condition_1 if $condition_1; - $ccond->[_condition_2_] = $condition_2 if $condition_2; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Combinator::getFirstCondition = \&FirstCondition; -*CSS::SAC::Condition::Combinator::getSecondCondition = \&SecondCondition; - - -#---------------------------------------------------------------------# -# my $cond1 = $ccond->FirstCondition() -# $ccond->FirstCondition($cond1) -# get/set the first condition -#---------------------------------------------------------------------# -sub FirstCondition { - (@_==2) ? $_[0]->[_condition_1_] = $_[1] : - $_[0]->[_condition_1_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $cond2 = $ccond->SecondCondition() -# $ccond->SecondCondition($cond2) -# get/set the second condition -#---------------------------------------------------------------------# -sub SecondCondition { - (@_==2) ? $_[0]->[_condition_2_] = $_[1] : - $_[0]->[_condition_2_]; -} -#---------------------------------------------------------------------# - - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Combinator - SAC CombinatorConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Combinator->new($type,$cond1,$cond2) - -=item * $cond->new($type,$cond1,$cond2) - -Creates a new combinator condition. - -=item * $ccond->FirstCondition([$cond]) -=item * $ccond->SecondCondition([$cond]) - -get/set the conditions that compose the combinator - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Combinator - SAC CombinatorConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Combinator; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _condition_1_ + _condition_2_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Combinator->new($type,$first_cond,$second_cond) +# creates a new sac CombinatorCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the combinator conditions + my $condition_1 = shift; # any default ? + my $condition_2 = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_condition_1_] = $condition_1 if $condition_1; + $ccond->[_condition_2_] = $condition_2 if $condition_2; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Combinator::getFirstCondition = \&FirstCondition; +*CSS::SAC::Condition::Combinator::getSecondCondition = \&SecondCondition; + + +#---------------------------------------------------------------------# +# my $cond1 = $ccond->FirstCondition() +# $ccond->FirstCondition($cond1) +# get/set the first condition +#---------------------------------------------------------------------# +sub FirstCondition { + (@_==2) ? $_[0]->[_condition_1_] = $_[1] : + $_[0]->[_condition_1_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $cond2 = $ccond->SecondCondition() +# $ccond->SecondCondition($cond2) +# get/set the second condition +#---------------------------------------------------------------------# +sub SecondCondition { + (@_==2) ? $_[0]->[_condition_2_] = $_[1] : + $_[0]->[_condition_2_]; +} +#---------------------------------------------------------------------# + + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Combinator - SAC CombinatorConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Combinator->new($type,$cond1,$cond2) + +=item * $cond->new($type,$cond1,$cond2) + +Creates a new combinator condition. + +=item * $ccond->FirstCondition([$cond]) +=item * $ccond->SecondCondition([$cond]) + +get/set the conditions that compose the combinator + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Content.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Content.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Content.pm 2001/08/17 17:50:15 1.2 +++ Content.pm 2001/08/17 18:00:01 1.3 @@ -1,128 +1,128 @@ - -### -# CSS::SAC::Condition::Content - SAC ContentConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Content; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Content->new($type,$data) -# creates a new sac ContentCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $data = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_data_] = $data if defined $data; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Content::getData = \&Data; - -#---------------------------------------------------------------------# -# my $data = $ccond->Data() -# $ccond->Data($data) -# get/set the condition's data -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Content - SAC ContentConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Content->new($type,$data) - -=item * $cond->new($type,$data) - -Creates a new content condition. - -=item * $ccond->Data([$data]) - -get/set the condition's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Content - SAC ContentConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Content; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Content->new($type,$data) +# creates a new sac ContentCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $data = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_data_] = $data if defined $data; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Content::getData = \&Data; + +#---------------------------------------------------------------------# +# my $data = $ccond->Data() +# $ccond->Data($data) +# get/set the condition's data +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Content - SAC ContentConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Content->new($type,$data) + +=item * $cond->new($type,$data) + +Creates a new content condition. + +=item * $ccond->Data([$data]) + +get/set the condition's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Lang.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Lang.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Lang.pm 2001/08/17 17:50:15 1.2 +++ Lang.pm 2001/08/17 18:00:01 1.3 @@ -1,128 +1,128 @@ - -### -# CSS::SAC::Condition::Lang - SAC LangConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Lang; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _lang_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Lang->new($type,$lang) -# creates a new sac LangCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $lang = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_lang_] = $lang if $lang; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Lang::getLang = \⟪ - -#---------------------------------------------------------------------# -# my $lang = $lcond->Lang() -# $lcond->Lang($lang) -# get/set the condition's lang -#---------------------------------------------------------------------# -sub Lang { - (@_==2) ? $_[0]->[_lang_] = $_[1] : - $_[0]->[_lang_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Lang - SAC LangConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Lang->new($type,$lang) - -=item * $cond->new($type,$lang) - -Creates a new lang condition. - -=item * $ccond->Lang([$lang]) - -get/set the condition's lang - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Lang - SAC LangConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Lang; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _lang_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Lang->new($type,$lang) +# creates a new sac LangCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $lang = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_lang_] = $lang if $lang; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Lang::getLang = \⟪ + +#---------------------------------------------------------------------# +# my $lang = $lcond->Lang() +# $lcond->Lang($lang) +# get/set the condition's lang +#---------------------------------------------------------------------# +sub Lang { + (@_==2) ? $_[0]->[_lang_] = $_[1] : + $_[0]->[_lang_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Lang - SAC LangConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Lang->new($type,$lang) + +=item * $cond->new($type,$lang) + +Creates a new lang condition. + +=item * $ccond->Lang([$lang]) + +get/set the condition's lang + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Negative.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Negative.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Negative.pm 2001/08/17 17:50:15 1.2 +++ Negative.pm 2001/08/17 18:00:01 1.3 @@ -1,129 +1,129 @@ - -### -# CSS::SAC::Condition::Negative - SAC NegativeConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Negative; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _cond_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Negative->new($type,$cond) -# creates a new sac NegativeCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $cond = shift; - - # create a condition - my $ncond = $class->SUPER::new($type); - - # add our fields - $ncond->[_cond_] = $cond; - - return $ncond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Negative::getCondition = \&Condition; - - -#---------------------------------------------------------------------# -# my $cond = $ncond->Condition() -# $ncond->Condition($cond) -# get/set the condition's sub condition -#---------------------------------------------------------------------# -sub Condition { - (@_==2) ? $_[0]->[_cond_] = $_[1] : - $_[0]->[_cond_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Negative - SAC NegativeConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Negative->new($type,$cond) - -=item * $cond->new($type,$cond) - -Creates a new negative condition. - -=item * $ccond->Condition([$cond]) - -get/set the condition's sub condition - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Negative - SAC NegativeConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Negative; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _cond_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Negative->new($type,$cond) +# creates a new sac NegativeCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $cond = shift; + + # create a condition + my $ncond = $class->SUPER::new($type); + + # add our fields + $ncond->[_cond_] = $cond; + + return $ncond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Negative::getCondition = \&Condition; + + +#---------------------------------------------------------------------# +# my $cond = $ncond->Condition() +# $ncond->Condition($cond) +# get/set the condition's sub condition +#---------------------------------------------------------------------# +sub Condition { + (@_==2) ? $_[0]->[_cond_] = $_[1] : + $_[0]->[_cond_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Negative - SAC NegativeConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Negative->new($type,$cond) + +=item * $cond->new($type,$cond) + +Creates a new negative condition. + +=item * $ccond->Condition([$cond]) + +get/set the condition's sub condition + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Positional.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Positional.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Positional.pm 2001/08/17 17:50:15 1.2 +++ Positional.pm 2001/08/17 18:00:01 1.3 @@ -1,182 +1,182 @@ - -### -# CSS::SAC::Condition::Positional - SAC PositionalConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Positional; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _position_ - _same_type_ - _same_node_type_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Positional->new($type,$position,$node_type,$same_type) -# creates a new sac PositionalCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $position = shift; - my $same_type = shift; - my $node_type = shift; - - -### IMPORTANT NOTE ### -# -# we will need to parse the new an+b expressions that can be found in -# positional conditions. In fact, old style simple numbers will be -# expressed that new way because they can be mapped to it. -# -# We'll need to provide for the corresponding accessors. Also, a -# ->position_matches($pos) method would be cool as it would allow -# client code to simply ask whether a position matches instead of -# calculating it itself. - - - # create a condition - my $pcond = $class->SUPER::new($type); - - # add our fields - $pcond->[_position_] = $position if defined $position; - $pcond->[_same_type_] = $same_type if defined $same_type; - $pcond->[_same_node_type_] = $node_type if defined $node_type; - - return $pcond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Positional::getPosition = \&Position; -*CSS::SAC::Condition::Positional::getType = \&Type; -*CSS::SAC::Condition::Positional::getTypeNode = \&TypeNode; - - -#---------------------------------------------------------------------# -# my $pos = $pcond->Position() -# $pcond->Position($pos) -# get/set the condition's position -#---------------------------------------------------------------------# -sub Position { - (@_==2) ? $_[0]->[_position_] = $_[1] : - $_[0]->[_position_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $bool = $pcond->Type() -# $pcond->Type($bool) -# get/set the condition's type constraint -#---------------------------------------------------------------------# -sub Type { - (@_==2) ? $_[0]->[_same_type_] = $_[1] : - $_[0]->[_same_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $bool = $pcond->TypeNode() -# $pcond->TypeNode($bool) -# get/set the condition's node type constraint -#---------------------------------------------------------------------# -sub TypeNode { - (@_==2) ? $_[0]->[_same_node_type_] = $_[1] : - $_[0]->[_same_node_type_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Positional - SAC PositionalConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Positional->new($type,$pos,$node_type,$same_type) - -=item * $cond->new($type,$pos,$node_type,$same_type) - -Creates a new positional condition. - -=item * $pcond->Position([$pos]) - -get/set the condition's position - -=item * $pcond->Type([$bool]) - -get/set the condition's type constraint - -=item * $pcond->TypeNode([$bool]) - -get/set the condition's node type constraint - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Positional - SAC PositionalConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Positional; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _position_ + _same_type_ + _same_node_type_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Positional->new($type,$position,$node_type,$same_type) +# creates a new sac PositionalCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $position = shift; + my $same_type = shift; + my $node_type = shift; + + +### IMPORTANT NOTE ### +# +# we will need to parse the new an+b expressions that can be found in +# positional conditions. In fact, old style simple numbers will be +# expressed that new way because they can be mapped to it. +# +# We'll need to provide for the corresponding accessors. Also, a +# ->position_matches($pos) method would be cool as it would allow +# client code to simply ask whether a position matches instead of +# calculating it itself. + + + # create a condition + my $pcond = $class->SUPER::new($type); + + # add our fields + $pcond->[_position_] = $position if defined $position; + $pcond->[_same_type_] = $same_type if defined $same_type; + $pcond->[_same_node_type_] = $node_type if defined $node_type; + + return $pcond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Positional::getPosition = \&Position; +*CSS::SAC::Condition::Positional::getType = \&Type; +*CSS::SAC::Condition::Positional::getTypeNode = \&TypeNode; + + +#---------------------------------------------------------------------# +# my $pos = $pcond->Position() +# $pcond->Position($pos) +# get/set the condition's position +#---------------------------------------------------------------------# +sub Position { + (@_==2) ? $_[0]->[_position_] = $_[1] : + $_[0]->[_position_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $bool = $pcond->Type() +# $pcond->Type($bool) +# get/set the condition's type constraint +#---------------------------------------------------------------------# +sub Type { + (@_==2) ? $_[0]->[_same_type_] = $_[1] : + $_[0]->[_same_type_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $bool = $pcond->TypeNode() +# $pcond->TypeNode($bool) +# get/set the condition's node type constraint +#---------------------------------------------------------------------# +sub TypeNode { + (@_==2) ? $_[0]->[_same_node_type_] = $_[1] : + $_[0]->[_same_node_type_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Positional - SAC PositionalConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Positional->new($type,$pos,$node_type,$same_type) + +=item * $cond->new($type,$pos,$node_type,$same_type) + +Creates a new positional condition. + +=item * $pcond->Position([$pos]) + +get/set the condition's position + +=item * $pcond->Type([$bool]) + +get/set the condition's type constraint + +=item * $pcond->TypeNode([$bool]) + +get/set the condition's node type constraint + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + |
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector In directory usw-pr-cvs1:/tmp/cvs-serv20716/lib/CSS/SAC/Selector Modified Files: CharacterData.pm Conditional.pm Descendant.pm Element.pm Negative.pm ProcessingInstruction.pm Sibling.pm Simple.pm Log Message: stupid dos endings, samba really sucks when it wants to Index: CharacterData.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/CharacterData.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- CharacterData.pm 2001/08/17 17:50:15 1.2 +++ CharacterData.pm 2001/08/17 18:00:01 1.3 @@ -1,126 +1,126 @@ - -### -# CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::CharacterData; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::CharacterData->new($type,$data) -# creates a new sac CharacterDataSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the cdata selectors - my $data = shift; - - # create a selector - my $csel = $class->SUPER::new($type); - - # add our fields - $csel->[_data_] = $data if defined $data; - - return $csel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::CharacterData::getData = \&Data; - -#---------------------------------------------------------------------# -# my $data = $csel->Data() -# $csel->Data($data) -# get/set the selector's cdata -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::CharacterData->new($type,$data) -=item * $sel->new($type,$data) - -Creates a new cdata selector. - -=item * $csel->Data([$data]) - -get/set the selector's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::CharacterData; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::CharacterData->new($type,$data) +# creates a new sac CharacterDataSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the cdata selectors + my $data = shift; + + # create a selector + my $csel = $class->SUPER::new($type); + + # add our fields + $csel->[_data_] = $data if defined $data; + + return $csel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::CharacterData::getData = \&Data; + +#---------------------------------------------------------------------# +# my $data = $csel->Data() +# $csel->Data($data) +# get/set the selector's cdata +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::CharacterData->new($type,$data) +=item * $sel->new($type,$data) + +Creates a new cdata selector. + +=item * $csel->Data([$data]) + +get/set the selector's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Conditional.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Conditional.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Conditional.pm 2001/08/17 17:50:15 1.2 +++ Conditional.pm 2001/08/17 18:00:01 1.3 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Conditional - SAC ConditionalSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Conditional; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _selector_ - _condition_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Conditional->new($type,$selector,$condition) -# creates a new sac ConditionalSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $selector = shift; - my $condition = shift; - - # create a selector - my $csel = $class->SUPER::new($type); - - # add our fields - $csel->[_condition_] = $condition; - $csel->[_selector_] = $selector; - - return $csel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Conditional::getCondition = \&Condition; -*CSS::SAC::Selector::Conditional::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $cond = $csel->Condition() -# $csel->Condition($cond) -# get/set the selector's condition -#---------------------------------------------------------------------# -sub Condition { - (@_==2) ? $_[0]->[_condition_] = $_[1] : - $_[0]->[_condition_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $cond = $csel->SimpleSelector() -# $csel->SimpleSelector($cond) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_selector_] = $_[1] : - $_[0]->[_selector_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Conditional - SAC ConditionalSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Conditional->new($type,$selector,$condition) -=item * $sel->new($type,$selector,$condition) - -Creates a new conditional selector. - -=item * $csel->Condition([$cond]) - -get/set the selector's condition - -=item * $csel->SimpleSelector([$cond]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Conditional - SAC ConditionalSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Conditional; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _selector_ + _condition_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Conditional->new($type,$selector,$condition) +# creates a new sac ConditionalSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $selector = shift; + my $condition = shift; + + # create a selector + my $csel = $class->SUPER::new($type); + + # add our fields + $csel->[_condition_] = $condition; + $csel->[_selector_] = $selector; + + return $csel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Conditional::getCondition = \&Condition; +*CSS::SAC::Selector::Conditional::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $cond = $csel->Condition() +# $csel->Condition($cond) +# get/set the selector's condition +#---------------------------------------------------------------------# +sub Condition { + (@_==2) ? $_[0]->[_condition_] = $_[1] : + $_[0]->[_condition_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $cond = $csel->SimpleSelector() +# $csel->SimpleSelector($cond) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_selector_] = $_[1] : + $_[0]->[_selector_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Conditional - SAC ConditionalSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Conditional->new($type,$selector,$condition) +=item * $sel->new($type,$selector,$condition) + +Creates a new conditional selector. + +=item * $csel->Condition([$cond]) + +get/set the selector's condition + +=item * $csel->SimpleSelector([$cond]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Descendant.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Descendant.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Descendant.pm 2001/08/17 17:50:15 1.2 +++ Descendant.pm 2001/08/17 18:00:01 1.3 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Descendant - SAC DescendantSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Descendant; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector', - with => [qw( - _ancestor_ - _simple_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) -# creates a new sac DescendantSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $ancestor_sel = shift; - my $simple_sel = shift; - - # create a selector - my $dsel = $class->SUPER::new($type); - - # add our fields - $dsel->[_ancestor_] = $ancestor_sel; - $dsel->[_simple_] = $simple_sel; - - return $dsel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Descendant::getAncestorSelector = \&AncestorSelector; -*CSS::SAC::Selector::Descendant::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $ancestor_sel = $dsel->AncestorSelector() -# $dsel->AncestorSelector($ancestor_sel) -# get/set the selector's ancestor selector -#---------------------------------------------------------------------# -sub AncestorSelector { - (@_==2) ? $_[0]->[_ancestor_] = $_[1] : - $_[0]->[_ancestor_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $simple_sel = $dsel->SimpleSelector() -# $dsel->SimpleSelector($simple_sel) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_simple_] = $_[1] : - $_[0]->[_simple_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Descendant - SAC DescendantSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) -=item * $dsel->new($type,$ancestor_sel,$simple_sel) - -Creates a new descendant selector. - -=item * $dsel->AncestorSelector([$ancestor_sel]) - -get/set the selector's ancestor selector - -=item * $dsel->SimpleSelector([$simple_sel]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Descendant - SAC DescendantSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Descendant; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector', + with => [qw( + _ancestor_ + _simple_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) +# creates a new sac DescendantSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $ancestor_sel = shift; + my $simple_sel = shift; + + # create a selector + my $dsel = $class->SUPER::new($type); + + # add our fields + $dsel->[_ancestor_] = $ancestor_sel; + $dsel->[_simple_] = $simple_sel; + + return $dsel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Descendant::getAncestorSelector = \&AncestorSelector; +*CSS::SAC::Selector::Descendant::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $ancestor_sel = $dsel->AncestorSelector() +# $dsel->AncestorSelector($ancestor_sel) +# get/set the selector's ancestor selector +#---------------------------------------------------------------------# +sub AncestorSelector { + (@_==2) ? $_[0]->[_ancestor_] = $_[1] : + $_[0]->[_ancestor_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $simple_sel = $dsel->SimpleSelector() +# $dsel->SimpleSelector($simple_sel) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_simple_] = $_[1] : + $_[0]->[_simple_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Descendant - SAC DescendantSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) +=item * $dsel->new($type,$ancestor_sel,$simple_sel) + +Creates a new descendant selector. + +=item * $dsel->AncestorSelector([$ancestor_sel]) + +get/set the selector's ancestor selector + +=item * $dsel->SimpleSelector([$simple_sel]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Element.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Element.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Element.pm 2001/08/17 17:50:15 1.2 +++ Element.pm 2001/08/17 18:00:01 1.3 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Element - SAC ElementSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Element; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _local_name_ - _ns_uri_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Element->new($type,$ns_uri,$local_name) -# creates a new sac ElementSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $ns_uri = shift; - my $local_name = shift; - - # create a selector - my $esel = $class->SUPER::new($type); - - # add our fields - $esel->[_local_name_] = $local_name if $local_name; - $esel->[_ns_uri_] = $ns_uri if defined $ns_uri; - - return $esel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Element::getLocalName = \&LocalName; -*CSS::SAC::Selector::Element::getNamespaceURI = \&NamespaceURI; - -#---------------------------------------------------------------------# -# my $lname = $esel->LocalName() -# $esel->LocalName($lname) -# get/set the selector's local name -#---------------------------------------------------------------------# -sub LocalName { - (@_==2) ? $_[0]->[_local_name_] = $_[1] : - $_[0]->[_local_name_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $ns = $esel->NamespaceURI() -# $esel->NamespaceURI($ns) -# get/set the selector's ns -#---------------------------------------------------------------------# -sub NamespaceURI { - (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : - $_[0]->[_ns_uri_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Element - SAC ElementSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Element->new($type,$local_name,$ns_uri) -=item * $esel->new($type,$local_name,$ns_uri) - -Creates a new element selector. - -=item * $esel->LocalName([$lname]) - -get/set the selector's local name - -=item * $esel->NamespaceURI([$ns]) - -get/set the selector's ns - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Element - SAC ElementSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Element; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _local_name_ + _ns_uri_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Element->new($type,$ns_uri,$local_name) +# creates a new sac ElementSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $ns_uri = shift; + my $local_name = shift; + + # create a selector + my $esel = $class->SUPER::new($type); + + # add our fields + $esel->[_local_name_] = $local_name if $local_name; + $esel->[_ns_uri_] = $ns_uri if defined $ns_uri; + + return $esel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Element::getLocalName = \&LocalName; +*CSS::SAC::Selector::Element::getNamespaceURI = \&NamespaceURI; + +#---------------------------------------------------------------------# +# my $lname = $esel->LocalName() +# $esel->LocalName($lname) +# get/set the selector's local name +#---------------------------------------------------------------------# +sub LocalName { + (@_==2) ? $_[0]->[_local_name_] = $_[1] : + $_[0]->[_local_name_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $ns = $esel->NamespaceURI() +# $esel->NamespaceURI($ns) +# get/set the selector's ns +#---------------------------------------------------------------------# +sub NamespaceURI { + (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : + $_[0]->[_ns_uri_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Element - SAC ElementSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Element->new($type,$local_name,$ns_uri) +=item * $esel->new($type,$local_name,$ns_uri) + +Creates a new element selector. + +=item * $esel->LocalName([$lname]) + +get/set the selector's local name + +=item * $esel->NamespaceURI([$ns]) + +get/set the selector's ns + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Negative.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Negative.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Negative.pm 2001/08/17 17:50:15 1.2 +++ Negative.pm 2001/08/17 18:00:01 1.3 @@ -1,127 +1,127 @@ - -### -# CSS::SAC::Selector::Negative - SAC NegativeSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Negative; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _sel_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Negative->new($type,$sel) -# creates a new sac NegativeSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $sel = shift; - - # create a selector - my $nsel = $class->SUPER::new($type); - - # add our fields - $nsel->[_sel_] = $sel; - - return $nsel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Negative::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $sel = $nsel->SimpleSelector() -# $nsel->SimpleSelector($sel) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_sel_] = $_[1] : - $_[0]->[_sel_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Negative - SAC NegativeSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Selector::Negative->new($type,$sel) - -=item * $nsel->new($type,$sel) - -Creates a new negative selector. - -=item * $nsel->SimpleSelector([$sel]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Negative - SAC NegativeSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Negative; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _sel_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Negative->new($type,$sel) +# creates a new sac NegativeSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $sel = shift; + + # create a selector + my $nsel = $class->SUPER::new($type); + + # add our fields + $nsel->[_sel_] = $sel; + + return $nsel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Negative::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $sel = $nsel->SimpleSelector() +# $nsel->SimpleSelector($sel) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_sel_] = $_[1] : + $_[0]->[_sel_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Negative - SAC NegativeSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Selector::Negative->new($type,$sel) + +=item * $nsel->new($type,$sel) + +Creates a new negative selector. + +=item * $nsel->SimpleSelector([$sel]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: ProcessingInstruction.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/ProcessingInstruction.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ProcessingInstruction.pm 2001/08/17 17:50:15 1.2 +++ ProcessingInstruction.pm 2001/08/17 18:00:01 1.3 @@ -1,147 +1,147 @@ - -### -# CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::ProcessingInstruction; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _target_ - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) -# creates a new sac ProcessingInstructionSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $target = shift; - my $data = shift; - - # create a selector - my $psel = $class->SUPER::new($type); - - # add our fields - $psel->[_target_] = $target; - $psel->[_data_] = $data if defined $data; - - return $psel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -*CSS::SAC::Selector::ProcessingInstruction::getTarget = \&Target; -*CSS::SAC::Selector::ProcessingInstruction::getData = \&Data; - -#---------------------------------------------------------------------# -# my $target = $psel->Target() -# $psel->Target($target) -# get/set the selector's target -#---------------------------------------------------------------------# -sub Target { - (@_==2) ? $_[0]->[_target_] = $_[1] : - $_[0]->[_target_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $data = $psel->Data() -# $psel->Data($data) -# get/set the selector's data -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) -=item * $psel->new($type,$target,$data) - -Creates a new pi selector. - -=item * $psel->Target([$target]) - -get/set the selector's target - -=item * $psel->Data([$data]) - -get/set the selector's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::ProcessingInstruction; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _target_ + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) +# creates a new sac ProcessingInstructionSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $target = shift; + my $data = shift; + + # create a selector + my $psel = $class->SUPER::new($type); + + # add our fields + $psel->[_target_] = $target; + $psel->[_data_] = $data if defined $data; + + return $psel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +*CSS::SAC::Selector::ProcessingInstruction::getTarget = \&Target; +*CSS::SAC::Selector::ProcessingInstruction::getData = \&Data; + +#---------------------------------------------------------------------# +# my $target = $psel->Target() +# $psel->Target($target) +# get/set the selector's target +#---------------------------------------------------------------------# +sub Target { + (@_==2) ? $_[0]->[_target_] = $_[1] : + $_[0]->[_target_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $data = $psel->Data() +# $psel->Data($data) +# get/set the selector's data +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) +=item * $psel->new($type,$target,$data) + +Creates a new pi selector. + +=item * $psel->Target([$target]) + +get/set the selector's target + +=item * $psel->Data([$data]) + +get/set the selector's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Sibling.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Sibling.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Sibling.pm 2001/08/17 17:50:15 1.2 +++ Sibling.pm 2001/08/17 18:00:01 1.3 @@ -1,263 +1,263 @@ - -### -# CSS::SAC::Selector::Sibling - SAC SiblingSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Sibling; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector', - with => [qw( - _node_type_ - _selector_ - _sibling_selector_ - )], - }; -#---------------------------------------------------------------------# - - - -### Constants ######################################################### -# # -# # - -sub ELEMENT_NODE () { 1 } -sub ATTRIBUTE_NODE () { 2 } -sub TEXT_NODE () { 3 } -sub CDATA_SECTION_NODE () { 4 } -sub ENTITY_REFERENCE_NODE () { 5 } -sub ENTITY_NODE () { 6 } -sub PROCESSING_INSTRUCTION_NODE () { 7 } -sub COMMENT_NODE () { 8 } -sub DOCUMENT_NODE () { 9 } -sub DOCUMENT_TYPE_NODE () { 10 } -sub DOCUMENT_FRAGMENT_NODE () { 11 } -sub NOTATION_NODE () { 12 } -sub ANY_NODE () { 13 } - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - ELEMENT_NODE - ATTRIBUTE_NODE - TEXT_NODE - CDATA_SECTION_NODE - ENTITY_REFERENCE_NODE - ENTITY_NODE - PROCESSING_INSTRUCTION_NODE - COMMENT_NODE - DOCUMENT_NODE - DOCUMENT_TYPE_NODE - DOCUMENT_FRAGMENT_NODE - NOTATION_NODE - ANY_NODE - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Sibling->new($type,$node_type,$sel,$sibling_sel) -# creates a new sac SiblingSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $node_type = shift; - my $sel = shift; - my $sibling_sel = shift; - - # create a selector - my $ssel = $class->SUPER::new($type); - - # add our fields - $ssel->[_node_type_] = $node_type || ANY_NODE; - $ssel->[_selector_] = $sel; - $ssel->[_sibling_selector_] = $sibling_sel; - - return $ssel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Sibling::getNodeType = \&NodeType; -*CSS::SAC::Selector::Sibling::getSelector = \&Selector; -*CSS::SAC::Selector::Sibling::getSiblingSelector = \&SiblingSelector; - -#---------------------------------------------------------------------# -# my $node_type = $ssel->NodeType() -# $ssel->NodeType($node_type) -# get/set the node type to which we apply -#---------------------------------------------------------------------# -sub NodeType { - (@_==2) ? $_[0]->[_node_type_] = $_[1] : - $_[0]->[_node_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $sel = $ssel->Selector() -# $ssel->Selector($sel) -# get/set the selector -#---------------------------------------------------------------------# -sub Selector { - (@_==2) ? $_[0]->[_selector_] = $_[1] : - $_[0]->[_selector_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $o_ssel = $ssel->SiblingSelector() -# $ssel->SiblingSelector($o_ssel) -# get/set the sibling selector -#---------------------------------------------------------------------# -sub SiblingSelector { - (@_==2) ? $_[0]->[_sibling_selector_] = $_[1] : - $_[0]->[_sibling_selector_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Sibling - SAC SiblingSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector, look there for more -documentation. This class adds the methods described below. - -This subclass also defines the constants for the DOM nodes. It uses -the same constants as the DOM, and adds the ANY_NODE constant which -matches any node. - -=head1 CONSTANTS - -=over - -=item * ELEMENT_NODE - -=item * ATTRIBUTE_NODE - -=item * TEXT_NODE - -=item * CDATA_SECTION_NODE - -=item * ENTITY_REFERENCE_NODE - -=item * ENTITY_NODE - -=item * PROCESSING_INSTRUCTION_NODE - -=item * COMMENT_NODE - -=item * DOCUMENT_NODE - -=item * DOCUMENT_TYPE_NODE - -=item * DOCUMENT_FRAGMENT_NODE - -=item * NOTATION_NODE - -=item * ANY_NODE - -=back - -=head1 METHODS - -These also exist in spec style, simply prepend them with 'get'. - -=over - -=item * CSS::SAC::Selector::Sibling->new($type,$node_type,$sel,$sibling_sel) -=item * $ssel->new($type,$node_type,$sel,$sibling_sel) - -Creates a new sibling selector. - -=item * $ssel->NodeType([$node_type]) - -get/set the node type to which we apply - -=item * $ssel->Selector([$sel]) - -get/set the selector's sub selector - -=item * $ssel->SiblingSelector([$sib_sel]) - -get/set the selector's sibling selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut + +### +# CSS:... [truncated message content] |
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC In directory usw-pr-cvs1:/tmp/cvs-serv20716/lib/CSS/SAC Modified Files: Condition.pm ConditionFactory.pm LexicalUnit.pm Selector.pm SelectorFactory.pm SelectorList.pm TestWriter.pm Writer.pm Log Message: stupid dos endings, samba really sucks when it wants to Index: Condition.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Condition.pm 2001/08/17 17:50:15 1.2 +++ Condition.pm 2001/08/17 18:00:01 1.3 @@ -1,275 +1,275 @@ - -### -# CSS::SAC::Condition - base class for SAC conditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw(_type_)], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - -sub UNKNOWN_CONDITION () { 1 } -sub AND_CONDITION () { 2 } -sub ATTRIBUTE_CONDITION () { 3 } -sub BEGIN_HYPHEN_ATTRIBUTE_CONDITION () { 4 } -sub CLASS_CONDITION () { 5 } -sub CONTENT_CONDITION () { 6 } -sub ID_CONDITION () { 7 } -sub LANG_CONDITION () { 8 } -sub NEGATIVE_CONDITION () { 9 } -sub ONE_OF_ATTRIBUTE_CONDITION () { 10 } -sub ONLY_CHILD_CONDITION () { 11 } -sub ONLY_TYPE_CONDITION () { 12 } -sub OR_CONDITION () { 13 } -sub POSITIONAL_CONDITION () { 14 } -sub PSEUDO_CLASS_CONDITION () { 15 } - -# new non-standard conditions for CSS3 selectors -sub STARTS_WITH_ATTRIBUTE_CONDITION () { 16 } # [attr^='string'] -sub ENDS_WITH_ATTRIBUTE_CONDITION () { 17 } # [attr$='string'] -sub CONTAINS_ATTRIBUTE_CONDITION () { 18 } # [attr*='string'] -sub IS_ROOT_CONDITION () { 19 } # :root -sub IS_EMPTY_CONDITION () { 20 } # :empty - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - UNKNOWN_CONDITION - AND_CONDITION - ATTRIBUTE_CONDITION - BEGIN_HYPHEN_ATTRIBUTE_CONDITION - CLASS_CONDITION - CONTENT_CONDITION - ID_CONDITION - LANG_CONDITION - NEGATIVE_CONDITION - ONE_OF_ATTRIBUTE_CONDITION - ONLY_CHILD_CONDITION - ONLY_TYPE_CONDITION - OR_CONDITION - POSITIONAL_CONDITION - PSEUDO_CLASS_CONDITION - - STARTS_WITH_ATTRIBUTE_CONDITION - ENDS_WITH_ATTRIBUTE_CONDITION - CONTAINS_ATTRIBUTE_CONDITION - IS_ROOT_CONDITION - IS_EMPTY_CONDITION - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition->new($type) -# creates a new sac condition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - return bless [$type], $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -#---------------------------------------------------------------------# -# my $type = $cond->ConditionType() -# $cond->ConditionType($type) -# get/set the condition type -#---------------------------------------------------------------------# -sub ConditionType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# -*CSS::SAC::Condition::getConditionType = \&ConditionType; - - -#---------------------------------------------------------------------# -# $cond->is_type($condition_constant) -# returns true is this condition is of type $condition_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition - base class for SAC conditions - -=head1 SYNOPSIS - - use CSS::SAC::Condition qw(:constants); - foo if $cond->is_type(CONDITION_TYPE_CONSTANT); - -=head1 DESCRIPTION - -SAC Conditions describe conditions that can be expressed in CSS such -as AttributeConditions or PositionalConditions. This class provides -everything that is needed to implement simple conditions (methods, -constants) as well as what is needed by subclasses defining more -complex conditions. - -The constants are those defined in the SAC spec, with the leading SAC_ -removed. What the constants map to is to be considered an opaque token -that can be tested for equality. If there is demand for it, I will add -a way to add new constants (for people wishing to define new condition -types). - -I have also added the UNKNOWN_CONDITION constant. It shouldn't occur -in normal processing but it's always useful to have such fallback -values. - -The Condition interface adds $cond->is_type($condition_type) to the -interface defined in the SAC spec. This allows for more flexible type -checking. For instance, if you create a subclass of ContentCondition -that extends it with the ContentRegexCondition interface you will -probably want software ignorant of your subclass's existence to still -be able to do something useful with it. That software should also be -able to treat ContentRegexConditions as if they were -ContentConditions. - -If that software tests condition types the following way: - - $rcond->ConditionType == CONTENT_CONDITION - -then you've lost because the condition type of ContentRegexCondition -is REGEX_CONTENT_CONDITION. If, however, it tests it that way: - - $rcond->is_type(CONTENT_CONDITION) - -then you can simply implement is_type() so that it returns true for -it's own type and the type of it's superclass. I strongly recommend -using the latter scheme except in cases when you want to know the -exact type. - -=head1 CONSTANTS - -=over 4 - -=item * UNKNOWN_CONDITION - -=item * AND_CONDITION - -=item * ATTRIBUTE_CONDITION - -=item * BEGIN_HYPHEN_ATTRIBUTE_CONDITION - -=item * CLASS_CONDITION - -=item * CONTENT_CONDITION - -=item * ID_CONDITION - -=item * LANG_CONDITION - -=item * NEGATIVE_CONDITION - -=item * ONE_OF_ATTRIBUTE_CONDITION - -=item * ONLY_CHILD_CONDITION - -=item * ONLY_TYPE_CONDITION - -=item * OR_CONDITION - -=item * POSITIONAL_CONDITION - -=item * PSEUDO_CLASS_CONDITION - -=back - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition->new($type) or $cond->new($type) - -Creates a new condition. The $type must be one of the type constants. - -=item * $cond->ConditionType() - -Returns the constant corresponding to the type of this condition. - -=item * $cond->is_type($condition_type) - -Returns a boolean indicating whether this condition is of type -$condition_type (a condition constant). - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition - base class for SAC conditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw(_type_)], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + +sub UNKNOWN_CONDITION () { 1 } +sub AND_CONDITION () { 2 } +sub ATTRIBUTE_CONDITION () { 3 } +sub BEGIN_HYPHEN_ATTRIBUTE_CONDITION () { 4 } +sub CLASS_CONDITION () { 5 } +sub CONTENT_CONDITION () { 6 } +sub ID_CONDITION () { 7 } +sub LANG_CONDITION () { 8 } +sub NEGATIVE_CONDITION () { 9 } +sub ONE_OF_ATTRIBUTE_CONDITION () { 10 } +sub ONLY_CHILD_CONDITION () { 11 } +sub ONLY_TYPE_CONDITION () { 12 } +sub OR_CONDITION () { 13 } +sub POSITIONAL_CONDITION () { 14 } +sub PSEUDO_CLASS_CONDITION () { 15 } + +# new non-standard conditions for CSS3 selectors +sub STARTS_WITH_ATTRIBUTE_CONDITION () { 16 } # [attr^='string'] +sub ENDS_WITH_ATTRIBUTE_CONDITION () { 17 } # [attr$='string'] +sub CONTAINS_ATTRIBUTE_CONDITION () { 18 } # [attr*='string'] +sub IS_ROOT_CONDITION () { 19 } # :root +sub IS_EMPTY_CONDITION () { 20 } # :empty + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + UNKNOWN_CONDITION + AND_CONDITION + ATTRIBUTE_CONDITION + BEGIN_HYPHEN_ATTRIBUTE_CONDITION + CLASS_CONDITION + CONTENT_CONDITION + ID_CONDITION + LANG_CONDITION + NEGATIVE_CONDITION + ONE_OF_ATTRIBUTE_CONDITION + ONLY_CHILD_CONDITION + ONLY_TYPE_CONDITION + OR_CONDITION + POSITIONAL_CONDITION + PSEUDO_CLASS_CONDITION + + STARTS_WITH_ATTRIBUTE_CONDITION + ENDS_WITH_ATTRIBUTE_CONDITION + CONTAINS_ATTRIBUTE_CONDITION + IS_ROOT_CONDITION + IS_EMPTY_CONDITION + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition->new($type) +# creates a new sac condition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + return bless [$type], $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +#---------------------------------------------------------------------# +# my $type = $cond->ConditionType() +# $cond->ConditionType($type) +# get/set the condition type +#---------------------------------------------------------------------# +sub ConditionType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# +*CSS::SAC::Condition::getConditionType = \&ConditionType; + + +#---------------------------------------------------------------------# +# $cond->is_type($condition_constant) +# returns true is this condition is of type $condition_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition - base class for SAC conditions + +=head1 SYNOPSIS + + use CSS::SAC::Condition qw(:constants); + foo if $cond->is_type(CONDITION_TYPE_CONSTANT); + +=head1 DESCRIPTION + +SAC Conditions describe conditions that can be expressed in CSS such +as AttributeConditions or PositionalConditions. This class provides +everything that is needed to implement simple conditions (methods, +constants) as well as what is needed by subclasses defining more +complex conditions. + +The constants are those defined in the SAC spec, with the leading SAC_ +removed. What the constants map to is to be considered an opaque token +that can be tested for equality. If there is demand for it, I will add +a way to add new constants (for people wishing to define new condition +types). + +I have also added the UNKNOWN_CONDITION constant. It shouldn't occur +in normal processing but it's always useful to have such fallback +values. + +The Condition interface adds $cond->is_type($condition_type) to the +interface defined in the SAC spec. This allows for more flexible type +checking. For instance, if you create a subclass of ContentCondition +that extends it with the ContentRegexCondition interface you will +probably want software ignorant of your subclass's existence to still +be able to do something useful with it. That software should also be +able to treat ContentRegexConditions as if they were +ContentConditions. + +If that software tests condition types the following way: + + $rcond->ConditionType == CONTENT_CONDITION + +then you've lost because the condition type of ContentRegexCondition +is REGEX_CONTENT_CONDITION. If, however, it tests it that way: + + $rcond->is_type(CONTENT_CONDITION) + +then you can simply implement is_type() so that it returns true for +it's own type and the type of it's superclass. I strongly recommend +using the latter scheme except in cases when you want to know the +exact type. + +=head1 CONSTANTS + +=over 4 + +=item * UNKNOWN_CONDITION + +=item * AND_CONDITION + +=item * ATTRIBUTE_CONDITION + +=item * BEGIN_HYPHEN_ATTRIBUTE_CONDITION + +=item * CLASS_CONDITION + +=item * CONTENT_CONDITION + +=item * ID_CONDITION + +=item * LANG_CONDITION + +=item * NEGATIVE_CONDITION + +=item * ONE_OF_ATTRIBUTE_CONDITION + +=item * ONLY_CHILD_CONDITION + +=item * ONLY_TYPE_CONDITION + +=item * OR_CONDITION + +=item * POSITIONAL_CONDITION + +=item * PSEUDO_CLASS_CONDITION + +=back + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition->new($type) or $cond->new($type) + +Creates a new condition. The $type must be one of the type constants. + +=item * $cond->ConditionType() + +Returns the constant corresponding to the type of this condition. + +=item * $cond->is_type($condition_type) + +Returns a boolean indicating whether this condition is of type +$condition_type (a condition constant). + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: ConditionFactory.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/ConditionFactory.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ConditionFactory.pm 2001/08/17 17:50:15 1.2 +++ ConditionFactory.pm 2001/08/17 18:00:01 1.3 @@ -1,559 +1,559 @@ - -### -# CSS::SAC::ConditionFactory - the default ConditionFactory -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::ConditionFactory; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; [...1087 lines suppressed...] + +=back + +=head1 EXPERIMENTAL + +There's some experimental stuff in here to provide for some new CSS +constructs. It is and will remain undocumented until there is +consensus on the handling of these new tokens. If you badly need to +use one of the new CSS3 conditions that isn't documented, look at the +source for features tagged EXPERIMENTAL. + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: LexicalUnit.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/LexicalUnit.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- LexicalUnit.pm 2001/08/17 17:50:15 1.2 +++ LexicalUnit.pm 2001/08/17 18:00:01 1.3 @@ -1,389 +1,389 @@ - -### -# CSS::SAC::LexicalUnit - SAC units -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::LexicalUnit; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw( - _type_ - _value_ - _text_ - )], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - - -sub ATTR () { 1 } -sub CENTIMETER () { 2 } -sub COUNTER_FUNCTION () { 3 } -sub COUNTERS_FUNCTION () { 4 } -sub DEGREE () { 5 } -sub DIMENSION () { 6 } -sub EM () { 7 } -sub EX () { 8 } -sub FUNCTION () { 9 } -sub GRADIAN () { 10 } -sub HERTZ () { 11 } -sub IDENT () { 12 } -sub INCH () { 13 } -sub INHERIT () { 14 } -sub INTEGER () { 15 } -sub KILOHERTZ () { 16 } -sub MILLIMETER () { 17 } -sub MILLISECOND () { 18 } -sub OPERATOR_COMMA () { 19 } -sub OPERATOR_EXP () { 20 } -sub OPERATOR_GE () { 21 } -sub OPERATOR_GT () { 22 } -sub OPERATOR_LE () { 23 } -sub OPERATOR_LT () { 24 } -sub OPERATOR_MINUS () { 25 } -sub OPERATOR_MOD () { 26 } -sub OPERATOR_MULTIPLY () { 27 } -sub OPERATOR_PLUS () { 28 } -sub OPERATOR_SLASH () { 29 } -sub OPERATOR_TILDE () { 30 } -sub PERCENTAGE () { 31 } -sub PICA () { 32 } -sub PIXEL () { 33 } -sub POINT () { 34 } -sub RADIAN () { 35 } -sub REAL () { 36 } -sub RECT_FUNCTION () { 37 } -sub RGBCOLOR () { 38 } -sub SECOND () { 39 } -sub STRING_VALUE () { 40 } -sub SUB_EXPRESSION () { 41 } -sub UNICODERANGE () { 42 } -sub URI () { 43 } - - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - ATTR CENTIMETER COUNTER_FUNCTION COUNTERS_FUNCTION - DEGREE DIMENSION EM EX FUNCTION GRADIAN HERTZ - IDENT INCH INHERIT INTEGER KILOHERTZ MILLIMETER - MILLISECOND OPERATOR_COMMA OPERATOR_EXP OPERATOR_GE - OPERATOR_GT OPERATOR_LE OPERATOR_LT OPERATOR_MINUS - OPERATOR_MOD OPERATOR_MULTIPLY OPERATOR_PLUS - OPERATOR_SLASH OPERATOR_TILDE PERCENTAGE PICA PIXEL - POINT RADIAN REAL RECT_FUNCTION RGBCOLOR SECOND - STRING_VALUE SUB_EXPRESSION UNICODERANGE URI - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::LexicalUnit->new($type,$text,$value) -# creates a new sac lexical unit object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $text = shift; - my $value = shift; - - # define our fields - my $self = []; - $self->[_type_] = $type; - $self->[_text_] = $text; - $self->[_value_] = $value; - - return bless $self, $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - - -### Accessors ######################################################### -# # -# # - -# defined aliases -*CSS::SAC::LexicalUnit::getDimensionUnitText = \&DimensionUnitText; -*CSS::SAC::LexicalUnit::getFunctionName = \&FunctionName; -*CSS::SAC::LexicalUnit::getValue = \&Value; -*CSS::SAC::LexicalUnit::getLexicalUnitType = \&LexicalUnitType; - -#---------------------------------------------------------------------# -# my $dut = $lu->DimensionUnitText -# $lu->DimensionUnitText($dut) -# get/set the text of the dimension unit (eg cm, px, etc...) -#---------------------------------------------------------------------# -sub DimensionUnitText { - (@_==2) ? $_[0]->[_text_] = $_[1] : - $_[0]->[_text_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $fn = $lu->FunctionName -# $lu->FunctionName($fn) -# get/set the name of the function (eg attr, uri, etc...) -#---------------------------------------------------------------------# -sub FunctionName { - (@_==2) ? $_[0]->[_text_] = $_[1] : - $_[0]->[_text_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $value = $lu->Value -# $lu->Value($value) -# get/set the value of the lu (which may be another lu, or a lu list) -#---------------------------------------------------------------------# -sub Value { - (@_==2) ? $_[0]->[_value_] = $_[1] : - $_[0]->[_value_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $type = $lu->LexicalUnitType -# $lu->LexicalUnitType($type) -# get/set the type of the lu -#---------------------------------------------------------------------# -sub LexicalUnitType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# $lu->is_type($lu_constant) -# returns true is this lu is of type $lu_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - -1; -=pod - -=head1 NAME - -CSS::SAC::LexicalUnit - SAC units - -=head1 SYNOPSIS - - use CSS::SAC::LexicalUnit qw(:constants); - foo if $lu->is_type(LU_TYPE_CONSTANT); - -=head1 DESCRIPTION - -In the SAC spec, LexicalUnit is a linked list, that is, you only ever -hold one LexicalUnit, and you ask for the next of for the previous one -when you want to move on. - -Such a model seems awkward, though I'm sure it makes sense somehow in -Java, likely for a Java-specific reason. - -In the Perl implementation, I have changed this. A LexicalUnit is an -object that stands on it's own and has no next/previous objects. -Instead, the $handler->property callback gets called with a -LexicalUnitList, which is in fact just an array ref of LexicalUnits. - -We also don't differentiate between IntegerValue, FloatValue, and -StringValue, it's always Value in Perl. This also applies to -Parameters and SubValues. Both are called as Value and return an array -ref of LexicalUnits. - -I added the is_type() method, see CSS::SAC::Condition for advantages -of that approach. - -=head1 CONSTANTS - -=over 4 - -=item * ATTR - -=item * CENTIMETER - -=item * COUNTER_FUNCTION - -=item * COUNTERS_FUNCTION - -=item * DEGREE - -=item * DIMENSION - -=item * EM - -=item * EX - -=item * FUNCTION - -=item * GRADIAN - -=item * HERTZ - -=item * IDENT - -=item * INCH - -=item * INHERIT - -=item * INTEGER - -=item * KILOHERTZ - -=item * MILLIMETER - -=item * MILLISECOND - -=item * OPERATOR_COMMA - -=item * OPERATOR_EXP - -=item * OPERATOR_GE - -=item * OPERATOR_GT - -=item * OPERATOR_LE - -=item * OPERATOR_LT - -=item * OPERATOR_MINUS - -=item * OPERATOR_MOD - -=item * OPERATOR_MULTIPLY - -=item * OPERATOR_PLUS - -=item * OPERATOR_SLASH - -=item * OPERATOR_TILDE - -=item * PERCENTAGE - -=item * PICA - -=item * PIXEL - -=item * POINT - -=item * RADIAN - -=item * REAL - -=item * RECT_FUNCTION - -=item * RGBCOLOR - -=item * SECOND - -=item * STRING_VALUE - -=item * SUB_EXPRESSION - -=item * UNICODERANGE - -=item * URI - -=back - -=head1 METHODS - -=over - -=item * CSS::SAC::LexicalUnit->new($type,$text,$value) or $lu->new($type,$text,$value) - -Creates a new unit. The $type must be one of the type constants, the -text depends on the type of unit (unit text, func name, etc...), and -the value is the content of the lu. - -=item * $lu->DimensionUnitText([$dut]) or getDimensionUnitText - -get/set the text of the dimension unit (eg cm, px, etc...) - -=item * $lu->FunctionName([$fn]) or getFunctionName - -get/set the name of the function (eg attr, uri, etc...) - -=item * $lu->Value([$value]) or getValue - -get/set the value of the lu (which may be another lu, or a lu list) - -=item * $lu->LexicalUnitType([$type]) or getLexicalUnitType - -get/set the type of the lu - -=item * $lu->is_type($lu_constant) - -returns true is this lu is of type $lu_constant - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::LexicalUnit - SAC units +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::LexicalUnit; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw( + _type_ + _value_ + _text_ + )], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + + +sub ATTR () { 1 } +sub CENTIMETER () { 2 } +sub COUNTER_FUNCTION () { 3 } +sub COUNTERS_FUNCTION () { 4 } +sub DEGREE () { 5 } +sub DIMENSION () { 6 } +sub EM () { 7 } +sub EX () { 8 } +sub FUNCTION () { 9 } +sub GRADIAN () { 10 } +sub HERTZ () { 11 } +sub IDENT () { 12 } +sub INCH () { 13 } +sub INHERIT () { 14 } +sub INTEGER () { 15 } +sub KILOHERTZ () { 16 } +sub MILLIMETER () { 17 } +sub MILLISECOND () { 18 } +sub OPERATOR_COMMA () { 19 } +sub OPERATOR_EXP () { 20 } +sub OPERATOR_GE () { 21 } +sub OPERATOR_GT () { 22 } +sub OPERATOR_LE () { 23 } +sub OPERATOR_LT () { 24 } +sub OPERATOR_MINUS () { 25 } +sub OPERATOR_MOD () { 26 } +sub OPERATOR_MULTIPLY () { 27 } +sub OPERATOR_PLUS () { 28 } +sub OPERATOR_SLASH () { 29 } +sub OPERATOR_TILDE () { 30 } +sub PERCENTAGE () { 31 } +sub PICA () { 32 } +sub PIXEL () { 33 } +sub POINT () { 34 } +sub RADIAN () { 35 } +sub REAL () { 36 } +sub RECT_FUNCTION () { 37 } +sub RGBCOLOR () { 38 } +sub SECOND () { 39 } +sub STRING_VALUE () { 40 } +sub SUB_EXPRESSION () { 41 } +sub UNICODERANGE () { 42 } +sub URI () { 43 } + + + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + ATTR CENTIMETER COUNTER_FUNCTION COUNTERS_FUNCTION + DEGREE DIMENSION EM EX FUNCTION GRADIAN HERTZ + IDENT INCH INHERIT INTEGER KILOHERTZ MILLIMETER + MILLISECOND OPERATOR_COMMA OPERATOR_EXP OPERATOR_GE + OPERATOR_GT OPERATOR_LE OPERATOR_LT OPERATOR_MINUS + OPERATOR_MOD OPERATOR_MULTIPLY OPERATOR_PLUS + OPERATOR_SLASH OPERATOR_TILDE PERCENTAGE PICA PIXEL + POINT RADIAN REAL RECT_FUNCTION RGBCOLOR SECOND + STRING_VALUE SUB_EXPRESSION UNICODERANGE URI + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::LexicalUnit->new($type,$text,$value) +# creates a new sac lexical unit object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $text = shift; + my $value = shift; + + # define our fields + my $self = []; + $self->[_type_] = $type; + $self->[_text_] = $text; + $self->[_value_] = $value; + + return bless $self, $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + + +### Accessors ######################################################### +# # +# # + +# defined aliases +*CSS::SAC::LexicalUnit::getDimensionUnitText = \&DimensionUnitText; +*CSS::SAC::LexicalUnit::getFunctionName = \&FunctionName; +*CSS::SAC::LexicalUnit::getValue = \&Value; +*CSS::SAC::LexicalUnit::getLexicalUnitType = \&LexicalUnitType; + +#---------------------------------------------------------------------# +# my $dut = $lu->DimensionUnitText +# $lu->DimensionUnitText($dut) +# get/set the text of the dimension unit (eg cm, px, etc...) +#---------------------------------------------------------------------# +sub DimensionUnitText { + (@_==2) ? $_[0]->[_text_] = $_[1] : + $_[0]->[_text_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $fn = $lu->FunctionName +# $lu->FunctionName($fn) +# get/set the name of the function (eg attr, uri, etc...) +#---------------------------------------------------------------------# +sub FunctionName { + (@_==2) ? $_[0]->[_text_] = $_[1] : + $_[0]->[_text_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $value = $lu->Value +# $lu->Value($value) +# get/set the value of the lu (which may be another lu, or a lu list) +#---------------------------------------------------------------------# +sub Value { + (@_==2) ? $_[0]->[_value_] = $_[1] : + $_[0]->[_value_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $type = $lu->LexicalUnitType +# $lu->LexicalUnitType($type) +# get/set the type of the lu +#---------------------------------------------------------------------# +sub LexicalUnitType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# $lu->is_type($lu_constant) +# returns true is this lu is of type $lu_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + +1; +=pod + +=head1 NAME + +CSS::SAC::LexicalUnit - SAC units + +=head1 SYNOPSIS + + use CSS::SAC::LexicalUnit qw(:constants); + foo if $lu->is_type(LU_TYPE_CONSTANT); + +=head1 DESCRIPTION + +In the SAC spec, LexicalUnit is a linked list, that is, you only ever +hold one LexicalUnit, and you ask for the next of for the previous one +when you want to move on. + +Such a model seems awkward, though I'm sure it makes sense somehow in +Java, likely for a Java-specific reason. + +In the Perl implementation, I have changed this. A LexicalUnit is an +object that stands on it's own and has no next/previous objects. +Instead, the $handler->property callback gets called with a +LexicalUnitList, which is in fact just an array ref of LexicalUnits. + +We also don't differentiate between IntegerValue, FloatValue, and +StringValue, it's always Value in Perl. This also applies to +Parameters and SubValues. Both are called as Value and return an array +ref of LexicalUnits. + +I added the is_type() method, see CSS::SAC::Condition for advantages +of that approach. + +=head1 CONSTANTS + +=over 4 + +=item * ATTR + +=item * CENTIMETER + +=item * COUNTER_FUNCTION + +=item * COUNTERS_FUNCTION + +=item * DEGREE + +=item * DIMENSION + +=item * EM + +=item * EX + +=item * FUNCTION + +=item * GRADIAN + +=item * HERTZ + +=item * IDENT + +=item * INCH + +=item * INHERIT + +=item * INTEGER + +=item * KILOHERTZ + +=item * MILLIMETER + +=item * MILLISECOND + +=item * OPERATOR_COMMA + +=item * OPERATOR_EXP + +=item * OPERATOR_GE + +=item * OPERATOR_GT + +=item * OPERATOR_LE + +=item * OPERATOR_LT + +=item * OPERATOR_MINUS + +=item * OPERATOR_MOD + +=item * OPERATOR_MULTIPLY + +=item * OPERATOR_PLUS + +=item * OPERATOR_SLASH + +=item * OPERATOR_TILDE + +=item * PERCENTAGE + +=item * PICA + +=item * PIXEL + +=item * POINT + +=item * RADIAN + +=item * REAL + +=item * RECT_FUNCTION + +=item * RGBCOLOR + +=item * SECOND + +=item * STRING_VALUE + +=item * SUB_EXPRESSION + +=item * UNICODERANGE + +=item * URI + +=back + +=head1 METHODS + +=over + +=item * CSS::SAC::LexicalUnit->new($type,$text,$value) or $lu->new($type,$text,$value) + +Creates a new unit. The $type must be one of the type constants, the +text depends on the type of unit (unit text, func name, etc...), and +the value is the content of the lu. + +=item * $lu->DimensionUnitText([$dut]) or getDimensionUnitText + +get/set the text of the dimension unit (eg cm, px, etc...) + +=item * $lu->FunctionName([$fn]) or getFunctionName + +get/set the name of the function (eg attr, uri, etc...) + +=item * $lu->Value([$value]) or getValue + +get/set the value of the lu (which may be another lu, or a lu list) + +=item * $lu->LexicalUnitType([$type]) or getLexicalUnitType + +get/set the type of the lu + +=item * $lu->is_type($lu_constant) + +returns true is this lu is of type $lu_constant + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Selector.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Selector.pm 2001/08/17 17:50:15 1.2 +++ Selector.pm 2001/08/17 18:00:01 1.3 @@ -1,244 +1,244 @@ - -### -# CSS::SAC::Selector - base class for SAC selectors -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw(_type_)], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - -sub UNKNOWN_SELECTOR () { 1 } -sub ANY_NODE_SELECTOR () { 2 } -sub CDATA_SECTION_NODE_SELECTOR () { 3 } -sub CHILD_SELECTOR () { 4 } -sub COMMENT_NODE_SELECTOR () { 5 } -sub CONDITIONAL_SELECTOR () { 6 } -sub DESCENDANT_SELECTOR () { 7 } -sub DIRECT_ADJACENT_SELECTOR () { 8 } -sub ELEMENT_NODE_SELECTOR () { 9 } -sub NEGATIVE_SELECTOR () { 10 } -sub PROCESSING_INSTRUCTION_NODE_SELECTOR () { 11 } -sub PSEUDO_ELEMENT_SELECTOR () { 12 } -sub ROOT_NODE_SELECTOR () { 13 } -sub TEXT_NODE_SELECTOR () { 14 } - -# EXPERIMENTAL SELECTOR -sub INDIRECT_ADJACENT_SELECTOR () { 15 } - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - UNKNOWN_SELECTOR - ANY_NODE_SELECTOR - CDATA_SECTION_NODE_SELECTOR - CHILD_SELECTOR - COMMENT_NODE_SELECTOR - CONDITIONAL_SELECTOR - DESCENDANT_SELECTOR - DIRECT_ADJACENT_SELECTOR - ELEMENT_NODE_SELECTOR - NEGATIVE_SELECTOR - PROCESSING_INSTRUCTION_NODE_SELECTOR - PSEUDO_ELEMENT_SELECTOR - ROOT_NODE_SELECTOR - TEXT_NODE_SELECTOR - - INDIRECT_ADJACENT_SELECTOR - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector->new($type) -# creates a new sac selector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - return bless [$type], $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -#---------------------------------------------------------------------# -# my $type = $sel->SelectorType() -# $sel->SelectorType($type) -# get/set the selector type -#---------------------------------------------------------------------# -sub SelectorType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# -*CSS::SAC::Selector::getSelectorType = \&SelectorType; - -#---------------------------------------------------------------------# -# $sel->is_type($selector_constant) -# returns true is this selector is of type $selector_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector - base class for SAC selectors - -=head1 SYNOPSIS - - use CSS::SAC::Selector qw(:constants); - foo if $sel->is_type(SELECTOR_TYPE_CONSTANT); - -=head1 DESCRIPTION - -SAC Selectors describe selectors that can be expressed in CSS such -as ElementSelector or SiblingSelector. This class provides everything -that is needed to implement simple selectors (methods, constants) as -well as what is needed by subclasses defining more complex selectors. - -The constants are those defined in the SAC spec, with the leading SAC_ -removed. What the constants map to is to be considered an opaque token -that can be tested for equality. If there is demand for it, I will add -a way to add new constants (for people wishing to define new condition -types). - -I have also added the UNKNOWN_SELECTOR constant. It shouldn't occur -in normal processing but it's always useful to have such fallback -values. - -The Selector interface adds $sel->is_type($selector_type) to the -interface defined in the SAC spec. This allows for more flexible type -checking. The advantages are the same as those described for the same -extension in the CSS::SAC::Condition class. - -=head1 CONSTANTS - -=over - -=item * UNKNOWN_SELECTOR - -=item * ANY_NODE_SELECTOR - -=item * CDATA_SECTION_NODE_SELECTOR - -=item * CHILD_SELECTOR - -=item * COMMENT_NODE_SELECTOR - -=item * CONDITIONAL_SELECTOR - -=item * DESCENDANT_SELECTOR - -=item * DIRECT_ADJACENT_SELECTOR - -=item * ELEMENT_NODE_SELECTOR - -=item * NEGATIVE_SELECTOR - -=item * PROCESSING_INSTRUCTION_NODE_SELECTOR - -=item * PSEUDO_ELEMENT_SELECTOR - -=item * ROOT_NODE_SELECTOR - -=item * TEXT_NODE_SELECTOR - -=back - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector->new($type) or $sel->new($type) - -Creates a new selector. The $type must be one of the type constants. - -=item * $sel->SelectorType() or $sel->getSelectorType - -Returns the constant corresponding to the type of this selector. - -=item * $sel->is_type($selector_type) - -Returns a boolean indicating whether this selector is of type -$selector_type (a selector constant). - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector - base class for SAC selectors +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw(_type_)], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + +sub UNKNOWN_SELECTOR () { 1 } +sub ANY_NODE_SELECTOR () { 2 } +sub CDATA_SECTION_NODE_SELECTOR () { 3 } +sub CHILD_SELECTOR () { 4 } +sub COMMENT_NODE_SELECTOR () { 5 } +sub CONDITIONAL_SELECTOR () { 6 } +sub DESCENDANT_SELECTOR () { 7 } +sub DIRECT_ADJACENT_SELECTOR () { 8 } +sub ELEMENT_NODE_SELECTOR () { 9 } +sub NEGATIVE_SELECTOR () { 10 } +sub PROCESSING_INSTRUCTION_NODE_SELECTOR () { 11 } +sub PSEUDO_ELEMENT_SELECTOR () { 12 } +sub ROOT_NODE_SELECTOR () { 13 } +sub TEXT_NODE_SELECTOR () { 14 } + +# EXPERIMENTAL SELECTOR +sub INDIRECT_ADJACENT_SELECTOR () { 15 } + + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + UNKNOWN_SELECTOR + ANY_NODE_SELECTOR + CDATA_SECTION_NODE_SELECTOR + CHILD_SELECTOR + COMMENT_NODE_SELECTOR + CONDITIONAL_SELECTOR + DESCENDANT_SELECTOR + DIRECT_ADJACENT_SELECTOR + ELEMENT_NODE_SELECTOR + NEGATIVE_SELECTOR + PROCESSING_INSTRUCTION_NODE_SELECTOR + PSEUDO_ELEMENT_SELECTOR + ROOT_NODE_SELECTOR + TEXT_NODE_SELECTOR + + INDIRECT_ADJACENT_SELECTOR + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector->new($type) +# creates a new sac selector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + return bless [$type], $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +#---------------------------------------------------------------------# +# my $type = $sel->SelectorType() +# $sel->SelectorType($type) +# get/set the selector type +#---------------------------------------------------------------------# +sub SelectorType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# +*CSS::SAC::Selector::getSelectorType = \&SelectorType; + +#---------------------------------------------------------------------# +# $sel->is_type($selector_constant) +# returns true is this selector is of type $selector_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector - base class for SAC selectors + +=head1 SYNOPSIS + + use CSS::SAC::Selector qw(:constants); + foo if $sel->is_type(SELECTOR_TYPE_CONSTANT); + +=head1 DESCRIPTION + +SAC Selectors describe selectors that can be expressed in CSS such +as ElementSelector or SiblingSelector. This class provides everything +that is needed to implement simple selectors (methods, constants) as +well as what is needed by subclasses defining more complex selectors. + +The constants are those defined in the SAC spec, with the leading SAC_ +removed. What the constants map to is to be considered an opaque token +that can be tested for equality. If there is demand for it, I will add +a way to add new constants (for people wishing to define new condition +types). + +I have also added the UNKNOWN_SELECTOR constant. It shouldn't occur +in normal processing but it's always useful to have such fallback +values. + +The Selector interface adds $sel->is_type($selector_type) to the +interface defined in the SAC spec. This allows for more flexible type +checking. The advantages are the same as those described for the same +extension in the CSS::SAC::Condition class. + +=head1 CONSTANTS + +=over + +=item * UNKNOWN_SELECTOR + +=item * ANY_NODE_SELECTOR + +=item * CDATA_SECTION_NODE_SELECTOR + +=item * CHILD_SELECTOR + +=item * COMMENT_NODE_SELECTOR + +=item * CONDITIONAL_SELECTOR + +=item * DESCENDANT_SELECTOR + +=item * DIRECT_ADJACENT_SELECTOR + +=item * ELEMENT_NODE_SELECTOR + +=item * NEGATIVE_SELECTOR + +=item * PROCESSING_INSTRUCTION_NODE_SELECTOR + +=item * PSEUDO_ELEMENT_SELECTOR + +=item * ROOT_NODE_SELECTOR + +=item * TEXT_NODE_SELECTOR + +=back + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector->new($type) or $sel->new($type) + +Creates a new selector. The $type must be one of the type constants. + +=item * $sel->SelectorType() or $sel->getSelectorType + +Returns the constant corresponding to the type of this selector. + +=item * $sel->is_type($selector_type) + +Returns a boolean indicating whether this selector is of type +$selector_type (a selector constant). + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: SelectorFactory.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/SelectorFactory.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- SelectorFactory.pm 2001/08/17 17:50:15 1.2 +++ SelectorFactory.pm 2001/08/17 18:00:01 1.3 @@ -1,425 +1,425 @@ - -### -# CSS::SAC::SelectorFactory - the default SelectorFactory -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::SelectorFactory; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use CSS::SAC::Selector qw(:constants); -use CSS::SAC::Selector::Descendant qw(); -use CSS::SAC::Selector::Sibling qw(); -use CSS::SAC::Selector::Simple qw(); -use CSS::SAC::Selector::CharacterData qw(); -use CSS::SAC::Selector::Conditional qw(); -use CSS::SAC::Selector::Element qw(); -use CSS::SAC::Selector::Negative qw(); -use CSS::SAC::Selector::ProcessingInstruction qw(); - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { fields => [] }; -#---------------------------------------------------------------------# - - - -### Constructor ####################################################### -# # -# # - - -#------------------------------------------------------------... [truncated message content] |
From: Robin B. <da...@us...> - 2001-08-17 17:50:19
|
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector In directory usw-pr-cvs1:/tmp/cvs-serv18736/lib/CSS/SAC/Selector Modified Files: CharacterData.pm Conditional.pm Descendant.pm Element.pm Negative.pm ProcessingInstruction.pm Sibling.pm Simple.pm Log Message: first batch of 0.04 changes Index: CharacterData.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/CharacterData.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- CharacterData.pm 2001/08/17 13:32:15 1.1.1.1 +++ CharacterData.pm 2001/08/17 17:50:15 1.2 @@ -1,126 +1,126 @@ - -### -# CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::CharacterData; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::CharacterData->new($type,$data) -# creates a new sac CharacterDataSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the cdata selectors - my $data = shift; - - # create a selector - my $csel = $class->SUPER::new($type); - - # add our fields - $csel->[_data_] = $data if defined $data; - - return $csel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::CharacterData::getData = \&Data; - -#---------------------------------------------------------------------# -# my $data = $csel->Data() -# $csel->Data($data) -# get/set the selector's cdata -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::CharacterData->new($type,$data) -=item * $sel->new($type,$data) - -Creates a new cdata selector. - -=item * $csel->Data([$data]) - -get/set the selector's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::CharacterData; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::CharacterData->new($type,$data) +# creates a new sac CharacterDataSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the cdata selectors + my $data = shift; + + # create a selector + my $csel = $class->SUPER::new($type); + + # add our fields + $csel->[_data_] = $data if defined $data; + + return $csel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::CharacterData::getData = \&Data; + +#---------------------------------------------------------------------# +# my $data = $csel->Data() +# $csel->Data($data) +# get/set the selector's cdata +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::CharacterData - SAC CharacterDataSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::CharacterData->new($type,$data) +=item * $sel->new($type,$data) + +Creates a new cdata selector. + +=item * $csel->Data([$data]) + +get/set the selector's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Conditional.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Conditional.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Conditional.pm 2001/08/17 13:32:15 1.1.1.1 +++ Conditional.pm 2001/08/17 17:50:15 1.2 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Conditional - SAC ConditionalSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Conditional; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _selector_ - _condition_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Conditional->new($type,$selector,$condition) -# creates a new sac ConditionalSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $selector = shift; - my $condition = shift; - - # create a selector - my $csel = $class->SUPER::new($type); - - # add our fields - $csel->[_condition_] = $condition; - $csel->[_selector_] = $selector; - - return $csel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Conditional::getCondition = \&Condition; -*CSS::SAC::Selector::Conditional::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $cond = $csel->Condition() -# $csel->Condition($cond) -# get/set the selector's condition -#---------------------------------------------------------------------# -sub Condition { - (@_==2) ? $_[0]->[_condition_] = $_[1] : - $_[0]->[_condition_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $cond = $csel->SimpleSelector() -# $csel->SimpleSelector($cond) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_selector_] = $_[1] : - $_[0]->[_selector_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Conditional - SAC ConditionalSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Conditional->new($type,$selector,$condition) -=item * $sel->new($type,$selector,$condition) - -Creates a new conditional selector. - -=item * $csel->Condition([$cond]) - -get/set the selector's condition - -=item * $csel->SimpleSelector([$cond]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Conditional - SAC ConditionalSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Conditional; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _selector_ + _condition_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Conditional->new($type,$selector,$condition) +# creates a new sac ConditionalSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $selector = shift; + my $condition = shift; + + # create a selector + my $csel = $class->SUPER::new($type); + + # add our fields + $csel->[_condition_] = $condition; + $csel->[_selector_] = $selector; + + return $csel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Conditional::getCondition = \&Condition; +*CSS::SAC::Selector::Conditional::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $cond = $csel->Condition() +# $csel->Condition($cond) +# get/set the selector's condition +#---------------------------------------------------------------------# +sub Condition { + (@_==2) ? $_[0]->[_condition_] = $_[1] : + $_[0]->[_condition_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $cond = $csel->SimpleSelector() +# $csel->SimpleSelector($cond) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_selector_] = $_[1] : + $_[0]->[_selector_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Conditional - SAC ConditionalSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Conditional->new($type,$selector,$condition) +=item * $sel->new($type,$selector,$condition) + +Creates a new conditional selector. + +=item * $csel->Condition([$cond]) + +get/set the selector's condition + +=item * $csel->SimpleSelector([$cond]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Descendant.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Descendant.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Descendant.pm 2001/08/17 13:32:15 1.1.1.1 +++ Descendant.pm 2001/08/17 17:50:15 1.2 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Descendant - SAC DescendantSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Descendant; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector', - with => [qw( - _ancestor_ - _simple_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) -# creates a new sac DescendantSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $ancestor_sel = shift; - my $simple_sel = shift; - - # create a selector - my $dsel = $class->SUPER::new($type); - - # add our fields - $dsel->[_ancestor_] = $ancestor_sel; - $dsel->[_simple_] = $simple_sel; - - return $dsel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Descendant::getAncestorSelector = \&AncestorSelector; -*CSS::SAC::Selector::Descendant::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $ancestor_sel = $dsel->AncestorSelector() -# $dsel->AncestorSelector($ancestor_sel) -# get/set the selector's ancestor selector -#---------------------------------------------------------------------# -sub AncestorSelector { - (@_==2) ? $_[0]->[_ancestor_] = $_[1] : - $_[0]->[_ancestor_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $simple_sel = $dsel->SimpleSelector() -# $dsel->SimpleSelector($simple_sel) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_simple_] = $_[1] : - $_[0]->[_simple_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Descendant - SAC DescendantSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) -=item * $dsel->new($type,$ancestor_sel,$simple_sel) - -Creates a new descendant selector. - -=item * $dsel->AncestorSelector([$ancestor_sel]) - -get/set the selector's ancestor selector - -=item * $dsel->SimpleSelector([$simple_sel]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Descendant - SAC DescendantSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Descendant; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector', + with => [qw( + _ancestor_ + _simple_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) +# creates a new sac DescendantSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $ancestor_sel = shift; + my $simple_sel = shift; + + # create a selector + my $dsel = $class->SUPER::new($type); + + # add our fields + $dsel->[_ancestor_] = $ancestor_sel; + $dsel->[_simple_] = $simple_sel; + + return $dsel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Descendant::getAncestorSelector = \&AncestorSelector; +*CSS::SAC::Selector::Descendant::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $ancestor_sel = $dsel->AncestorSelector() +# $dsel->AncestorSelector($ancestor_sel) +# get/set the selector's ancestor selector +#---------------------------------------------------------------------# +sub AncestorSelector { + (@_==2) ? $_[0]->[_ancestor_] = $_[1] : + $_[0]->[_ancestor_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $simple_sel = $dsel->SimpleSelector() +# $dsel->SimpleSelector($simple_sel) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_simple_] = $_[1] : + $_[0]->[_simple_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Descendant - SAC DescendantSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Descendant->new($type,$ancestor_sel,$simple_sel) +=item * $dsel->new($type,$ancestor_sel,$simple_sel) + +Creates a new descendant selector. + +=item * $dsel->AncestorSelector([$ancestor_sel]) + +get/set the selector's ancestor selector + +=item * $dsel->SimpleSelector([$simple_sel]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Element.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Element.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Element.pm 2001/08/17 13:32:15 1.1.1.1 +++ Element.pm 2001/08/17 17:50:15 1.2 @@ -1,146 +1,146 @@ - -### -# CSS::SAC::Selector::Element - SAC ElementSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Element; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _local_name_ - _ns_uri_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Element->new($type,$ns_uri,$local_name) -# creates a new sac ElementSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $ns_uri = shift; - my $local_name = shift; - - # create a selector - my $esel = $class->SUPER::new($type); - - # add our fields - $esel->[_local_name_] = $local_name if $local_name; - $esel->[_ns_uri_] = $ns_uri if defined $ns_uri; - - return $esel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Element::getLocalName = \&LocalName; -*CSS::SAC::Selector::Element::getNamespaceURI = \&NamespaceURI; - -#---------------------------------------------------------------------# -# my $lname = $esel->LocalName() -# $esel->LocalName($lname) -# get/set the selector's local name -#---------------------------------------------------------------------# -sub LocalName { - (@_==2) ? $_[0]->[_local_name_] = $_[1] : - $_[0]->[_local_name_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $ns = $esel->NamespaceURI() -# $esel->NamespaceURI($ns) -# get/set the selector's ns -#---------------------------------------------------------------------# -sub NamespaceURI { - (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : - $_[0]->[_ns_uri_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Element - SAC ElementSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::Element->new($type,$local_name,$ns_uri) -=item * $esel->new($type,$local_name,$ns_uri) - -Creates a new element selector. - -=item * $esel->LocalName([$lname]) - -get/set the selector's local name - -=item * $esel->NamespaceURI([$ns]) - -get/set the selector's ns - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Element - SAC ElementSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Element; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _local_name_ + _ns_uri_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Element->new($type,$ns_uri,$local_name) +# creates a new sac ElementSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $ns_uri = shift; + my $local_name = shift; + + # create a selector + my $esel = $class->SUPER::new($type); + + # add our fields + $esel->[_local_name_] = $local_name if $local_name; + $esel->[_ns_uri_] = $ns_uri if defined $ns_uri; + + return $esel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Element::getLocalName = \&LocalName; +*CSS::SAC::Selector::Element::getNamespaceURI = \&NamespaceURI; + +#---------------------------------------------------------------------# +# my $lname = $esel->LocalName() +# $esel->LocalName($lname) +# get/set the selector's local name +#---------------------------------------------------------------------# +sub LocalName { + (@_==2) ? $_[0]->[_local_name_] = $_[1] : + $_[0]->[_local_name_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $ns = $esel->NamespaceURI() +# $esel->NamespaceURI($ns) +# get/set the selector's ns +#---------------------------------------------------------------------# +sub NamespaceURI { + (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : + $_[0]->[_ns_uri_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Element - SAC ElementSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::Element->new($type,$local_name,$ns_uri) +=item * $esel->new($type,$local_name,$ns_uri) + +Creates a new element selector. + +=item * $esel->LocalName([$lname]) + +get/set the selector's local name + +=item * $esel->NamespaceURI([$ns]) + +get/set the selector's ns + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Negative.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Negative.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Negative.pm 2001/08/17 13:32:15 1.1.1.1 +++ Negative.pm 2001/08/17 17:50:15 1.2 @@ -1,127 +1,127 @@ - -### -# CSS::SAC::Selector::Negative - SAC NegativeSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Negative; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _sel_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Negative->new($type,$sel) -# creates a new sac NegativeSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $sel = shift; - - # create a selector - my $nsel = $class->SUPER::new($type); - - # add our fields - $nsel->[_sel_] = $sel; - - return $nsel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Negative::getSimpleSelector = \&SimpleSelector; - -#---------------------------------------------------------------------# -# my $sel = $nsel->SimpleSelector() -# $nsel->SimpleSelector($sel) -# get/set the selector's simple selector -#---------------------------------------------------------------------# -sub SimpleSelector { - (@_==2) ? $_[0]->[_sel_] = $_[1] : - $_[0]->[_sel_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Negative - SAC NegativeSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Selector::Negative->new($type,$sel) - -=item * $nsel->new($type,$sel) - -Creates a new negative selector. - -=item * $nsel->SimpleSelector([$sel]) - -get/set the selector's simple selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::Negative - SAC NegativeSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Negative; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _sel_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::Negative->new($type,$sel) +# creates a new sac NegativeSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $sel = shift; + + # create a selector + my $nsel = $class->SUPER::new($type); + + # add our fields + $nsel->[_sel_] = $sel; + + return $nsel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +*CSS::SAC::Selector::Negative::getSimpleSelector = \&SimpleSelector; + +#---------------------------------------------------------------------# +# my $sel = $nsel->SimpleSelector() +# $nsel->SimpleSelector($sel) +# get/set the selector's simple selector +#---------------------------------------------------------------------# +sub SimpleSelector { + (@_==2) ? $_[0]->[_sel_] = $_[1] : + $_[0]->[_sel_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::Negative - SAC NegativeSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Selector::Negative->new($type,$sel) + +=item * $nsel->new($type,$sel) + +Creates a new negative selector. + +=item * $nsel->SimpleSelector([$sel]) + +get/set the selector's simple selector + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: ProcessingInstruction.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/ProcessingInstruction.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ProcessingInstruction.pm 2001/08/17 13:32:15 1.1.1.1 +++ ProcessingInstruction.pm 2001/08/17 17:50:15 1.2 @@ -1,147 +1,147 @@ - -### -# CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::ProcessingInstruction; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector::Simple); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector::Simple', - with => [qw( - _target_ - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) -# creates a new sac ProcessingInstructionSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $target = shift; - my $data = shift; - - # create a selector - my $psel = $class->SUPER::new($type); - - # add our fields - $psel->[_target_] = $target; - $psel->[_data_] = $data if defined $data; - - return $psel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -*CSS::SAC::Selector::ProcessingInstruction::getTarget = \&Target; -*CSS::SAC::Selector::ProcessingInstruction::getData = \&Data; - -#---------------------------------------------------------------------# -# my $target = $psel->Target() -# $psel->Target($target) -# get/set the selector's target -#---------------------------------------------------------------------# -sub Target { - (@_==2) ? $_[0]->[_target_] = $_[1] : - $_[0]->[_target_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $data = $psel->Data() -# $psel->Data($data) -# get/set the selector's data -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector::Simple, look there for more -documentation. This class adds the following methods (which also exist -in spec style, simply prepend them with 'get'): - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) -=item * $psel->new($type,$target,$data) - -Creates a new pi selector. - -=item * $psel->Target([$target]) - -get/set the selector's target - -=item * $psel->Data([$data]) - -get/set the selector's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::ProcessingInstruction; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Selector::Simple); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Selector::Simple', + with => [qw( + _target_ + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) +# creates a new sac ProcessingInstructionSelector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $target = shift; + my $data = shift; + + # create a selector + my $psel = $class->SUPER::new($type); + + # add our fields + $psel->[_target_] = $target; + $psel->[_data_] = $data if defined $data; + + return $psel; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +*CSS::SAC::Selector::ProcessingInstruction::getTarget = \&Target; +*CSS::SAC::Selector::ProcessingInstruction::getData = \&Data; + +#---------------------------------------------------------------------# +# my $target = $psel->Target() +# $psel->Target($target) +# get/set the selector's target +#---------------------------------------------------------------------# +sub Target { + (@_==2) ? $_[0]->[_target_] = $_[1] : + $_[0]->[_target_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $data = $psel->Data() +# $psel->Data($data) +# get/set the selector's data +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector::ProcessingInstruction - SAC ProcessingInstructionSelector + +=head1 SYNOPSIS + + see CSS::SAC::Selector + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Selector::Simple, look there for more +documentation. This class adds the following methods (which also exist +in spec style, simply prepend them with 'get'): + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector::ProcessingInstruction->new($type,$target,$data) +=item * $psel->new($type,$target,$data) + +Creates a new pi selector. + +=item * $psel->Target([$target]) + +get/set the selector's target + +=item * $psel->Data([$data]) + +get/set the selector's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Sibling.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector/Sibling.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Sibling.pm 2001/08/17 13:32:15 1.1.1.1 +++ Sibling.pm 2001/08/17 17:50:15 1.2 @@ -1,263 +1,263 @@ - -### -# CSS::SAC::Selector::Sibling - SAC SiblingSelector -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector::Sibling; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Selector); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Selector', - with => [qw( - _node_type_ - _selector_ - _sibling_selector_ - )], - }; -#---------------------------------------------------------------------# - - - -### Constants ######################################################### -# # -# # - -sub ELEMENT_NODE () { 1 } -sub ATTRIBUTE_NODE () { 2 } -sub TEXT_NODE () { 3 } -sub CDATA_SECTION_NODE () { 4 } -sub ENTITY_REFERENCE_NODE () { 5 } -sub ENTITY_NODE () { 6 } -sub PROCESSING_INSTRUCTION_NODE () { 7 } -sub COMMENT_NODE () { 8 } -sub DOCUMENT_NODE () { 9 } -sub DOCUMENT_TYPE_NODE () { 10 } -sub DOCUMENT_FRAGMENT_NODE () { 11 } -sub NOTATION_NODE () { 12 } -sub ANY_NODE () { 13 } - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - ELEMENT_NODE - ATTRIBUTE_NODE - TEXT_NODE - CDATA_SECTION_NODE - ENTITY_REFERENCE_NODE - ENTITY_NODE - PROCESSING_INSTRUCTION_NODE - COMMENT_NODE - DOCUMENT_NODE - DOCUMENT_TYPE_NODE - DOCUMENT_FRAGMENT_NODE - NOTATION_NODE - ANY_NODE - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector::Sibling->new($type,$node_type,$sel,$sibling_sel) -# creates a new sac SiblingSelector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $node_type = shift; - my $sel = shift; - my $sibling_sel = shift; - - # create a selector - my $ssel = $class->SUPER::new($type); - - # add our fields - $ssel->[_node_type_] = $node_type || ANY_NODE; - $ssel->[_selector_] = $sel; - $ssel->[_sibling_selector_] = $sibling_sel; - - return $ssel; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -*CSS::SAC::Selector::Sibling::getNodeType = \&NodeType; -*CSS::SAC::Selector::Sibling::getSelector = \&Selector; -*CSS::SAC::Selector::Sibling::getSiblingSelector = \&SiblingSelector; - -#---------------------------------------------------------------------# -# my $node_type = $ssel->NodeType() -# $ssel->NodeType($node_type) -# get/set the node type to which we apply -#---------------------------------------------------------------------# -sub NodeType { - (@_==2) ? $_[0]->[_node_type_] = $_[1] : - $_[0]->[_node_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $sel = $ssel->Selector() -# $ssel->Selector($sel) -# get/set the selector -#---------------------------------------------------------------------# -sub Selector { - (@_==2) ? $_[0]->[_selector_] = $_[1] : - $_[0]->[_selector_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $o_ssel = $ssel->SiblingSelector() -# $ssel->SiblingSelector($o_ssel) -# get/set the sibling selector -#---------------------------------------------------------------------# -sub SiblingSelector { - (@_==2) ? $_[0]->[_sibling_selector_] = $_[1] : - $_[0]->[_sibling_selector_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector::Sibling - SAC SiblingSelector - -=head1 SYNOPSIS - - see CSS::SAC::Selector - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Selector, look there for more -documentation. This class adds the methods described below. - -This subclass also defines the constants for the DOM nodes. It uses -the same constants as the DOM, and adds the ANY_NODE constant which -matches any node. - -=head1 CONSTANTS - -=over - -=item * ELEMENT_NODE - -=item * ATTRIBUTE_NODE - -=item * TEXT_NODE - -=item * CDATA_SECTION_NODE - -=item * ENTITY_REFERENCE_NODE - -=item * ENTITY_NODE - -=item * PROCESSING_INSTRUCTION_NODE - -=item * COMMENT_NODE - -=item * DOCUMENT_NODE - -=item * DOCUMENT_TYPE_NODE - -=item * DOCUMENT_FRAGMENT_NODE - -=item * NOTATION_NODE - -=item * ANY_NODE - -=back - -=head1 METHODS - -These also exist in spec style, simply prepend them with 'get'. - -=over - -=item * CSS::SAC::Selector::Sibling->new($type,$node_type,$sel,$sibling_sel) -=item * $ssel->new($type,$node_type,$sel,$sibling_sel) - -Creates a new sibling selector. - -=item * $ssel->NodeType([$node_type]) - -get/set the node type to which we apply - -=item * $ssel->Selector([$sel]) - -get/set the selector's sub selector - -=item * $ssel->SiblingSelector([$sib_sel]) - -get/set the selector's sibling selector - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut + +### +# CSS::SAC::Selector::Sibling - SAC SiblingSelector +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector::Sibling; +use strict; +use vars qw($VERSION); +$VERSION = $CSS:... [truncated message content] |
From: Robin B. <da...@us...> - 2001-08-17 17:50:19
|
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC In directory usw-pr-cvs1:/tmp/cvs-serv18736/lib/CSS/SAC Modified Files: Condition.pm ConditionFactory.pm LexicalUnit.pm Selector.pm SelectorFactory.pm SelectorList.pm TestWriter.pm Writer.pm Log Message: first batch of 0.04 changes Index: Condition.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Condition.pm 2001/08/17 13:32:14 1.1.1.1 +++ Condition.pm 2001/08/17 17:50:15 1.2 @@ -1,275 +1,275 @@ - -### -# CSS::SAC::Condition - base class for SAC conditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw(_type_)], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - -sub UNKNOWN_CONDITION () { 1 } -sub AND_CONDITION () { 2 } -sub ATTRIBUTE_CONDITION () { 3 } -sub BEGIN_HYPHEN_ATTRIBUTE_CONDITION () { 4 } -sub CLASS_CONDITION () { 5 } -sub CONTENT_CONDITION () { 6 } -sub ID_CONDITION () { 7 } -sub LANG_CONDITION () { 8 } -sub NEGATIVE_CONDITION () { 9 } -sub ONE_OF_ATTRIBUTE_CONDITION () { 10 } -sub ONLY_CHILD_CONDITION () { 11 } -sub ONLY_TYPE_CONDITION () { 12 } -sub OR_CONDITION () { 13 } -sub POSITIONAL_CONDITION () { 14 } -sub PSEUDO_CLASS_CONDITION () { 15 } - -# new non-standard conditions for CSS3 selectors -sub STARTS_WITH_ATTRIBUTE_CONDITION () { 16 } # [attr^='string'] -sub ENDS_WITH_ATTRIBUTE_CONDITION () { 17 } # [attr$='string'] -sub CONTAINS_ATTRIBUTE_CONDITION () { 18 } # [attr*='string'] -sub IS_ROOT_CONDITION () { 19 } # :root -sub IS_EMPTY_CONDITION () { 20 } # :empty - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - UNKNOWN_CONDITION - AND_CONDITION - ATTRIBUTE_CONDITION - BEGIN_HYPHEN_ATTRIBUTE_CONDITION - CLASS_CONDITION - CONTENT_CONDITION - ID_CONDITION - LANG_CONDITION - NEGATIVE_CONDITION - ONE_OF_ATTRIBUTE_CONDITION - ONLY_CHILD_CONDITION - ONLY_TYPE_CONDITION - OR_CONDITION - POSITIONAL_CONDITION - PSEUDO_CLASS_CONDITION - - STARTS_WITH_ATTRIBUTE_CONDITION - ENDS_WITH_ATTRIBUTE_CONDITION - CONTAINS_ATTRIBUTE_CONDITION - IS_ROOT_CONDITION - IS_EMPTY_CONDITION - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition->new($type) -# creates a new sac condition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - return bless [$type], $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -#---------------------------------------------------------------------# -# my $type = $cond->ConditionType() -# $cond->ConditionType($type) -# get/set the condition type -#---------------------------------------------------------------------# -sub ConditionType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# -*CSS::SAC::Condition::getConditionType = \&ConditionType; - - -#---------------------------------------------------------------------# -# $cond->is_type($condition_constant) -# returns true is this condition is of type $condition_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition - base class for SAC conditions - -=head1 SYNOPSIS - - use CSS::SAC::Condition qw(:constants); - foo if $cond->is_type(CONDITION_TYPE_CONSTANT); - -=head1 DESCRIPTION - -SAC Conditions describe conditions that can be expressed in CSS such -as AttributeConditions or PositionalConditions. This class provides -everything that is needed to implement simple conditions (methods, -constants) as well as what is needed by subclasses defining more -complex conditions. - -The constants are those defined in the SAC spec, with the leading SAC_ -removed. What the constants map to is to be considered an opaque token -that can be tested for equality. If there is demand for it, I will add -a way to add new constants (for people wishing to define new condition -types). - -I have also added the UNKNOWN_CONDITION constant. It shouldn't occur -in normal processing but it's always useful to have such fallback -values. - -The Condition interface adds $cond->is_type($condition_type) to the -interface defined in the SAC spec. This allows for more flexible type -checking. For instance, if you create a subclass of ContentCondition -that extends it with the ContentRegexCondition interface you will -probably want software ignorant of your subclass's existence to still -be able to do something useful with it. That software should also be -able to treat ContentRegexConditions as if they were -ContentConditions. - -If that software tests condition types the following way: - - $rcond->ConditionType == CONTENT_CONDITION - -then you've lost because the condition type of ContentRegexCondition -is REGEX_CONTENT_CONDITION. If, however, it tests it that way: - - $rcond->is_type(CONTENT_CONDITION) - -then you can simply implement is_type() so that it returns true for -it's own type and the type of it's superclass. I strongly recommend -using the latter scheme except in cases when you want to know the -exact type. - -=head1 CONSTANTS - -=over 4 - -=item * UNKNOWN_CONDITION - -=item * AND_CONDITION - -=item * ATTRIBUTE_CONDITION - -=item * BEGIN_HYPHEN_ATTRIBUTE_CONDITION - -=item * CLASS_CONDITION - -=item * CONTENT_CONDITION - -=item * ID_CONDITION - -=item * LANG_CONDITION - -=item * NEGATIVE_CONDITION - -=item * ONE_OF_ATTRIBUTE_CONDITION - -=item * ONLY_CHILD_CONDITION - -=item * ONLY_TYPE_CONDITION - -=item * OR_CONDITION - -=item * POSITIONAL_CONDITION - -=item * PSEUDO_CLASS_CONDITION - -=back - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition->new($type) or $cond->new($type) - -Creates a new condition. The $type must be one of the type constants. - -=item * $cond->ConditionType() - -Returns the constant corresponding to the type of this condition. - -=item * $cond->is_type($condition_type) - -Returns a boolean indicating whether this condition is of type -$condition_type (a condition constant). - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition - base class for SAC conditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw(_type_)], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + +sub UNKNOWN_CONDITION () { 1 } +sub AND_CONDITION () { 2 } +sub ATTRIBUTE_CONDITION () { 3 } +sub BEGIN_HYPHEN_ATTRIBUTE_CONDITION () { 4 } +sub CLASS_CONDITION () { 5 } +sub CONTENT_CONDITION () { 6 } +sub ID_CONDITION () { 7 } +sub LANG_CONDITION () { 8 } +sub NEGATIVE_CONDITION () { 9 } +sub ONE_OF_ATTRIBUTE_CONDITION () { 10 } +sub ONLY_CHILD_CONDITION () { 11 } +sub ONLY_TYPE_CONDITION () { 12 } +sub OR_CONDITION () { 13 } +sub POSITIONAL_CONDITION () { 14 } +sub PSEUDO_CLASS_CONDITION () { 15 } + +# new non-standard conditions for CSS3 selectors +sub STARTS_WITH_ATTRIBUTE_CONDITION () { 16 } # [attr^='string'] +sub ENDS_WITH_ATTRIBUTE_CONDITION () { 17 } # [attr$='string'] +sub CONTAINS_ATTRIBUTE_CONDITION () { 18 } # [attr*='string'] +sub IS_ROOT_CONDITION () { 19 } # :root +sub IS_EMPTY_CONDITION () { 20 } # :empty + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + UNKNOWN_CONDITION + AND_CONDITION + ATTRIBUTE_CONDITION + BEGIN_HYPHEN_ATTRIBUTE_CONDITION + CLASS_CONDITION + CONTENT_CONDITION + ID_CONDITION + LANG_CONDITION + NEGATIVE_CONDITION + ONE_OF_ATTRIBUTE_CONDITION + ONLY_CHILD_CONDITION + ONLY_TYPE_CONDITION + OR_CONDITION + POSITIONAL_CONDITION + PSEUDO_CLASS_CONDITION + + STARTS_WITH_ATTRIBUTE_CONDITION + ENDS_WITH_ATTRIBUTE_CONDITION + CONTAINS_ATTRIBUTE_CONDITION + IS_ROOT_CONDITION + IS_EMPTY_CONDITION + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition->new($type) +# creates a new sac condition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + return bless [$type], $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +#---------------------------------------------------------------------# +# my $type = $cond->ConditionType() +# $cond->ConditionType($type) +# get/set the condition type +#---------------------------------------------------------------------# +sub ConditionType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# +*CSS::SAC::Condition::getConditionType = \&ConditionType; + + +#---------------------------------------------------------------------# +# $cond->is_type($condition_constant) +# returns true is this condition is of type $condition_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition - base class for SAC conditions + +=head1 SYNOPSIS + + use CSS::SAC::Condition qw(:constants); + foo if $cond->is_type(CONDITION_TYPE_CONSTANT); + +=head1 DESCRIPTION + +SAC Conditions describe conditions that can be expressed in CSS such +as AttributeConditions or PositionalConditions. This class provides +everything that is needed to implement simple conditions (methods, +constants) as well as what is needed by subclasses defining more +complex conditions. + +The constants are those defined in the SAC spec, with the leading SAC_ +removed. What the constants map to is to be considered an opaque token +that can be tested for equality. If there is demand for it, I will add +a way to add new constants (for people wishing to define new condition +types). + +I have also added the UNKNOWN_CONDITION constant. It shouldn't occur +in normal processing but it's always useful to have such fallback +values. + +The Condition interface adds $cond->is_type($condition_type) to the +interface defined in the SAC spec. This allows for more flexible type +checking. For instance, if you create a subclass of ContentCondition +that extends it with the ContentRegexCondition interface you will +probably want software ignorant of your subclass's existence to still +be able to do something useful with it. That software should also be +able to treat ContentRegexConditions as if they were +ContentConditions. + +If that software tests condition types the following way: + + $rcond->ConditionType == CONTENT_CONDITION + +then you've lost because the condition type of ContentRegexCondition +is REGEX_CONTENT_CONDITION. If, however, it tests it that way: + + $rcond->is_type(CONTENT_CONDITION) + +then you can simply implement is_type() so that it returns true for +it's own type and the type of it's superclass. I strongly recommend +using the latter scheme except in cases when you want to know the +exact type. + +=head1 CONSTANTS + +=over 4 + +=item * UNKNOWN_CONDITION + +=item * AND_CONDITION + +=item * ATTRIBUTE_CONDITION + +=item * BEGIN_HYPHEN_ATTRIBUTE_CONDITION + +=item * CLASS_CONDITION + +=item * CONTENT_CONDITION + +=item * ID_CONDITION + +=item * LANG_CONDITION + +=item * NEGATIVE_CONDITION + +=item * ONE_OF_ATTRIBUTE_CONDITION + +=item * ONLY_CHILD_CONDITION + +=item * ONLY_TYPE_CONDITION + +=item * OR_CONDITION + +=item * POSITIONAL_CONDITION + +=item * PSEUDO_CLASS_CONDITION + +=back + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition->new($type) or $cond->new($type) + +Creates a new condition. The $type must be one of the type constants. + +=item * $cond->ConditionType() + +Returns the constant corresponding to the type of this condition. + +=item * $cond->is_type($condition_type) + +Returns a boolean indicating whether this condition is of type +$condition_type (a condition constant). + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: ConditionFactory.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/ConditionFactory.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ConditionFactory.pm 2001/08/17 13:32:14 1.1.1.1 +++ ConditionFactory.pm 2001/08/17 17:50:15 1.2 @@ -1,559 +1,559 @@ - -### -# CSS::SAC::ConditionFactory - the default ConditionFactory -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::ConditionFactory; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; [...1087 lines suppressed...] + +=back + +=head1 EXPERIMENTAL + +There's some experimental stuff in here to provide for some new CSS +constructs. It is and will remain undocumented until there is +consensus on the handling of these new tokens. If you badly need to +use one of the new CSS3 conditions that isn't documented, look at the +source for features tagged EXPERIMENTAL. + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: LexicalUnit.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/LexicalUnit.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- LexicalUnit.pm 2001/08/17 13:32:15 1.1.1.1 +++ LexicalUnit.pm 2001/08/17 17:50:15 1.2 @@ -1,389 +1,389 @@ - -### -# CSS::SAC::LexicalUnit - SAC units -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::LexicalUnit; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw( - _type_ - _value_ - _text_ - )], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - - -sub ATTR () { 1 } -sub CENTIMETER () { 2 } -sub COUNTER_FUNCTION () { 3 } -sub COUNTERS_FUNCTION () { 4 } -sub DEGREE () { 5 } -sub DIMENSION () { 6 } -sub EM () { 7 } -sub EX () { 8 } -sub FUNCTION () { 9 } -sub GRADIAN () { 10 } -sub HERTZ () { 11 } -sub IDENT () { 12 } -sub INCH () { 13 } -sub INHERIT () { 14 } -sub INTEGER () { 15 } -sub KILOHERTZ () { 16 } -sub MILLIMETER () { 17 } -sub MILLISECOND () { 18 } -sub OPERATOR_COMMA () { 19 } -sub OPERATOR_EXP () { 20 } -sub OPERATOR_GE () { 21 } -sub OPERATOR_GT () { 22 } -sub OPERATOR_LE () { 23 } -sub OPERATOR_LT () { 24 } -sub OPERATOR_MINUS () { 25 } -sub OPERATOR_MOD () { 26 } -sub OPERATOR_MULTIPLY () { 27 } -sub OPERATOR_PLUS () { 28 } -sub OPERATOR_SLASH () { 29 } -sub OPERATOR_TILDE () { 30 } -sub PERCENTAGE () { 31 } -sub PICA () { 32 } -sub PIXEL () { 33 } -sub POINT () { 34 } -sub RADIAN () { 35 } -sub REAL () { 36 } -sub RECT_FUNCTION () { 37 } -sub RGBCOLOR () { 38 } -sub SECOND () { 39 } -sub STRING_VALUE () { 40 } -sub SUB_EXPRESSION () { 41 } -sub UNICODERANGE () { 42 } -sub URI () { 43 } - - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - ATTR CENTIMETER COUNTER_FUNCTION COUNTERS_FUNCTION - DEGREE DIMENSION EM EX FUNCTION GRADIAN HERTZ - IDENT INCH INHERIT INTEGER KILOHERTZ MILLIMETER - MILLISECOND OPERATOR_COMMA OPERATOR_EXP OPERATOR_GE - OPERATOR_GT OPERATOR_LE OPERATOR_LT OPERATOR_MINUS - OPERATOR_MOD OPERATOR_MULTIPLY OPERATOR_PLUS - OPERATOR_SLASH OPERATOR_TILDE PERCENTAGE PICA PIXEL - POINT RADIAN REAL RECT_FUNCTION RGBCOLOR SECOND - STRING_VALUE SUB_EXPRESSION UNICODERANGE URI - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::LexicalUnit->new($type,$text,$value) -# creates a new sac lexical unit object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - my $text = shift; - my $value = shift; - - # define our fields - my $self = []; - $self->[_type_] = $type; - $self->[_text_] = $text; - $self->[_value_] = $value; - - return bless $self, $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - - -### Accessors ######################################################### -# # -# # - -# defined aliases -*CSS::SAC::LexicalUnit::getDimensionUnitText = \&DimensionUnitText; -*CSS::SAC::LexicalUnit::getFunctionName = \&FunctionName; -*CSS::SAC::LexicalUnit::getValue = \&Value; -*CSS::SAC::LexicalUnit::getLexicalUnitType = \&LexicalUnitType; - -#---------------------------------------------------------------------# -# my $dut = $lu->DimensionUnitText -# $lu->DimensionUnitText($dut) -# get/set the text of the dimension unit (eg cm, px, etc...) -#---------------------------------------------------------------------# -sub DimensionUnitText { - (@_==2) ? $_[0]->[_text_] = $_[1] : - $_[0]->[_text_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $fn = $lu->FunctionName -# $lu->FunctionName($fn) -# get/set the name of the function (eg attr, uri, etc...) -#---------------------------------------------------------------------# -sub FunctionName { - (@_==2) ? $_[0]->[_text_] = $_[1] : - $_[0]->[_text_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $value = $lu->Value -# $lu->Value($value) -# get/set the value of the lu (which may be another lu, or a lu list) -#---------------------------------------------------------------------# -sub Value { - (@_==2) ? $_[0]->[_value_] = $_[1] : - $_[0]->[_value_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $type = $lu->LexicalUnitType -# $lu->LexicalUnitType($type) -# get/set the type of the lu -#---------------------------------------------------------------------# -sub LexicalUnitType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# $lu->is_type($lu_constant) -# returns true is this lu is of type $lu_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - -1; -=pod - -=head1 NAME - -CSS::SAC::LexicalUnit - SAC units - -=head1 SYNOPSIS - - use CSS::SAC::LexicalUnit qw(:constants); - foo if $lu->is_type(LU_TYPE_CONSTANT); - -=head1 DESCRIPTION - -In the SAC spec, LexicalUnit is a linked list, that is, you only ever -hold one LexicalUnit, and you ask for the next of for the previous one -when you want to move on. - -Such a model seems awkward, though I'm sure it makes sense somehow in -Java, likely for a Java-specific reason. - -In the Perl implementation, I have changed this. A LexicalUnit is an -object that stands on it's own and has no next/previous objects. -Instead, the $handler->property callback gets called with a -LexicalUnitList, which is in fact just an array ref of LexicalUnits. - -We also don't differentiate between IntegerValue, FloatValue, and -StringValue, it's always Value in Perl. This also applies to -Parameters and SubValues. Both are called as Value and return an array -ref of LexicalUnits. - -I added the is_type() method, see CSS::SAC::Condition for advantages -of that approach. - -=head1 CONSTANTS - -=over 4 - -=item * ATTR - -=item * CENTIMETER - -=item * COUNTER_FUNCTION - -=item * COUNTERS_FUNCTION - -=item * DEGREE - -=item * DIMENSION - -=item * EM - -=item * EX - -=item * FUNCTION - -=item * GRADIAN - -=item * HERTZ - -=item * IDENT - -=item * INCH - -=item * INHERIT - -=item * INTEGER - -=item * KILOHERTZ - -=item * MILLIMETER - -=item * MILLISECOND - -=item * OPERATOR_COMMA - -=item * OPERATOR_EXP - -=item * OPERATOR_GE - -=item * OPERATOR_GT - -=item * OPERATOR_LE - -=item * OPERATOR_LT - -=item * OPERATOR_MINUS - -=item * OPERATOR_MOD - -=item * OPERATOR_MULTIPLY - -=item * OPERATOR_PLUS - -=item * OPERATOR_SLASH - -=item * OPERATOR_TILDE - -=item * PERCENTAGE - -=item * PICA - -=item * PIXEL - -=item * POINT - -=item * RADIAN - -=item * REAL - -=item * RECT_FUNCTION - -=item * RGBCOLOR - -=item * SECOND - -=item * STRING_VALUE - -=item * SUB_EXPRESSION - -=item * UNICODERANGE - -=item * URI - -=back - -=head1 METHODS - -=over - -=item * CSS::SAC::LexicalUnit->new($type,$text,$value) or $lu->new($type,$text,$value) - -Creates a new unit. The $type must be one of the type constants, the -text depends on the type of unit (unit text, func name, etc...), and -the value is the content of the lu. - -=item * $lu->DimensionUnitText([$dut]) or getDimensionUnitText - -get/set the text of the dimension unit (eg cm, px, etc...) - -=item * $lu->FunctionName([$fn]) or getFunctionName - -get/set the name of the function (eg attr, uri, etc...) - -=item * $lu->Value([$value]) or getValue - -get/set the value of the lu (which may be another lu, or a lu list) - -=item * $lu->LexicalUnitType([$type]) or getLexicalUnitType - -get/set the type of the lu - -=item * $lu->is_type($lu_constant) - -returns true is this lu is of type $lu_constant - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::LexicalUnit - SAC units +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::LexicalUnit; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw( + _type_ + _value_ + _text_ + )], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + + +sub ATTR () { 1 } +sub CENTIMETER () { 2 } +sub COUNTER_FUNCTION () { 3 } +sub COUNTERS_FUNCTION () { 4 } +sub DEGREE () { 5 } +sub DIMENSION () { 6 } +sub EM () { 7 } +sub EX () { 8 } +sub FUNCTION () { 9 } +sub GRADIAN () { 10 } +sub HERTZ () { 11 } +sub IDENT () { 12 } +sub INCH () { 13 } +sub INHERIT () { 14 } +sub INTEGER () { 15 } +sub KILOHERTZ () { 16 } +sub MILLIMETER () { 17 } +sub MILLISECOND () { 18 } +sub OPERATOR_COMMA () { 19 } +sub OPERATOR_EXP () { 20 } +sub OPERATOR_GE () { 21 } +sub OPERATOR_GT () { 22 } +sub OPERATOR_LE () { 23 } +sub OPERATOR_LT () { 24 } +sub OPERATOR_MINUS () { 25 } +sub OPERATOR_MOD () { 26 } +sub OPERATOR_MULTIPLY () { 27 } +sub OPERATOR_PLUS () { 28 } +sub OPERATOR_SLASH () { 29 } +sub OPERATOR_TILDE () { 30 } +sub PERCENTAGE () { 31 } +sub PICA () { 32 } +sub PIXEL () { 33 } +sub POINT () { 34 } +sub RADIAN () { 35 } +sub REAL () { 36 } +sub RECT_FUNCTION () { 37 } +sub RGBCOLOR () { 38 } +sub SECOND () { 39 } +sub STRING_VALUE () { 40 } +sub SUB_EXPRESSION () { 41 } +sub UNICODERANGE () { 42 } +sub URI () { 43 } + + + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + ATTR CENTIMETER COUNTER_FUNCTION COUNTERS_FUNCTION + DEGREE DIMENSION EM EX FUNCTION GRADIAN HERTZ + IDENT INCH INHERIT INTEGER KILOHERTZ MILLIMETER + MILLISECOND OPERATOR_COMMA OPERATOR_EXP OPERATOR_GE + OPERATOR_GT OPERATOR_LE OPERATOR_LT OPERATOR_MINUS + OPERATOR_MOD OPERATOR_MULTIPLY OPERATOR_PLUS + OPERATOR_SLASH OPERATOR_TILDE PERCENTAGE PICA PIXEL + POINT RADIAN REAL RECT_FUNCTION RGBCOLOR SECOND + STRING_VALUE SUB_EXPRESSION UNICODERANGE URI + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::LexicalUnit->new($type,$text,$value) +# creates a new sac lexical unit object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + my $text = shift; + my $value = shift; + + # define our fields + my $self = []; + $self->[_type_] = $type; + $self->[_text_] = $text; + $self->[_value_] = $value; + + return bless $self, $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + + +### Accessors ######################################################### +# # +# # + +# defined aliases +*CSS::SAC::LexicalUnit::getDimensionUnitText = \&DimensionUnitText; +*CSS::SAC::LexicalUnit::getFunctionName = \&FunctionName; +*CSS::SAC::LexicalUnit::getValue = \&Value; +*CSS::SAC::LexicalUnit::getLexicalUnitType = \&LexicalUnitType; + +#---------------------------------------------------------------------# +# my $dut = $lu->DimensionUnitText +# $lu->DimensionUnitText($dut) +# get/set the text of the dimension unit (eg cm, px, etc...) +#---------------------------------------------------------------------# +sub DimensionUnitText { + (@_==2) ? $_[0]->[_text_] = $_[1] : + $_[0]->[_text_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $fn = $lu->FunctionName +# $lu->FunctionName($fn) +# get/set the name of the function (eg attr, uri, etc...) +#---------------------------------------------------------------------# +sub FunctionName { + (@_==2) ? $_[0]->[_text_] = $_[1] : + $_[0]->[_text_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $value = $lu->Value +# $lu->Value($value) +# get/set the value of the lu (which may be another lu, or a lu list) +#---------------------------------------------------------------------# +sub Value { + (@_==2) ? $_[0]->[_value_] = $_[1] : + $_[0]->[_value_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $type = $lu->LexicalUnitType +# $lu->LexicalUnitType($type) +# get/set the type of the lu +#---------------------------------------------------------------------# +sub LexicalUnitType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# $lu->is_type($lu_constant) +# returns true is this lu is of type $lu_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + +1; +=pod + +=head1 NAME + +CSS::SAC::LexicalUnit - SAC units + +=head1 SYNOPSIS + + use CSS::SAC::LexicalUnit qw(:constants); + foo if $lu->is_type(LU_TYPE_CONSTANT); + +=head1 DESCRIPTION + +In the SAC spec, LexicalUnit is a linked list, that is, you only ever +hold one LexicalUnit, and you ask for the next of for the previous one +when you want to move on. + +Such a model seems awkward, though I'm sure it makes sense somehow in +Java, likely for a Java-specific reason. + +In the Perl implementation, I have changed this. A LexicalUnit is an +object that stands on it's own and has no next/previous objects. +Instead, the $handler->property callback gets called with a +LexicalUnitList, which is in fact just an array ref of LexicalUnits. + +We also don't differentiate between IntegerValue, FloatValue, and +StringValue, it's always Value in Perl. This also applies to +Parameters and SubValues. Both are called as Value and return an array +ref of LexicalUnits. + +I added the is_type() method, see CSS::SAC::Condition for advantages +of that approach. + +=head1 CONSTANTS + +=over 4 + +=item * ATTR + +=item * CENTIMETER + +=item * COUNTER_FUNCTION + +=item * COUNTERS_FUNCTION + +=item * DEGREE + +=item * DIMENSION + +=item * EM + +=item * EX + +=item * FUNCTION + +=item * GRADIAN + +=item * HERTZ + +=item * IDENT + +=item * INCH + +=item * INHERIT + +=item * INTEGER + +=item * KILOHERTZ + +=item * MILLIMETER + +=item * MILLISECOND + +=item * OPERATOR_COMMA + +=item * OPERATOR_EXP + +=item * OPERATOR_GE + +=item * OPERATOR_GT + +=item * OPERATOR_LE + +=item * OPERATOR_LT + +=item * OPERATOR_MINUS + +=item * OPERATOR_MOD + +=item * OPERATOR_MULTIPLY + +=item * OPERATOR_PLUS + +=item * OPERATOR_SLASH + +=item * OPERATOR_TILDE + +=item * PERCENTAGE + +=item * PICA + +=item * PIXEL + +=item * POINT + +=item * RADIAN + +=item * REAL + +=item * RECT_FUNCTION + +=item * RGBCOLOR + +=item * SECOND + +=item * STRING_VALUE + +=item * SUB_EXPRESSION + +=item * UNICODERANGE + +=item * URI + +=back + +=head1 METHODS + +=over + +=item * CSS::SAC::LexicalUnit->new($type,$text,$value) or $lu->new($type,$text,$value) + +Creates a new unit. The $type must be one of the type constants, the +text depends on the type of unit (unit text, func name, etc...), and +the value is the content of the lu. + +=item * $lu->DimensionUnitText([$dut]) or getDimensionUnitText + +get/set the text of the dimension unit (eg cm, px, etc...) + +=item * $lu->FunctionName([$fn]) or getFunctionName + +get/set the name of the function (eg attr, uri, etc...) + +=item * $lu->Value([$value]) or getValue + +get/set the value of the lu (which may be another lu, or a lu list) + +=item * $lu->LexicalUnitType([$type]) or getLexicalUnitType + +get/set the type of the lu + +=item * $lu->is_type($lu_constant) + +returns true is this lu is of type $lu_constant + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Selector.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Selector.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Selector.pm 2001/08/17 13:32:15 1.1.1.1 +++ Selector.pm 2001/08/17 17:50:15 1.2 @@ -1,244 +1,244 @@ - -### -# CSS::SAC::Selector - base class for SAC selectors -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Selector; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { - fields => [qw(_type_)], - }; -#---------------------------------------------------------------------# - - -### Constants ######################################################### -# # -# # - -sub UNKNOWN_SELECTOR () { 1 } -sub ANY_NODE_SELECTOR () { 2 } -sub CDATA_SECTION_NODE_SELECTOR () { 3 } -sub CHILD_SELECTOR () { 4 } -sub COMMENT_NODE_SELECTOR () { 5 } -sub CONDITIONAL_SELECTOR () { 6 } -sub DESCENDANT_SELECTOR () { 7 } -sub DIRECT_ADJACENT_SELECTOR () { 8 } -sub ELEMENT_NODE_SELECTOR () { 9 } -sub NEGATIVE_SELECTOR () { 10 } -sub PROCESSING_INSTRUCTION_NODE_SELECTOR () { 11 } -sub PSEUDO_ELEMENT_SELECTOR () { 12 } -sub ROOT_NODE_SELECTOR () { 13 } -sub TEXT_NODE_SELECTOR () { 14 } - -# EXPERIMENTAL SELECTOR -sub INDIRECT_ADJACENT_SELECTOR () { 15 } - - -#---------------------------------------------------------------------# -# import() -# all import can do is export the constants -#---------------------------------------------------------------------# -sub import { - my $class = shift; - my $tag = shift || ''; - - # check that we have the right tag - return unless $tag eq ':constants'; - - # define some useful vars - my $pkg = caller; - my @constants = qw( - UNKNOWN_SELECTOR - ANY_NODE_SELECTOR - CDATA_SECTION_NODE_SELECTOR - CHILD_SELECTOR - COMMENT_NODE_SELECTOR - CONDITIONAL_SELECTOR - DESCENDANT_SELECTOR - DIRECT_ADJACENT_SELECTOR - ELEMENT_NODE_SELECTOR - NEGATIVE_SELECTOR - PROCESSING_INSTRUCTION_NODE_SELECTOR - PSEUDO_ELEMENT_SELECTOR - ROOT_NODE_SELECTOR - TEXT_NODE_SELECTOR - - INDIRECT_ADJACENT_SELECTOR - ); - - # now lets create the constants in the caller's package - no strict 'refs'; - for my $c (@constants) { - my $qname = "${pkg}::$c"; - *$qname = \&{$c}; - } -} -#---------------------------------------------------------------------# - - -# # -# # -### Constants ######################################################### - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Selector->new($type) -# creates a new sac selector object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; - return bless [$type], $class; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - - -#---------------------------------------------------------------------# -# my $type = $sel->SelectorType() -# $sel->SelectorType($type) -# get/set the selector type -#---------------------------------------------------------------------# -sub SelectorType { - (@_==2) ? $_[0]->[_type_] = $_[1] : - $_[0]->[_type_]; -} -#---------------------------------------------------------------------# -*CSS::SAC::Selector::getSelectorType = \&SelectorType; - -#---------------------------------------------------------------------# -# $sel->is_type($selector_constant) -# returns true is this selector is of type $selector_constant -#---------------------------------------------------------------------# -sub is_type { - return $_[0]->[_type_] == $_[1]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Selector - base class for SAC selectors - -=head1 SYNOPSIS - - use CSS::SAC::Selector qw(:constants); - foo if $sel->is_type(SELECTOR_TYPE_CONSTANT); - -=head1 DESCRIPTION - -SAC Selectors describe selectors that can be expressed in CSS such -as ElementSelector or SiblingSelector. This class provides everything -that is needed to implement simple selectors (methods, constants) as -well as what is needed by subclasses defining more complex selectors. - -The constants are those defined in the SAC spec, with the leading SAC_ -removed. What the constants map to is to be considered an opaque token -that can be tested for equality. If there is demand for it, I will add -a way to add new constants (for people wishing to define new condition -types). - -I have also added the UNKNOWN_SELECTOR constant. It shouldn't occur -in normal processing but it's always useful to have such fallback -values. - -The Selector interface adds $sel->is_type($selector_type) to the -interface defined in the SAC spec. This allows for more flexible type -checking. The advantages are the same as those described for the same -extension in the CSS::SAC::Condition class. - -=head1 CONSTANTS - -=over - -=item * UNKNOWN_SELECTOR - -=item * ANY_NODE_SELECTOR - -=item * CDATA_SECTION_NODE_SELECTOR - -=item * CHILD_SELECTOR - -=item * COMMENT_NODE_SELECTOR - -=item * CONDITIONAL_SELECTOR - -=item * DESCENDANT_SELECTOR - -=item * DIRECT_ADJACENT_SELECTOR - -=item * ELEMENT_NODE_SELECTOR - -=item * NEGATIVE_SELECTOR - -=item * PROCESSING_INSTRUCTION_NODE_SELECTOR - -=item * PSEUDO_ELEMENT_SELECTOR - -=item * ROOT_NODE_SELECTOR - -=item * TEXT_NODE_SELECTOR - -=back - -=head1 METHODS - -=over - -=item * CSS::SAC::Selector->new($type) or $sel->new($type) - -Creates a new selector. The $type must be one of the type constants. - -=item * $sel->SelectorType() or $sel->getSelectorType - -Returns the constant corresponding to the type of this selector. - -=item * $sel->is_type($selector_type) - -Returns a boolean indicating whether this selector is of type -$selector_type (a selector constant). - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Selector - base class for SAC selectors +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Selector; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects define => { + fields => [qw(_type_)], + }; +#---------------------------------------------------------------------# + + +### Constants ######################################################### +# # +# # + +sub UNKNOWN_SELECTOR () { 1 } +sub ANY_NODE_SELECTOR () { 2 } +sub CDATA_SECTION_NODE_SELECTOR () { 3 } +sub CHILD_SELECTOR () { 4 } +sub COMMENT_NODE_SELECTOR () { 5 } +sub CONDITIONAL_SELECTOR () { 6 } +sub DESCENDANT_SELECTOR () { 7 } +sub DIRECT_ADJACENT_SELECTOR () { 8 } +sub ELEMENT_NODE_SELECTOR () { 9 } +sub NEGATIVE_SELECTOR () { 10 } +sub PROCESSING_INSTRUCTION_NODE_SELECTOR () { 11 } +sub PSEUDO_ELEMENT_SELECTOR () { 12 } +sub ROOT_NODE_SELECTOR () { 13 } +sub TEXT_NODE_SELECTOR () { 14 } + +# EXPERIMENTAL SELECTOR +sub INDIRECT_ADJACENT_SELECTOR () { 15 } + + +#---------------------------------------------------------------------# +# import() +# all import can do is export the constants +#---------------------------------------------------------------------# +sub import { + my $class = shift; + my $tag = shift || ''; + + # check that we have the right tag + return unless $tag eq ':constants'; + + # define some useful vars + my $pkg = caller; + my @constants = qw( + UNKNOWN_SELECTOR + ANY_NODE_SELECTOR + CDATA_SECTION_NODE_SELECTOR + CHILD_SELECTOR + COMMENT_NODE_SELECTOR + CONDITIONAL_SELECTOR + DESCENDANT_SELECTOR + DIRECT_ADJACENT_SELECTOR + ELEMENT_NODE_SELECTOR + NEGATIVE_SELECTOR + PROCESSING_INSTRUCTION_NODE_SELECTOR + PSEUDO_ELEMENT_SELECTOR + ROOT_NODE_SELECTOR + TEXT_NODE_SELECTOR + + INDIRECT_ADJACENT_SELECTOR + ); + + # now lets create the constants in the caller's package + no strict 'refs'; + for my $c (@constants) { + my $qname = "${pkg}::$c"; + *$qname = \&{$c}; + } +} +#---------------------------------------------------------------------# + + +# # +# # +### Constants ######################################################### + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Selector->new($type) +# creates a new sac selector object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; + return bless [$type], $class; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + + +#---------------------------------------------------------------------# +# my $type = $sel->SelectorType() +# $sel->SelectorType($type) +# get/set the selector type +#---------------------------------------------------------------------# +sub SelectorType { + (@_==2) ? $_[0]->[_type_] = $_[1] : + $_[0]->[_type_]; +} +#---------------------------------------------------------------------# +*CSS::SAC::Selector::getSelectorType = \&SelectorType; + +#---------------------------------------------------------------------# +# $sel->is_type($selector_constant) +# returns true is this selector is of type $selector_constant +#---------------------------------------------------------------------# +sub is_type { + return $_[0]->[_type_] == $_[1]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Selector - base class for SAC selectors + +=head1 SYNOPSIS + + use CSS::SAC::Selector qw(:constants); + foo if $sel->is_type(SELECTOR_TYPE_CONSTANT); + +=head1 DESCRIPTION + +SAC Selectors describe selectors that can be expressed in CSS such +as ElementSelector or SiblingSelector. This class provides everything +that is needed to implement simple selectors (methods, constants) as +well as what is needed by subclasses defining more complex selectors. + +The constants are those defined in the SAC spec, with the leading SAC_ +removed. What the constants map to is to be considered an opaque token +that can be tested for equality. If there is demand for it, I will add +a way to add new constants (for people wishing to define new condition +types). + +I have also added the UNKNOWN_SELECTOR constant. It shouldn't occur +in normal processing but it's always useful to have such fallback +values. + +The Selector interface adds $sel->is_type($selector_type) to the +interface defined in the SAC spec. This allows for more flexible type +checking. The advantages are the same as those described for the same +extension in the CSS::SAC::Condition class. + +=head1 CONSTANTS + +=over + +=item * UNKNOWN_SELECTOR + +=item * ANY_NODE_SELECTOR + +=item * CDATA_SECTION_NODE_SELECTOR + +=item * CHILD_SELECTOR + +=item * COMMENT_NODE_SELECTOR + +=item * CONDITIONAL_SELECTOR + +=item * DESCENDANT_SELECTOR + +=item * DIRECT_ADJACENT_SELECTOR + +=item * ELEMENT_NODE_SELECTOR + +=item * NEGATIVE_SELECTOR + +=item * PROCESSING_INSTRUCTION_NODE_SELECTOR + +=item * PSEUDO_ELEMENT_SELECTOR + +=item * ROOT_NODE_SELECTOR + +=item * TEXT_NODE_SELECTOR + +=back + +=head1 METHODS + +=over + +=item * CSS::SAC::Selector->new($type) or $sel->new($type) + +Creates a new selector. The $type must be one of the type constants. + +=item * $sel->SelectorType() or $sel->getSelectorType + +Returns the constant corresponding to the type of this selector. + +=item * $sel->is_type($selector_type) + +Returns a boolean indicating whether this selector is of type +$selector_type (a selector constant). + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: SelectorFactory.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/SelectorFactory.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- SelectorFactory.pm 2001/08/17 13:32:14 1.1.1.1 +++ SelectorFactory.pm 2001/08/17 17:50:15 1.2 @@ -1,425 +1,425 @@ - -### -# CSS::SAC::SelectorFactory - the default SelectorFactory -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::SelectorFactory; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use CSS::SAC::Selector qw(:constants); -use CSS::SAC::Selector::Descendant qw(); -use CSS::SAC::Selector::Sibling qw(); -use CSS::SAC::Selector::Simple qw(); -use CSS::SAC::Selector::CharacterData qw(); -use CSS::SAC::Selector::Conditional qw(); -use CSS::SAC::Selector::Element qw(); -use CSS::SAC::Selector::Negative qw(); -use CSS::SAC::Selector::ProcessingInstruction qw(); - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects define => { fields => [] }; -#---------------------------------------------------------------------# - - - -### Constructor ####################################################### -# # -# # - - -#------------------------------------------------------... [truncated message content] |
From: Robin B. <da...@us...> - 2001-08-17 17:50:18
|
Update of /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition In directory usw-pr-cvs1:/tmp/cvs-serv18736/lib/CSS/SAC/Condition Modified Files: Attribute.pm Combinator.pm Content.pm Lang.pm Negative.pm Positional.pm Log Message: first batch of 0.04 changes Index: Attribute.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Attribute.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Attribute.pm 2001/08/17 13:32:15 1.1.1.1 +++ Attribute.pm 2001/08/17 17:50:15 1.2 @@ -1,191 +1,191 @@ - -### -# CSS::SAC::Condition::Attribute - SAC AttributeConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Attribute; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _local_name_ - _value_ - _ns_uri_ - _specified_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) -# creates a new sac AttributeCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the attribute conditions - my $local_name = shift; - my $ns_uri = shift; - my $specified = shift; - my $value = shift; - - # create a condition - my $acond = $class->SUPER::new($type); - - # add our fields - $acond->[_local_name_] = $local_name if $local_name; - $acond->[_value_] = $value if defined $value; - $acond->[_ns_uri_] = $ns_uri if defined $ns_uri; - $acond->[_specified_] = $specified if $specified; - - return $acond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Attribute::getLocalName = \&LocalName; -*CSS::SAC::Condition::Attribute::getNamespaceURI = \&NamespaceURI; -*CSS::SAC::Condition::Attribute::getValue = \&Value; -*CSS::SAC::Condition::Attribute::getSpecified = \&Specified; - - -#---------------------------------------------------------------------# -# my $lname = $cond->LocalName() -# $cond->LocalName($lname) -# get/set the local name -#---------------------------------------------------------------------# -sub LocalName { - (@_==2) ? $_[0]->[_local_name_] = $_[1] : - $_[0]->[_local_name_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $ns = $cond->NamespaceURI() -# $cond->NamespaceURI($ns) -# get/set the ns uri -#---------------------------------------------------------------------# -sub NamespaceURI { - (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : - $_[0]->[_ns_uri_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $value = $cond->Value() -# $cond->Value($value) -# get/set the value -#---------------------------------------------------------------------# -sub Value { - (@_==2) ? $_[0]->[_value_] = $_[1] : - $_[0]->[_value_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $spec = $cond->Specified() -# $cond->Specified($spec) -# get/set the 'specified' state, ie whether a specific value was -# requested for this attr -#---------------------------------------------------------------------# -sub Specified { - (@_==2) ? $_[0]->[_specified_] = $_[1] : - $_[0]->[_specified_]; -} -#---------------------------------------------------------------------# - - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Attribute - SAC AttributeConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) - -=item * $cond->new($type,$lname,$ns,$specified,$value) - -Creates a new attribute condition. - -=item * $acond->LocalName([$lname]) - -get/set the local name - -=item * $acond->NamespaceURI([$ns]) - -get/set the ns uri - -=item * $acond->Value([$value]) - -get/set the value - -=item * $acond->Specified([$spec]) - -get/set the 'specified' state, ie whether a specific value was -requested for this attr - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Attribute - SAC AttributeConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Attribute; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _local_name_ + _value_ + _ns_uri_ + _specified_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) +# creates a new sac AttributeCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the attribute conditions + my $local_name = shift; + my $ns_uri = shift; + my $specified = shift; + my $value = shift; + + # create a condition + my $acond = $class->SUPER::new($type); + + # add our fields + $acond->[_local_name_] = $local_name if $local_name; + $acond->[_value_] = $value if defined $value; + $acond->[_ns_uri_] = $ns_uri if defined $ns_uri; + $acond->[_specified_] = $specified if $specified; + + return $acond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Attribute::getLocalName = \&LocalName; +*CSS::SAC::Condition::Attribute::getNamespaceURI = \&NamespaceURI; +*CSS::SAC::Condition::Attribute::getValue = \&Value; +*CSS::SAC::Condition::Attribute::getSpecified = \&Specified; + + +#---------------------------------------------------------------------# +# my $lname = $cond->LocalName() +# $cond->LocalName($lname) +# get/set the local name +#---------------------------------------------------------------------# +sub LocalName { + (@_==2) ? $_[0]->[_local_name_] = $_[1] : + $_[0]->[_local_name_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $ns = $cond->NamespaceURI() +# $cond->NamespaceURI($ns) +# get/set the ns uri +#---------------------------------------------------------------------# +sub NamespaceURI { + (@_==2) ? $_[0]->[_ns_uri_] = $_[1] : + $_[0]->[_ns_uri_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $value = $cond->Value() +# $cond->Value($value) +# get/set the value +#---------------------------------------------------------------------# +sub Value { + (@_==2) ? $_[0]->[_value_] = $_[1] : + $_[0]->[_value_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $spec = $cond->Specified() +# $cond->Specified($spec) +# get/set the 'specified' state, ie whether a specific value was +# requested for this attr +#---------------------------------------------------------------------# +sub Specified { + (@_==2) ? $_[0]->[_specified_] = $_[1] : + $_[0]->[_specified_]; +} +#---------------------------------------------------------------------# + + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Attribute - SAC AttributeConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Attribute->new($type,$lname,$ns,$specified,$value) + +=item * $cond->new($type,$lname,$ns,$specified,$value) + +Creates a new attribute condition. + +=item * $acond->LocalName([$lname]) + +get/set the local name + +=item * $acond->NamespaceURI([$ns]) + +get/set the ns uri + +=item * $acond->Value([$value]) + +get/set the value + +=item * $acond->Specified([$spec]) + +get/set the 'specified' state, ie whether a specific value was +requested for this attr + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Combinator.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Combinator.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Combinator.pm 2001/08/17 13:32:15 1.1.1.1 +++ Combinator.pm 2001/08/17 17:50:15 1.2 @@ -1,147 +1,147 @@ - -### -# CSS::SAC::Condition::Combinator - SAC CombinatorConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Combinator; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _condition_1_ - _condition_2_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Combinator->new($type,$first_cond,$second_cond) -# creates a new sac CombinatorCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the combinator conditions - my $condition_1 = shift; # any default ? - my $condition_2 = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_condition_1_] = $condition_1 if $condition_1; - $ccond->[_condition_2_] = $condition_2 if $condition_2; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Combinator::getFirstCondition = \&FirstCondition; -*CSS::SAC::Condition::Combinator::getSecondCondition = \&SecondCondition; - - -#---------------------------------------------------------------------# -# my $cond1 = $ccond->FirstCondition() -# $ccond->FirstCondition($cond1) -# get/set the first condition -#---------------------------------------------------------------------# -sub FirstCondition { - (@_==2) ? $_[0]->[_condition_1_] = $_[1] : - $_[0]->[_condition_1_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $cond2 = $ccond->SecondCondition() -# $ccond->SecondCondition($cond2) -# get/set the second condition -#---------------------------------------------------------------------# -sub SecondCondition { - (@_==2) ? $_[0]->[_condition_2_] = $_[1] : - $_[0]->[_condition_2_]; -} -#---------------------------------------------------------------------# - - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Combinator - SAC CombinatorConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Combinator->new($type,$cond1,$cond2) - -=item * $cond->new($type,$cond1,$cond2) - -Creates a new combinator condition. - -=item * $ccond->FirstCondition([$cond]) -=item * $ccond->SecondCondition([$cond]) - -get/set the conditions that compose the combinator - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Combinator - SAC CombinatorConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Combinator; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _condition_1_ + _condition_2_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Combinator->new($type,$first_cond,$second_cond) +# creates a new sac CombinatorCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the combinator conditions + my $condition_1 = shift; # any default ? + my $condition_2 = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_condition_1_] = $condition_1 if $condition_1; + $ccond->[_condition_2_] = $condition_2 if $condition_2; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Combinator::getFirstCondition = \&FirstCondition; +*CSS::SAC::Condition::Combinator::getSecondCondition = \&SecondCondition; + + +#---------------------------------------------------------------------# +# my $cond1 = $ccond->FirstCondition() +# $ccond->FirstCondition($cond1) +# get/set the first condition +#---------------------------------------------------------------------# +sub FirstCondition { + (@_==2) ? $_[0]->[_condition_1_] = $_[1] : + $_[0]->[_condition_1_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $cond2 = $ccond->SecondCondition() +# $ccond->SecondCondition($cond2) +# get/set the second condition +#---------------------------------------------------------------------# +sub SecondCondition { + (@_==2) ? $_[0]->[_condition_2_] = $_[1] : + $_[0]->[_condition_2_]; +} +#---------------------------------------------------------------------# + + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Combinator - SAC CombinatorConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Combinator->new($type,$cond1,$cond2) + +=item * $cond->new($type,$cond1,$cond2) + +Creates a new combinator condition. + +=item * $ccond->FirstCondition([$cond]) +=item * $ccond->SecondCondition([$cond]) + +get/set the conditions that compose the combinator + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Content.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Content.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Content.pm 2001/08/17 13:32:15 1.1.1.1 +++ Content.pm 2001/08/17 17:50:15 1.2 @@ -1,128 +1,128 @@ - -### -# CSS::SAC::Condition::Content - SAC ContentConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Content; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _data_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Content->new($type,$data) -# creates a new sac ContentCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $data = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_data_] = $data if defined $data; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Content::getData = \&Data; - -#---------------------------------------------------------------------# -# my $data = $ccond->Data() -# $ccond->Data($data) -# get/set the condition's data -#---------------------------------------------------------------------# -sub Data { - (@_==2) ? $_[0]->[_data_] = $_[1] : - $_[0]->[_data_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Content - SAC ContentConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Content->new($type,$data) - -=item * $cond->new($type,$data) - -Creates a new content condition. - -=item * $ccond->Data([$data]) - -get/set the condition's data - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Content - SAC ContentConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Content; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _data_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Content->new($type,$data) +# creates a new sac ContentCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $data = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_data_] = $data if defined $data; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Content::getData = \&Data; + +#---------------------------------------------------------------------# +# my $data = $ccond->Data() +# $ccond->Data($data) +# get/set the condition's data +#---------------------------------------------------------------------# +sub Data { + (@_==2) ? $_[0]->[_data_] = $_[1] : + $_[0]->[_data_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Content - SAC ContentConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Content->new($type,$data) + +=item * $cond->new($type,$data) + +Creates a new content condition. + +=item * $ccond->Data([$data]) + +get/set the condition's data + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Lang.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Lang.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Lang.pm 2001/08/17 13:32:15 1.1.1.1 +++ Lang.pm 2001/08/17 17:50:15 1.2 @@ -1,128 +1,128 @@ - -### -# CSS::SAC::Condition::Lang - SAC LangConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Lang; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _lang_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Lang->new($type,$lang) -# creates a new sac LangCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $lang = shift; - - # create a condition - my $ccond = $class->SUPER::new($type); - - # add our fields - $ccond->[_lang_] = $lang if $lang; - - return $ccond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Lang::getLang = \⟪ - -#---------------------------------------------------------------------# -# my $lang = $lcond->Lang() -# $lcond->Lang($lang) -# get/set the condition's lang -#---------------------------------------------------------------------# -sub Lang { - (@_==2) ? $_[0]->[_lang_] = $_[1] : - $_[0]->[_lang_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Lang - SAC LangConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Lang->new($type,$lang) - -=item * $cond->new($type,$lang) - -Creates a new lang condition. - -=item * $ccond->Lang([$lang]) - -get/set the condition's lang - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Lang - SAC LangConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Lang; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _lang_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Lang->new($type,$lang) +# creates a new sac LangCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $lang = shift; + + # create a condition + my $ccond = $class->SUPER::new($type); + + # add our fields + $ccond->[_lang_] = $lang if $lang; + + return $ccond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Lang::getLang = \⟪ + +#---------------------------------------------------------------------# +# my $lang = $lcond->Lang() +# $lcond->Lang($lang) +# get/set the condition's lang +#---------------------------------------------------------------------# +sub Lang { + (@_==2) ? $_[0]->[_lang_] = $_[1] : + $_[0]->[_lang_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Lang - SAC LangConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Lang->new($type,$lang) + +=item * $cond->new($type,$lang) + +Creates a new lang condition. + +=item * $ccond->Lang([$lang]) + +get/set the condition's lang + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Negative.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Negative.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Negative.pm 2001/08/17 13:32:15 1.1.1.1 +++ Negative.pm 2001/08/17 17:50:15 1.2 @@ -1,129 +1,129 @@ - -### -# CSS::SAC::Condition::Negative - SAC NegativeConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Negative; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _cond_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Negative->new($type,$cond) -# creates a new sac NegativeCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $cond = shift; - - # create a condition - my $ncond = $class->SUPER::new($type); - - # add our fields - $ncond->[_cond_] = $cond; - - return $ncond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Negative::getCondition = \&Condition; - - -#---------------------------------------------------------------------# -# my $cond = $ncond->Condition() -# $ncond->Condition($cond) -# get/set the condition's sub condition -#---------------------------------------------------------------------# -sub Condition { - (@_==2) ? $_[0]->[_cond_] = $_[1] : - $_[0]->[_cond_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Negative - SAC NegativeConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Negative->new($type,$cond) - -=item * $cond->new($type,$cond) - -Creates a new negative condition. - -=item * $ccond->Condition([$cond]) - -get/set the condition's sub condition - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Negative - SAC NegativeConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Negative; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _cond_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Negative->new($type,$cond) +# creates a new sac NegativeCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $cond = shift; + + # create a condition + my $ncond = $class->SUPER::new($type); + + # add our fields + $ncond->[_cond_] = $cond; + + return $ncond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Negative::getCondition = \&Condition; + + +#---------------------------------------------------------------------# +# my $cond = $ncond->Condition() +# $ncond->Condition($cond) +# get/set the condition's sub condition +#---------------------------------------------------------------------# +sub Condition { + (@_==2) ? $_[0]->[_cond_] = $_[1] : + $_[0]->[_cond_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Negative - SAC NegativeConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Negative->new($type,$cond) + +=item * $cond->new($type,$cond) + +Creates a new negative condition. + +=item * $ccond->Condition([$cond]) + +get/set the condition's sub condition + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + Index: Positional.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/lib/CSS/SAC/Condition/Positional.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Positional.pm 2001/08/17 13:32:15 1.1.1.1 +++ Positional.pm 2001/08/17 17:50:15 1.2 @@ -1,182 +1,182 @@ - -### -# CSS::SAC::Condition::Positional - SAC PositionalConditions -# Robin Berjon <ro...@kn...> -# 24/02/2001 -### - -package CSS::SAC::Condition::Positional; -use strict; -use vars qw($VERSION); -$VERSION = $CSS::SAC::VERSION || '0.03'; - -use base qw(CSS::SAC::Condition); - - -#---------------------------------------------------------------------# -# build the fields for an array based object -#---------------------------------------------------------------------# -use Class::ArrayObjects extend => { - class => 'CSS::SAC::Condition', - with => [qw( - _position_ - _same_type_ - _same_node_type_ - )], - }; -#---------------------------------------------------------------------# - - - - -### Constructor ####################################################### -# # -# # - - -#---------------------------------------------------------------------# -# CSS::SAC::Condition::Positional->new($type,$position,$node_type,$same_type) -# creates a new sac PositionalCondition object -#---------------------------------------------------------------------# -sub new { - my $class = ref($_[0])?ref(shift):shift; - my $type = shift; # should be one of the content conditions - my $position = shift; - my $same_type = shift; - my $node_type = shift; - - -### IMPORTANT NOTE ### -# -# we will need to parse the new an+b expressions that can be found in -# positional conditions. In fact, old style simple numbers will be -# expressed that new way because they can be mapped to it. -# -# We'll need to provide for the corresponding accessors. Also, a -# ->position_matches($pos) method would be cool as it would allow -# client code to simply ask whether a position matches instead of -# calculating it itself. - - - # create a condition - my $pcond = $class->SUPER::new($type); - - # add our fields - $pcond->[_position_] = $position if defined $position; - $pcond->[_same_type_] = $same_type if defined $same_type; - $pcond->[_same_node_type_] = $node_type if defined $node_type; - - return $pcond; -} -#---------------------------------------------------------------------# - - -# # -# # -### Constructor ####################################################### - - - -### Accessors ######################################################### -# # -# # - -# aliases -*CSS::SAC::Condition::Positional::getPosition = \&Position; -*CSS::SAC::Condition::Positional::getType = \&Type; -*CSS::SAC::Condition::Positional::getTypeNode = \&TypeNode; - - -#---------------------------------------------------------------------# -# my $pos = $pcond->Position() -# $pcond->Position($pos) -# get/set the condition's position -#---------------------------------------------------------------------# -sub Position { - (@_==2) ? $_[0]->[_position_] = $_[1] : - $_[0]->[_position_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $bool = $pcond->Type() -# $pcond->Type($bool) -# get/set the condition's type constraint -#---------------------------------------------------------------------# -sub Type { - (@_==2) ? $_[0]->[_same_type_] = $_[1] : - $_[0]->[_same_type_]; -} -#---------------------------------------------------------------------# - - -#---------------------------------------------------------------------# -# my $bool = $pcond->TypeNode() -# $pcond->TypeNode($bool) -# get/set the condition's node type constraint -#---------------------------------------------------------------------# -sub TypeNode { - (@_==2) ? $_[0]->[_same_node_type_] = $_[1] : - $_[0]->[_same_node_type_]; -} -#---------------------------------------------------------------------# - - -# # -# # -### Accessors ######################################################### - - - -1; - -=pod - -=head1 NAME - -CSS::SAC::Condition::Positional - SAC PositionalConditions - -=head1 SYNOPSIS - - see CSS::SAC::Condition - -=head1 DESCRIPTION - -This is a subclass of CSS::SAC::Condition, look there for more -documentation. This class adds the following methods (the spec -equivalents are available as well, just prepend 'get'): - -=head1 METHODS - -=over 4 - -=item * CSS::SAC::Condition::Positional->new($type,$pos,$node_type,$same_type) - -=item * $cond->new($type,$pos,$node_type,$same_type) - -Creates a new positional condition. - -=item * $pcond->Position([$pos]) - -get/set the condition's position - -=item * $pcond->Type([$bool]) - -get/set the condition's type constraint - -=item * $pcond->TypeNode([$bool]) - -get/set the condition's node type constraint - -=back - -=head1 AUTHOR - -Robin Berjon <ro...@kn...> - -This module is licensed under the same terms as Perl itself. - -=cut - - + +### +# CSS::SAC::Condition::Positional - SAC PositionalConditions +# Robin Berjon <ro...@kn...> +# 24/02/2001 +### + +package CSS::SAC::Condition::Positional; +use strict; +use vars qw($VERSION); +$VERSION = $CSS::SAC::VERSION || '0.03'; + +use base qw(CSS::SAC::Condition); + + +#---------------------------------------------------------------------# +# build the fields for an array based object +#---------------------------------------------------------------------# +use Class::ArrayObjects extend => { + class => 'CSS::SAC::Condition', + with => [qw( + _position_ + _same_type_ + _same_node_type_ + )], + }; +#---------------------------------------------------------------------# + + + + +### Constructor ####################################################### +# # +# # + + +#---------------------------------------------------------------------# +# CSS::SAC::Condition::Positional->new($type,$position,$node_type,$same_type) +# creates a new sac PositionalCondition object +#---------------------------------------------------------------------# +sub new { + my $class = ref($_[0])?ref(shift):shift; + my $type = shift; # should be one of the content conditions + my $position = shift; + my $same_type = shift; + my $node_type = shift; + + +### IMPORTANT NOTE ### +# +# we will need to parse the new an+b expressions that can be found in +# positional conditions. In fact, old style simple numbers will be +# expressed that new way because they can be mapped to it. +# +# We'll need to provide for the corresponding accessors. Also, a +# ->position_matches($pos) method would be cool as it would allow +# client code to simply ask whether a position matches instead of +# calculating it itself. + + + # create a condition + my $pcond = $class->SUPER::new($type); + + # add our fields + $pcond->[_position_] = $position if defined $position; + $pcond->[_same_type_] = $same_type if defined $same_type; + $pcond->[_same_node_type_] = $node_type if defined $node_type; + + return $pcond; +} +#---------------------------------------------------------------------# + + +# # +# # +### Constructor ####################################################### + + + +### Accessors ######################################################### +# # +# # + +# aliases +*CSS::SAC::Condition::Positional::getPosition = \&Position; +*CSS::SAC::Condition::Positional::getType = \&Type; +*CSS::SAC::Condition::Positional::getTypeNode = \&TypeNode; + + +#---------------------------------------------------------------------# +# my $pos = $pcond->Position() +# $pcond->Position($pos) +# get/set the condition's position +#---------------------------------------------------------------------# +sub Position { + (@_==2) ? $_[0]->[_position_] = $_[1] : + $_[0]->[_position_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $bool = $pcond->Type() +# $pcond->Type($bool) +# get/set the condition's type constraint +#---------------------------------------------------------------------# +sub Type { + (@_==2) ? $_[0]->[_same_type_] = $_[1] : + $_[0]->[_same_type_]; +} +#---------------------------------------------------------------------# + + +#---------------------------------------------------------------------# +# my $bool = $pcond->TypeNode() +# $pcond->TypeNode($bool) +# get/set the condition's node type constraint +#---------------------------------------------------------------------# +sub TypeNode { + (@_==2) ? $_[0]->[_same_node_type_] = $_[1] : + $_[0]->[_same_node_type_]; +} +#---------------------------------------------------------------------# + + +# # +# # +### Accessors ######################################################### + + + +1; + +=pod + +=head1 NAME + +CSS::SAC::Condition::Positional - SAC PositionalConditions + +=head1 SYNOPSIS + + see CSS::SAC::Condition + +=head1 DESCRIPTION + +This is a subclass of CSS::SAC::Condition, look there for more +documentation. This class adds the following methods (the spec +equivalents are available as well, just prepend 'get'): + +=head1 METHODS + +=over 4 + +=item * CSS::SAC::Condition::Positional->new($type,$pos,$node_type,$same_type) + +=item * $cond->new($type,$pos,$node_type,$same_type) + +Creates a new positional condition. + +=item * $pcond->Position([$pos]) + +get/set the condition's position + +=item * $pcond->Type([$bool]) + +get/set the condition's type constraint + +=item * $pcond->TypeNode([$bool]) + +get/set the condition's node type constraint + +=back + +=head1 AUTHOR + +Robin Berjon <ro...@kn...> + +This module is licensed under the same terms as Perl itself. + +=cut + + |
From: Robin B. <da...@us...> - 2001-08-17 17:50:18
|
Update of /cvsroot/perl-css/CSS-SAC In directory usw-pr-cvs1:/tmp/cvs-serv18736 Modified Files: Changes Makefile.PL README SAC.pm Log Message: first batch of 0.04 changes Index: Changes =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/Changes,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Changes 2001/08/17 13:32:14 1.1.1.1 +++ Changes 2001/08/17 17:50:15 1.2 @@ -1,5 +1,17 @@ Revision history for Perl extension CSS::SAC. +0.04 Ddd Mmm dd hh:mm:ss yyyy (in progress) + - fixed a bug in Text::Balanced that caused blocks to be + incorrectly extracted when they contained backslashed followed by + a newline. As a result Text::Balanced 1.84 is now required. + - fixed a bug which caused some backslash escapes to fail in IDENT + tokens (thanks to Bjoern Hoehrmann) + - fixed a stupid precedence bug in the RGB regex (thanks to Steffen + Goeldner) + - HTML end comments didn't work properly (Steffen Goeldner) + - @import looked for uri instead of url (Steffen Goeldner) + + 0.03 Mon Apr 23 16:44:16 2001 - switched all to Class::ArrayObjects (which used to be CSS::SAC::Helpers::ArrayObjects) - provide both standard and perlified names for methods Index: Makefile.PL =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/Makefile.PL,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Makefile.PL 2001/08/17 13:32:14 1.1.1.1 +++ Makefile.PL 2001/08/17 17:50:15 1.2 @@ -2,10 +2,10 @@ # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( - 'NAME' => 'CSS::SAC', - 'VERSION_FROM' => 'SAC.pm', # finds $VERSION - 'PREREQ_PM' => { - Text::Balanced => 0, - Class::ArrayObjects => 0.04, - }, # e.g., Module::Name => 1.1 + 'NAME' => 'CSS::SAC', + 'VERSION_FROM' => 'SAC.pm', + 'PREREQ_PM' => { + Text::Balanced => '1.84', + Class::ArrayObjects => '0.04', + }, ); Index: README =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/README,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- README 2001/08/17 13:32:14 1.1.1.1 +++ README 2001/08/17 17:50:15 1.2 @@ -1,5 +1,5 @@ -### CSS::SAC 0.03 - a SAC parser for Perl +### CSS::SAC 0.04 - a SAC parser for Perl This module implements a SAC interface for Perl. It has a good deal @@ -9,7 +9,14 @@ SAC handlers (which I will document in a spec'ish way soon). If you have any questions don't hesitate to contact me. +While relatively stable, this module still has bugs and is currently +considered early beta quality. The interface is fairly stable, but it +may evolve. Should that happen, a deprecation cycle will happen over +several releases (with warnings on deprecated methods in between). +Currently it is rather slow. Performance is the things we'll start +working on once enough bugs have been ironed out. + Prerequisites ============= @@ -52,6 +59,12 @@ CSS::Parser is officially deprecated. Thanks to all the people that provided patches, and sorry to all those that asked questions while I was away. You may contact me if you need anything. + +This module now has a mailing list part of the perl-css SourceForge +project. The latest CVS version is also always available on SourceForge. + + http://sourceforge.net/projects/perl-css/ + http://lists.sourceforge.net/lists/listinfo/perl-css-devel This module is licensed under the same terms as Perl itself. Index: SAC.pm =================================================================== RCS file: /cvsroot/perl-css/CSS-SAC/SAC.pm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- SAC.pm 2001/08/17 13:32:14 1.1.1.1 +++ SAC.pm 2001/08/17 17:50:15 1.2 @@ -29,7 +29,7 @@ use Text::Balanced qw(); - +use constant DEBUG => 0; #---------------------------------------------------------------------# # build a few useful regexen and maps @@ -37,18 +37,18 @@ # matches a quoted string $RE_STRING = Text::Balanced::gen_delimited_pat(q{'"}); #" -$RE_STRING = qr/$RE_STRING/; +$RE_STRING = qr/$RE_STRING/s; # matches a name token $RE_NAME = qr/ (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[\x32-\xff]))|[a-zA-Z\x80-\xff0-9-])+ - /x; + /xs; # matches a valid CSS ident (this may be wrong, needs testing) -$RE_IDENT = qr/ - (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[\x32-\xff]))|[a-zA-Z\x80-\xff]) - (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[\x32-\xff]))|[a-zA-Z\x80-\xff0-9-])* - /x; +my $RE_IDENT = qr/ + (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[ \x32-\xff]))|[a-zA-Z\x80-\xff]) + (?:(?:\\(?:(?:[a-fA-F0-9]{1,6}[\t\x20])|[ \x32-\xff]))|[a-zA-Z\x80-\xff0-9-])* + /xs; # matches a unicode range $RE_RANGE = qr/(?: @@ -66,7 +66,7 @@ (?:\?{0,1}|[0-9a-fA-F]))))))) ) ) - /x; + /xs; # matches a number @@ -315,22 +315,28 @@ #---> Start Parsing <---------------------------------------------# # start doc + warn "[SAC] start parsing\n" if DEBUG; $sac->[_dh_]->start_document if $sac->[_dh_can_]->{start_document}; # before anything else occurs there can be a charset + warn "[SAC] parsing charset\n" if DEBUG; $sac->parse_charset(\$css); $sac->[_allow_charset_] = 0; # remove an eventual HTML open comment (not reported to handler) + warn "[SAC] removing HTML comments\n" if DEBUG; $css =~ s/^\s*<!--//; # parse some possible comments + warn "[SAC] parsing comments\n" if DEBUG; $sac->parse_comments(\$css); # parse some possible imports + warn "[SAC] parsing imports\n" if DEBUG; $sac->parse_imports(\$css); # parse some possible ns declarations + warn "[SAC] parsing ns decl\n" if DEBUG; $sac->parse_namespace_declarations(\$css); # enter the main parsing loop @@ -338,10 +344,12 @@ while (length($css)) { # parse some possible comments + warn "[SAC] parsing comments\n" if DEBUG; $sac->parse_comments(\$css); # if we've got a closing block, it's a closing @media if ($css =~ s/^\s*\}//) { + warn "[SAC] closing media rule\n" if DEBUG; $sac->[_dh_]->end_media($sac->[_tmp_media_]) if $sac->[_dh_can_]->{end_media}; $sac->[_tmp_media_] = undef; } @@ -351,6 +359,7 @@ # @media if ($css =~ s/^\s*\@media\s+//i) { + warn "[SAC] parsing media\n" if DEBUG; my $medialist = $sac->parse_medialist(\$css); $sac->[_tmp_media_] = $medialist; $sac->[_dh_]->start_media($medialist) if $sac->[_dh_can_]->{start_media}; @@ -359,6 +368,7 @@ # @font-face elsif ($css =~ s/^\s*\@font-face\s+//i) { + warn "[SAC] parsing font-face\n" if DEBUG; # parse the block my $rule; ($rule,$css,undef) = Text::Balanced::extract_bracketed($css,q/{}'"/,qr/\s*/); #" @@ -369,6 +379,7 @@ # @page elsif ($css =~ s/^\s*\@page\s+//i) { + warn "[SAC] parsing page\n" if DEBUG; # grab the name and pseudo-page if they're there $css =~ s/^($RE_IDENT)?\s*(?::($RE_IDENT))//; my ($name,$pseudo) = ($1,$2); @@ -386,6 +397,7 @@ # at rules that we know nothing about will be like else { my $at_rule; + warn "[SAC] parsing unknown at rule\n" if DEBUG; # take off the @rule first $css =~ s/^\s*(\@$RE_IDENT\s*)//; @@ -408,14 +420,22 @@ } } + # html end comment + elsif ($css =~ s/^\s*-->\s*//) { + # we don't do anything with those presently + warn "[SAC] removing HTML comments\n" if DEBUG; + } + # we have selectors elsif (my $sel_list = $sac->parse_selector_list(\$css)) { + warn "[SAC] parsed selectors\n" if DEBUG; next unless @$sel_list; # callbacks $sac->[_dh_]->start_selector($sel_list) if $sac->[_dh_can_]->{start_selector}; # parse the rule my $rule; + warn "[SAC] parsing rule\n" if DEBUG; ($rule,$css,undef) = Text::Balanced::extract_bracketed($css,q/{}'"/,qr/\s*/); #" $sac->parse_rule(\$rule); @@ -423,24 +443,21 @@ $sac->[_dh_]->end_selector($sel_list) if $sac->[_dh_can_]->{end_selector}; } - # html end comment - elsif ($css =~ s/^\s*-->\s*//) { - # we don't do anything with those presently - } - # trailing whitespace, should only happen at the very end elsif ($css =~ s/^\s+//) { # do nothing + warn "[SAC] just whitespace\n" if DEBUG; } # error else { - $sac->[_eh_]->warning('Unknown trailing tokens in style sheet'); + $sac->[_eh_]->fatal_error('Unknown trailing tokens in style sheet'); last; } } # end doc + warn "[SAC] end of document\n" if DEBUG; $sac->[_dh_]->end_document if $sac->[_dh_can_]->{end_document}; #---> Finish Parsing <--------------------------------------------# @@ -470,8 +487,12 @@ $sac->[_dh_]->charset($charset) if $sac->[_dh_can_]->{charset}; } else { - $$css =~ s/[^;]*;//; - $sac->[_eh_]->warning('Unknown token in charset declaration'); + if ($$css =~ s/[^;]*;//;) { + $sac->[_eh_]->warning('Unknown token in charset declaration'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in charset declaration'); + } } } #---------------------------------------------------------------------# @@ -490,7 +511,7 @@ while ($$css =~ s/^\s*\@import\s+//i) { # first get the uri my $uri; - if ($$css =~ s/^uri\(//) { + if ($$css =~ s/^url\(//) { $$css =~ s/^((?:$RE_STRING)|([^\)]*))\s*//; $uri = $1; $uri =~ s/^(?:'|")//; # " @@ -512,8 +533,12 @@ $sac->[_dh_]->import_style($uri,$medialist) if $sac->[_dh_can_]->{import_style}; } else { - $$css =~ s/[^;]*;//; - $sac->[_eh_]->warning('Unknown token in import rule'); + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } } # remove comments and run again @@ -566,8 +591,12 @@ $sac->[_dh_]->namespace_declaration($prefix,$uri) if $sac->[_dh_can_]->{namespace_declaration}; } else { - $$css =~ s/[^;]*;//; - $sac->[_eh_]->warning('Unknown token in namespace declaration'); + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in namespace declaration'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in namespace declaration'); + } } # remove comments and run again @@ -610,6 +639,12 @@ } else { $sac->[_eh_]->warning('Unterminated comment'); + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } } } @@ -656,6 +691,12 @@ $$css =~ s/^[^{]*//; $sac->[_eh_]->warning('Unknown token in selector list'); last; + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } } } @@ -766,6 +807,12 @@ } else { $sac->[_eh_]->warning('Unknown token in attribute condition'); + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } } } @@ -920,6 +967,12 @@ $$css =~ s/^.*?(,|{)/$1/; $sac->[_eh_]->warning('Unknown token in simple selector'); last; + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } } } @@ -941,6 +994,19 @@ $sac->[_eh_]->fatal_error('Really weird input in simple selector'); } +# here we need to check whether the next token is also a selector +# if it is, we need to make an AND_CONDITION containing the two selectors +# and to attach it to a universal selector +# then we'll have to mix it into the $cond below. + if (@tokens) { + eval { $tokens[0]->SelectorType }; + if (!$@) { + my $and_cond = $sac->[_cf_]->create_and_condition($selector,shift @tokens); + $selector = $sac->[_sf_]->create_element_selector(undef,undef); + } + } + + # create a conditional selector with all conditions my $cond = $sac->build_condition(\@tokens); if ($cond) { @@ -1009,10 +1075,10 @@ # get all conditions my @conditions; while (@$tokens) { - eval { $tokens->[0]->SelectorType }; - if (not $@) { - $sac->[_eh_]->fatal_error('Really weird input in simple selector'); - } +# eval { $tokens->[0]->SelectorType }; +# if (not $@) { +# $sac->[_eh_]->fatal_error('Really weird input in simple selector'); +# } last if ! ref $tokens->[0]; push @conditions, shift @$tokens; } @@ -1043,6 +1109,7 @@ # remove { and }, and parse the content $$css =~ s/^\s*{//; $$css =~ s/}\s*$//; + warn "[SAC] removed curlies\n" if DEBUG; $sac->parse_style_declaration($css); } #---------------------------------------------------------------------# @@ -1073,8 +1140,15 @@ # the value my $lu = $sac->parse_property_value($css); if (!@$lu) { +print "pvcss: $$css\n"; $$css =~ s/^.*?;?\s*//; $sac->[_eh_]->warning('Unknown token in property value'); + if ($$css =~ s/[^;]*;//) { + $sac->[_eh_]->warning('Unknown token in import rule'); + } + else { + $sac->[_eh_]->fatal_error('Unknown token in import rule'); + } next; } $sac->parse_comments($css); @@ -1181,7 +1255,7 @@ } # hex rgb - elsif ($$css =~ s/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})//) { + elsif ($$css =~ s/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})//) { $value = $1; $text = '#'; $type = RGBCOLOR; @@ -1589,31 +1663,40 @@ =head1 BUGS -None that I know of but this is early beta software and should be -treated as such. + - the problem with attaching pseudo-elements to elements as + coselectors. I'm not sure which is the right representation. Don't + forget to update CSS::SAC::Writer too so that it writes it out + properly. + + - see Bjoern's list =head1 ACKNOWLEDGEMENTS - Bjoern Hoehrmann for his immediate reaction and much valuable feedback and suggestions. It's certainly much harder to type with all those fingers that all those Mafia padres have cut off, but at least - I get work done much faster than before. + I get work done much faster than before. And also those nasty bugs he + kindly uncovered. - - Simon St.Laurent for posting this on xmlhack.com and thus pointing a - lot of people to this module (as seen in my referer logs). + - Steffen Goeldner for spotting bugs and providing patches. + - Ian Hickson for very very very kind testing support, and all sorts + of niceties. + - Manos Batsis for starting a very long discussion on this that eventually deviated into other very interesting topics, and for giving me some really weird style sheets to feed into this module. - - Ian Hickson for very very very kind testing support, and all sorts - of niceties. + - Simon St.Laurent for posting this on xmlhack.com and thus pointing a + lot of people to this module (as seen in my referer logs). And of course all the other people that have sent encouragement notes and feature requests. =head1 TODO + - add a pointer to the SAC W3 page + - create the Exception classes - update PositionalCondition to include logic that can normalize the @@ -1628,6 +1711,10 @@ - add docs on how to write a {Document,Error}Handler, right now there is example code in Writer, but it isn't all clearly explained. + + - add an iterator that tracks loops and exits them with an error + whenever it reaches a certain (configurable) count. We need to + reliably jump out of infinite loops whenever it is needed. =head1 AUTHOR |