NAME

CSS::Struct - Struct oriented CSS manipulation.

DESCRIPTION

This class is for description of CSS::Struct concept. There is specification of structure. Concrete implementations are in CSS::Struct::Output::Raw and CSS::Struct::Output::Indent. Abstract class for other implementations is in CSS::Struct::Output.

STRUCTURE

 Perl structure:

 Reference to array.
 [type, data]

 Types:
 a - At-rules.
 c - Comment.
 d - Definition.
 e - End of selector.
 i - Instruction.
 r - Raw section.
 s - Selector.

 Data:
 a - $at_rule, $file
 c - @comment
 d - $key, $value
 e - No argument.
 i - $target, $code
 r - @raw_data
 s - $selector

EXAMPLE

 use strict;
 use warnings;

 use CSS::Struct::Output::Raw;
 use CSS::Struct::Output::Indent;

 if (@ARGV < 1) {
         print STDERR "Usage: $0 indent\n";
         exit 1;
 }
 my $indent = $ARGV[0];

 my $css;
 my %params = (
         'output_handler' => \*STDOUT,
 );
 if ($indent) {
         $css = CSS::Struct::Output::Indent->new(%params);
 } else {
         $css = CSS::Struct::Output::Raw->new(%params);
 }

 $css->put(['c', 'comment']);
 $css->put(['a', '@charset', 'utf-8']);
 $css->put(['s', 'selector#id']);
 $css->put(['s', 'div div']);
 $css->put(['s', '.class']);
 $css->put(['d', 'weight', '100px']);
 $css->put(['d', 'font-size', '10em']);
 $css->put(['e']);

 # Flush to output.
 $css->flush;
 print "\n";

 # Output without argument:
 # Usage: __SCRIPT__ indent

 # Output with argument 0:
 # /*comment*/@charset "utf-8";selector#id,div div,.class{weight:100px;font-size:10em;}

 # /* comment */
 # Output with argument 1:
 # @charset "utf-8";
 # selector#id, div div, .class {
 #         weight: 100px;
 #         font-size: 10em;
 # }

SEE ALSO

CSS::Struct::Output

Base class for CSS::Struct::Output::*.

CSS::Struct::Output::Indent

Indent printing 'CSS::Struct' structure to CSS code.

CSS::Struct::Output::Raw

Raw printing 'CSS::Struct' structure to CSS code.

CSS::Struct::Output::Structure

Structure class for 'CSS::Struct' output.

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2007-2021 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.05