[gnome-code-assistance] [backends/css] Added support for parsing sass



commit f4c0f4a2bf1ee06a9f44c8384f03ea875dd33f0b
Author: Jesse van den Kieboom <jessevdk gmail com>
Date:   Thu Nov 14 09:10:25 2013 +0100

    [backends/css] Added support for parsing sass

 backends/css/app.rb                          |   25 +++++++++++++++++++++----
 data/org.gnome.codeassistance.gschema.xml.in |    2 +-
 2 files changed, 22 insertions(+), 5 deletions(-)
---
diff --git a/backends/css/app.rb b/backends/css/app.rb
index 924ac9c..5cf64f2 100644
--- a/backends/css/app.rb
+++ b/backends/css/app.rb
@@ -25,23 +25,34 @@ else
     require 'sass'
 end
 
-class CssParser < Sass::SCSS::CssParser
-    def self.expected(scanner, expected, line)
+module ColumnInfo
+    def expected(scanner, expeced, line)
         pos = scanner.pos
         nlpos = scanner.string.rindex("\n", pos)
 
         begin
-            super(scanner, expected, line)
+            super
         rescue Sass::SyntaxError => e
             e.modify_backtrace({:column => pos - nlpos})
             raise e
         end
     end
+end
+
+class CssParser < Sass::SCSS::CssParser
+    extend ColumnInfo
 
     @sass_script_parser = Class.new(Sass::Script::CssParser)
     @sass_script_parser.send(:include, Sass::SCSS::ScriptParser)
 end
 
+class ScssParser < Sass::SCSS::Parser
+    extend ColumnInfo
+
+    @sass_script_parser = Class.new(Sass::Script::Parser)
+    @sass_script_parser.send(:include, Sass::SCSS::ScriptParser)
+end
+
 module Gnome::CodeAssistance
     module Css
         class Service < Service
@@ -52,8 +63,14 @@ module Gnome::CodeAssistance
 
                 f = File.new(doc.data_path, 'r')
 
+                if doc.path.end_with?('.css')
+                    cls = CssParser
+                else
+                    cls = ScssParser
+                end
+
                 begin
-                    parser = CssParser.new(f.read(), doc.path)
+                    parser = cls.new(f.read(), doc.path)
                     parser.parse()
                 rescue Sass::SyntaxError => e
                     doc.diagnostics = [make_diagnostic(e)]
diff --git a/data/org.gnome.codeassistance.gschema.xml.in b/data/org.gnome.codeassistance.gschema.xml.in
index f4e1195..ec129e7 100644
--- a/data/org.gnome.codeassistance.gschema.xml.in
+++ b/data/org.gnome.codeassistance.gschema.xml.in
@@ -1,7 +1,7 @@
 <schemalist>
   <schema id="org.gnome.codeassistance" path="/org/gnome/codeassistance/">
     <key name="language-mapping" type="a{ss}">
-      <default>{'cpp': 'c', 'objc': 'c', 'chdr': 'c'}</default>
+      <default>{'cpp': 'c', 'objc': 'c', 'chdr': 'c', 'sass': 'css'}</default>
       <summary>Language Mapping</summary>
       <description>A mapping from language id to backend id</description>
     </key>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]