Sha256: 2189db1abecf8c99288fb52614f3909e2a7b188bd1e73411304e7c279e407a7b

Contents?: true

Size: 1.56 KB

Versions: 11

Compression:

Stored size: 1.56 KB

Contents

require 'rouge/lexers/sass/common'

module Rouge
  module Lexers
    class Sass < RegexLexer
      include Indentation

      desc 'The Sass stylesheet language language (sass-lang.com)'

      tag 'sass'
      filenames '*.sass'
      mimetypes 'text/x-sass'

      id = /[\w-]+/

      state :root do
        rule /[ \t]*\n/, 'Text'
        rule(/[ \t]*/) { |m| token 'Text'; indentation(m[0]) }
      end

      state :content do
        # block comments
        rule %r(//.*?\n) do
          token 'Comment.Single'
          pop!; starts_block :single_comment
        end

        rule %r(/[*].*?\n) do
          token 'Comment.Multiline'
          pop!; starts_block :multi_comment
        end

        rule /@import\b/, 'Keyword', :import

        mixin :content_common

        rule %r(=#{id}), 'Name.Function', :value
        rule %r([+]#{id}), 'Name.Decorator', :value

        rule /:/, 'Name.Attribute', :old_style_attr

        rule(/(?=.+?:([^a-z]|$))/) { push :attribute }

        rule(//) { push :selector }
      end

      state :single_comment do
        rule /.*?\n/, 'Comment.Single', :pop!
      end

      state :multi_comment do
        rule /.*?\n/, 'Comment.Multiline', :pop!
      end

      state :import do
        rule /[ \t]+/, 'Text'
        rule /\S+/, 'Literal.String'
        rule /\n/, 'Text', :pop!
      end

      state :old_style_attr do
        mixin :attr_common
        rule(//) { pop!; push :value }
      end

      state :end_section do
        rule(/\n/) { token 'Text'; reset_stack }
      end

      instance_eval(&SASS_COMMON)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rouge-0.4.0 lib/rouge/lexers/sass.rb
rouge-0.3.10 lib/rouge/lexers/sass.rb
rouge-0.3.9 lib/rouge/lexers/sass.rb
rouge-0.3.8 lib/rouge/lexers/sass.rb
rouge-0.3.7 lib/rouge/lexers/sass.rb
rouge-0.3.6 lib/rouge/lexers/sass.rb
rouge-0.3.5 lib/rouge/lexers/sass.rb
rouge-0.3.4 lib/rouge/lexers/sass.rb
rouge-0.3.3 lib/rouge/lexers/sass.rb
rouge-0.3.2 lib/rouge/lexers/sass.rb
rouge-0.3.1 lib/rouge/lexers/sass.rb