# NAME
CSS::Object - CSS Object Oriented
# SYNOPSIS
use CSS::Object;
# VERSION
v0.1.1
# DESCRIPTION
[CSS::Object](
https://metacpan.org/pod/CSS%3A%3AObject) is a object oriented CSS parser and manipulation interface.
# CONSTRUCTOR
## new
To instantiate a new [CSS::Object](
https://metacpan.org/pod/CSS%3A%3AObject) object, pass an hash reference of following parameters:
- _debug_
This is an integer. The bigger it is and the more verbose is the output.
- _format_
This is a [CSS::Object::Format](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AFormat) object or one of its child modules.
- _parser_
This is a [CSS::Object::Parser](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AParser) object or one of its child modules.
# EXCEPTION HANDLING
Whenever an error has occurred, [CSS::Object](
https://metacpan.org/pod/CSS%3A%3AObject) will set a [Module::Generic::Exception](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AException) object containing the detail of the error and return undef.
The error object can be retrieved with the inherited ["error" in Module::Generic](
https://metacpan.org/pod/Module%3A%3AGeneric#error) method. For example:
my $css = CSS::Object->new( debug => 3 ) || die( CSS::Object->error );
# METHODS
## add\_element
Provided with a [CSS::Object::Element](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AElement) object and this adds it to the list of css elements.
It uses an array object ["elements"](#elements) which is an [Module::Generic::Array](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AArray) object.
## add\_rule
Provided with a [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) object and this adds it to our list of rules. It returns the rule object that was added.
## as\_string
This will return the css data structure, currently registered, as a string.
It takes an optional [CSS::Object::Format](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AFormat) object as a parameter, to control the output. If none are provided, it will use the default one calling ["format"](#format)
## builder
This returns a new [CSS::Object::Builder](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ABuilder) object.
## charset
This sets or gets the css charset. It stores the value in a [Module::Generic::Scalar](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AScalar) object.
## elements
Sets or gets the array of CSS elements. This is a [Module::Generic::Array](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AArray) object that accepts only [CSS::Object::Element](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AElement) objects or its child classes, such as [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule), [CSS::Object::Comment](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AComment), etc
## format
Sets or gets a [CSS::Object::Format](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AFormat) object. See ["as\_string"](#as_string) below for more detail about their use.
[CSS::Object::Format](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AFormat) objects control the stringification of the css structure. By default, it will return the data in a string identical or at least very similar to the one parsed if it was parsed.
## get\_rule\_by\_selector
Provided with a selector and this returns a [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) object or an empty string.
## load\_parser
This will instantiate a new object based on the parser name specified with ["parser"](#parser) or during css object instantiation.
It returns a new [CSS::Object::Parser](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AParser) object, or one of its child module matching the ["parser"](#parser) specified.
## new\_comment
This returns a new [CSS::Object::Comment](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AComment) object and pass its instantiation method the provided arguments.
return( $css->new_comment( $array_ref_of_comment_ilnes ) );
## new\_property
This takes a property name, and an optional value o array of values and return a new [CSS::Object::Property](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AProperty) object
## new\_rule
This returns a new [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) object.
## new\_selector
This takes a selector name and returns a new [CSS::Object::Selector](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ASelector) object.
## new\_value
This takes a property value and returns a new [CSS::Object::Value](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AValue) object.
## parse\_string
Provided with some css data and this will instantiate the ["parser"](#parser), call ["parse\_string" in CSS::Object::Parser](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AParser#parse_string) and returns an array of [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) objects. The array is an array object from [Module::Generic::Array](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AArray) and can be used as a regular array or as an object.
## parser
Sets or gets the [CSS::Object::Parser](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AParser) object to be used by ["parse\_string"](#parse_string) to parse css data.
A valid parser object can be from [CSS::Object::Parser](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3AParser) or any of its sub modules.
It returns the current parser object.
## purge
This empties the array containing all the [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) objects.
## read\_file
Provided with a css file, and this will load it into memory and parse it using the parser name registered with ["parser"](#parser).
It can also take an array reference of css files who will be each fed to ["read\_file"](#read_file)
It returns the [CSS::Object](
https://metacpan.org/pod/CSS%3A%3AObject) used to call this method.
## read\_string
Provided with some css data, and this will call ["parse\_string"](#parse_string). It also accepts an array reference of data.
It returns the css object used to call this method.
## rules
This sets or gets the [Module::Generic::Array](
https://metacpan.org/pod/Module%3A%3AGeneric%3A%3AArray) object used to store all the [CSS::Object::Rule](
https://metacpan.org/pod/CSS%3A%3AObject%3A%3ARule) objects.
# AUTHOR
Jacques Deguest <`
[email protected]`>
# SEE ALSO
[CSS::Object](
https://metacpan.org/pod/CSS%3A%3AObject)
# COPYRIGHT & LICENSE
Copyright (c) 2020 DEGUEST Pte. Ltd.
You can use, copy, modify and redistribute this package and associated
files under the same terms as Perl itself.