/Text-Sass-XS

Perl Binding for libsass

Primary LanguagePerlOtherNOASSERTION

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