NAME
CSS::Sass::Types - Data Types for custom Sass Functions
Mapping Sass_Values to perl data structures
You can use maps and lists like normal hash or array references. Lists can have two different separators used for stringification. This is detected by checking if the object is derived from CSS::Sass::Type::List::Space. The default is a comma separated list, which you get by instantiating CSS::Sass::Type::List or CSS::Sass::Type::List::Comma.
my $null = CSS::Sass::Type->new(undef); # => 'null'
my $number = CSS::Sass::Type->new(42.35); # => 42.35
my $string = CSS::Sass::Type->new("foobar"); # => 'foobar'
my $map = CSS::Sass::Type->new({ key => "foobar" }); # 'key: foobar'
my $list = CSS::Sass::Type->new([ "foo", 42, "bar" ]); # 'foo, 42, bar'
my $space = CSS::Sass::Type::List::Space->new("foo", "bar"); # 'foo bar'
my $comma = CSS::Sass::Type::List::Comma->new("foo", "bar"); # 'foo, bar'
You can also return these native perl types from custom functions. They will automatically be upgraded to real CSS::Sass::Type objects. All types overload the stringify and eq operators (so far).
CSS::Sass::Type
Acts as a base class for all other types and is mainly an abstract class. It only implements a generic constructor, which accepts native perl data types (undef, numbers, strings, array-refs and hash-refs) and CSS::Sass::Type objects.
CSS::Sass::Type::Null
my $null = CSS::Sass::Type::Null->new;
my $string = "$null"; # eq 'null'
my $value = $null->value; # == undef
CSS::Sass::Type::Boolean
my $bool = CSS::Sass::Type::Boolean->new(42);
my $string = "$bool"; # eq 'true'
my $value = $bool->value; # == 1
CSS::Sass::Type::Number
my $number = CSS::Sass::Type::Boolean->new(42, 'px');
my $string = "$number"; # eq '42px'
my $value = $number->value; # == 42
my $unit = $number->unit; # eq 'px'
CSS::Sass::Type::String
my $string = CSS::Sass::Type->new("foo bar"); # => "foo bar"
my $quoted = "$string"; # eq '"foo bar"'
my $unquoted = $string->value; # eq 'foo bar'
CSS::Sass::Type::Color
my $color = CSS::Sass::Type::Color->new(64, 128, 32, 0.25);
my $string = "$color"; # eq 'rgba(64, 128, 32, 0.25)'
my $r = $color->r; # == 64
my $g = $color->g; # == 128
my $b = $color->b; # == 32
my $a = $color->a; # == 0.25
CSS::Sass::Type::Map
my $map = CSS::Sass::Type::Map->new(key => 'value');
my $string = "$map"; # eq 'key: value'
my $value = $map->{'key'}; # eq 'value'
CSS::Sass::Type::List::Comma
my $list = CSS::Sass::Type::List::Comma->new('foo', 'bar');
my $string = "$list"; # eq 'foo, bar'
my $value = $list->[0]; # eq 'foo'
CSS::Sass::Type::List::Space
my $list = CSS::Sass::Type::List::Space->new('foo', 'bar');
my $string = "$list"; # eq 'foo bar'
my $value = $list->[-1]; # eq 'bar'
SEE ALSO
AUTHOR
David Caldwell <david@porkrind.org> Marcel Greter <perl-libsass@ocbnet.ch>
COPYRIGHT AND LICENSE
Copyright (C) 2013 by David Caldwell Copyright (C) 2014 by Marcel Greter
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.12.4 or, at your option, any later version of Perl 5 you may have available.