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>