The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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

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 - Pure perl implementation.

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 <ysasaki@cpan.org>