Sha256: 23417461752e75779f6fadc3758b419f42da7039d52f8731b0d836cc66a4afad

Contents?: true

Size: 1 KB

Versions: 3

Compression:

Stored size: 1 KB

Contents

require_relative "base_parser.rb"

module Docks
  module Parsers
    class Sass < Base

      def initialize
        @comment_pattern = /(?:\/\/|\/\*|\*\/?)/
        @first_non_code_line_pattern = /[\$=+\.#\w\[&@]/
        setup_regexes
      end

      def symbol_details_from_first_line(first_code_line)
        first_code_line = first_code_line.strip

        type = case first_code_line
          when /^@function/ then Docks::Types::Symbol::FUNCTION
          when /^@mixin/, /^=/ then Docks::Types::Symbol::MIXIN
          when /^%/ then Docks::Types::Symbol::PLACEHOLDER
          when /^\$/ then Docks::Types::Symbol::VARIABLE
          when /(\.|\-\-)?(?:is|js)\-/ then Docks::Types::Symbol::STATE
          when /\-\-(?:[a-zA-Z][\-_]?)*/ then Docks::Types::Symbol::VARIANT
          else Docks::Types::Symbol::COMPONENT
        end

        name = first_code_line.match(/^=?@?(?:(?:function|mixin)\s*)?&?[\.#]?\s*([\$%]?[^\s\(\:]*)/).captures.first
        { name: name, symbol_type: type }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
docks_app-0.0.3 lib/docks/parsers/sass_parser.rb
docks_app-0.0.2 lib/docks/parsers/sass_parser.rb
docks_app-0.0.1 lib/docks/parsers/sass_parser.rb