Class: Sass::SCSS::Parser

Inherits:
Object show all
Includes:
RX
Defined in:
lib/sass/scss/parser.rb

Overview

The parser for SCSS. It parses a string of code into a tree of Tree::Nodes.

Direct Known Subclasses

CssParser

Constant Summary

Constants included from RX

RX::CDC, RX::CDO, RX::COMMENT, RX::DASHMATCH, RX::DEFAULT, RX::ESCAPE, RX::FUNCTION, RX::GREATER, RX::H, RX::HASH, RX::HEXCOLOR, RX::IDENT, RX::IMPORTANT, RX::INCLUDES, RX::INTERP_START, RX::NAME, RX::NL, RX::NMCHAR, RX::NMSTART, RX::NONASCII, RX::NOT, RX::NUM, RX::NUMBER, RX::PLUS, RX::PREFIXMATCH, RX::RANGE, RX::S, RX::SINGLE_LINE_COMMENT, RX::STRING, RX::STRING1, RX::STRING2, RX::SUBSTRINGMATCH, RX::SUFFIXMATCH, RX::TILDE, RX::UNICODE, RX::UNICODERANGE, RX::URI, RX::URL, RX::W

Instance Method Summary collapse

Methods included from RX

escape_ident

Constructor Details

#initialize(str) ⇒ Parser

Returns a new instance of Parser.

Parameters:

  • str (String)

    The source document to parse



10
11
12
13
14
# File 'lib/sass/scss/parser.rb', line 10

def initialize(str)
  @template = str
  @line = 1
  @strs = []
end

Instance Method Details

#parseSass::Tree::RootNode

Parses an SCSS document.

Returns:

Raises:



20
21
22
23
24
25
26
27
28
# File 'lib/sass/scss/parser.rb', line 20

def parse
  @scanner = StringScanner.new(
    Haml::Util.check_encoding(@template) do |msg, line|
      raise Sass::SyntaxError.new(msg, :line => line)
    end.gsub("\r", ""))
  root = stylesheet
  expected("selector or at-rule") unless @scanner.eos?
  root
end