/sass

Pure Go sass lexer, parser, and compiler

Primary LanguageGoOtherNOASSERTION

Circle CI Report Card

sass

Pure Go sass scanner, ast, and parser

Cross platform compiler for Sass

Usage

go get -u github.com/wellington/sass/sass
sass compile [-o file.css] input.scss

This project is currently in alpha, and contains no compiler. A scanner and parser are being developed to support a future compiler.

To help, check out parser. This project contains tests that iterate through sass-spec running the parser against example inputs. Errors detected by the parser are reported. However, you could also set the Parser mode to Trace and verify proper ast trees are being built from the input. As the parser matures, output can automatically be verified by the example outputs in these directories.

Glossary

  • Partial Support ❓
  • Full Support
  • No Support

Compiler Status

Passing 34 of the basic Sass tests in sass-spec

Function Status

See functions

Parser Status

  • Nested Rules
  • Referencing Parent Selectors: &
  • Nested Properties
  • Placeholder Selectors: %foo
  • Comments: /* */ and //
  • SassScript ❓
  • Variables: $ ❓
  • Data Types ❓
  • Strings
  • Lists (space and comma delimited)
  • Maps
  • Colors
  • Operations
    • Number Operations
    • Division and /
    • Subtraction, Negative Numbers, and -
    • Color Operations
    • String Operations
    • Boolean Operations
    • List Operations
    • Parentheses ❓
  • Functions
  • Keyword Arguments
  • Interpolation: #{} (there are still edge cases with support)
  • & in SassScript
  • Variable Defaults: !default
  • @-Rules and Directives
    • @import
    • @media
    • @extend
      • Extending Complex Selectors
      • Multiple Extends
      • Chaining Extends
  • Selector Sequences
  • Merging Selector Sequences
  • @extend-Only Selectors
  • The !optional Flag
  • @extend in Directives
  • @at-root
  • @at-root (without: ...) and @at-root (with: ...)
  • @debug
  • @warn
  • @error
  • Control Directives & Expressions
    • if()
    • @if
      • @else if ❓
      • @else
    • @for
    • @each
    • Multiple Assignment
    • @while
    • url(/local/path)
    • url(http://remote/path)
  • Mixin Directives
    • Defining a Mixin: @mixin
    • Including a Mixin: @include
  • Arguments
    • Literal arguments foo(one, two)
    • Keyword Arguments foo($y: two, $x: one)
    • Variable Arguments ❓
  • Passing Content Blocks to a Mixin
  • Variable Scope and Content Blocks
  • Function Directives ❓
  • Extending Sass
  • Defining Custom Sass Functions