Popularity
3.5
Declining
Activity
0.0
Stable
15
2
1

Programming language: Crystal
License: MIT License
Tags: C Bindings    
Latest version: v0.1.1

crass alternatives and similar shards

Based on the "C bindings" category.
Alternatively, view crass alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of crass or a related project?

Add another 'C bindings' Shard

README

Crass

Crystal Sass

Bindings for libsass

Installation

Mac: brew install libsass

Linux: I'm working on instructions

Add this to your application's shard.yml:

dependencies:
  crass:
    github: vonkingsley/crass

Usage

require "crass"

Start with creating some options or use the defaults

opts = Crass::Options.configure do |conf|
  conf.precision = 8
  conf.linefeed = "\n\n"
end

Or

opts = {:precision => 4, :input_file => "/home/user/borders.scss"}

Or

opts = Crass::Options.new
opts.precision = 8
opts.output_style = Crass::SassOutputStyle::COMPRESSED

Options:

{
:precision => Int32, 
:output_style => Crass::SassOutputStyle, 
:source_comments => Bool, 
:source_map_embed => Bool,
:source_map_contents => Bool, 
:omit_source_map_url => Bool, 
:is_indented_syntax_src => Bool,
:indent => String, 
:linefeed => String, 
:input_path => String, 
:output_path => String, 
:plugin_path => String, 
:include_path => String,
:source_map_file => String, 
:source_map_root => String
}

Create a Context

[Data]

ctx = Crass::Context::Data.new("$five: 5px;\n#main{margin: $five;}", opts)
output = ctx.compile #=> output css
puts output
rescue e : Crass::SassError
  puts e.message
ensure
  #free the context when you are done, please.
  ctx.delete if ctx

[File]

ctx = Crass::Context::File.new("/home/user/margins.scss", opts)
output = ctx.compile #=> output css
puts output
rescue e: Crass::SassError
  puts e.message
ensure
  #free the context when you are done, please.
  ctx.delete if ctx

You can also create a file context with the default options with just a File object or filename

ctx = Crass::Context::File("/home/user/index.scss")

Or

my_sass = File.new("/home/user/padding.scss")
ctx = Crass::Context::File(my_sass)

Compiler

You may want more control and timing of the compile process.

Create a context and get the compiler

ctx = Crass::Context::File.new("/home/user/home.scss", opts)
compiler = ctx.compiler
compiler.parse
puts compiler.state
compiler.execute
puts compiler.state
ctx.output

Command line

You can use the above library within your code or the command line to convert your files or directories

crystal build src/crass.cr
crass -h

If you have original style sass and want scss output you can build my version of the sass2scss tool

crystal build src/sass2scss.cr
sass2scss -h

TODO

  • [ ] Sass Values

  • [ ] Sass Function

  • [ ] Sass Importer

  • [ ] A lot more error control

Contributing

  1. Fork it ( https://github.com/vonkingsley/crass/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors