# NAME
Text::Sass::XS - Perl Binding for libsass
# SYNOPSIS
# OO Interface
use Text::Sass::XS;
use Try::Tiny;
my $sass = Text::Sass::XS->new;
try {
my $css = $sass->compile(".something { color: red; }");
}
catch {
die $_;
};
# OO Interface with options
my $sass = Text::Sass::XS->new(
include_paths => ['path/to/include'],
image_path => '/images',
output_style => SASS_STYLE_COMPRESSED,
source_comments => SASS_SOURCE_COMMENTS_NONE,
);
try {
my $css = $sass->compile(".something { color: red; }");
}
catch {
die $_;
};
# Compile from file.
my $sass = Text::Sass::XS->new;
my $css = $sass->compile_file("/path/to/foo.scss");
# with options.
my $sass = Text::Sass::XS->new(
include_paths => ['path/to/include'],
image_path => '/images',
output_style => SASS_STYLE_COMPRESSED,
source_comments => SASS_SOURCE_COMMENTS_NONE,
);
my $css = $sass->compile_file("/path/to/foo.scss");
# Functional Interface
# export sass_compile, sass_compile_file and some constants
use Text::Sass::XS ':all';
my $sass = "your sass string here...";
my $options = {
output_style => SASS_STYLE_COMPRESSED,
source_comments => SASS_SOURCE_COMMENTS_NONE,
include_paths => 'site/css:vendor/css',
image_path => '/images'
};
my ($css, $errstr) = sass_compile($sass, $options);
die $errstr if $errstr;
my $sass_filename = "/path/to/foo.scss";
my $options = {
output_style => SASS_STYLE_COMPRESSED,
source_comments => SASS_SOURCE_COMMENTS_NONE,
include_paths => 'site/css:vendor/css',
image_path => '/images'
};
# In scalar context, sass_compile(_file)? returns css only.
my $css = sass_compile_file($sass_filename, $options);
print $css;
# Text::Sass compatible Interface
my $sass = Text::Sass::XS->new(%options);
my $css = $sass->scss2css($source);
# sass2css and css2sass are implemented by Text::Sass
my $css = $sass->sass2css($source);
my $scss = $sass->css2sass($css);
# DESCRIPTION
Text::Sass::XS is a Perl Binding for libsass.
[libsass Project page](
https://github.com/hcatlin/libsass)
# OO INTERFACE
- `new`
$sass = Text::Sass::XS->new(options)
Creates a Sass object with the specified options. Example:
$sass = Text::Sass::XS->new; # no options
$sass = Text::Sass::XS->new(output_style => SASS_STYLE_NESTED);
- `compile(source_code)`
$css = $sass->compile("source code");
This compiles the Sass string that is passed in the first parameter. If
there is an error it will `croak()`.
- `compile_file(input_path)`
$css = $sass->compile_file("/path/to/foo.scss");
This compiles the Sass file that is passed in the first parameter. If
there is an error it will `croak()`.
- `options`
$sass->options->{include_paths} = ['/path/to/assets'];
Allows you to inspect or change the options after a call to `new`.
- `scss2css(source_code)`
$css = $sass->scss2css("scss souce code");
Same as `compile`.
- `sass2css(source_code)`
$css = $sass->compile("sass source code");
Wrapper method of `Text::Sass#sass2css`.
- `css2sass(source_code)`
$css = $sass->css2sass("css source code");
Wrapper method of `Text::Sass#css2sass`.
# FUNCTIONAL INTERFACE
# EXPORT
Nothing to export.
# EXPORT\_OK
## Funcitons
- `sass_compile($source_string :Str, $options :HashRef)`
Returns css string if success. Otherwise throws exception.
Default value of `$options` is below.
my $options = {
output_style => SASS_STYLE_COMPRESSED,
source_comments => SASS_SOURCE_COMMENTS_NONE,
include_paths => undef,
image_path => undef,
};
`input_paths` is a coron-separated string for "@import". `image_path` is a string using for "image-url".
- `sass_compile_file($input_path :Str, $options :HashRef)`
Returns css string if success. Otherwise throws exception. `$options` is same as `sass_compile`.
## Constants
For `$options->{output_style}`.
- `SASS_STYLE_NESTED`
- `SASS_STYLE_EXPANDED`
- `SASS_STYLE_COMPRESSED`
For `$options->{source_comments}`.
- `SASS_SOURCE_COMMENTS_NONE`
- `SASS_SOURCE_COMMENTS_DEFAULT`
- `SASS_SOURCE_COMMENTS_MAP`
# EXPORT\_TAGS
- :func
Exports `sass_compile` and `sass_compile_file`.
- :const
Exports all constants.
- :all
Exports :func and :const.
# SEE ALSO
[Text::Sass](
http://search.cpan.org/perldoc?Text::Sass) - Pure perl implementation.
[CSS::Sass](
http://search.cpan.org/perldoc?CSS::Sass) - Yet another libsass binding.
# LICENSE
## Text::Sass::XS
Copyright (C) 2013 Yoshihiro Sasaki.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
## libsass
Copyright (C) 2012 by Hampton Catlin.
See libsass/LICENSE for more details.
# AUTHOR
Yoshihiro Sasaki <
[email protected]>