[gtksourceview] Add yaml language file



commit 46f1b643becf0f1c5073b56b54a31fdc898cf73f
Author: Adam Dingle <adam yorba org>
Date:   Sat Nov 16 07:53:45 2013 -0500

    Add yaml language file
    
    This file was written by Masood Behabadi and originally licensed under
    GPLv3+.  He later changed his license so the language file can be used
    by GtkSourceView.
    
    Original source:
    http://masood.googlecode.com/svn/trunk/yaml-language-spec/
    
    https://bugzilla.gnome.org/show_bug.cgi?id=684200

 data/language-specs/Makefile.am |    3 +-
 data/language-specs/yaml.lang   |  214 +++++++++++++++++++++++++++++++++++++++
 po/POTFILES.in                  |    1 +
 3 files changed, 217 insertions(+), 1 deletions(-)
---
diff --git a/data/language-specs/Makefile.am b/data/language-specs/Makefile.am
index 537adef..78500e5 100644
--- a/data/language-specs/Makefile.am
+++ b/data/language-specs/Makefile.am
@@ -107,7 +107,8 @@ LANGUAGES =                 \
        vhdl.lang               \
        xml.lang                \
        xslt.lang               \
-       yacc.lang
+       yacc.lang               \
+       yaml.lang
 
 languagesdir = $(datadir)/gtksourceview-3.0/language-specs
 languages_DATA = $(LANGUAGES) language.rng language2.rng language.dtd
diff --git a/data/language-specs/yaml.lang b/data/language-specs/yaml.lang
new file mode 100644
index 0000000..675e92d
--- /dev/null
+++ b/data/language-specs/yaml.lang
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vim: tabstop=2 shiftwidth=2 
+
+  yaml.lang basic syntax highlighting of YAML for GtkSourceView
+  
+  Copyright (C) 2013 Masood Behabadi <masood dentcat com>
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+  
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+  
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-->
+<language id="yaml" _name="YAML" _section="Other" version="2.0">
+  <metadata>
+    <property name="mimetypes">application/x-yaml</property>
+    <property name="globs">*.yaml;*.yml;</property>
+    <property name="line-comment-start">#</property>
+  </metadata>
+    
+  <styles>
+    <style id="scalar"    _name="Block literal"   map-to="def:string"/>
+    <style id="comment"   _name="Comment"         map-to="def:comment"/>
+    <style id="string"    _name="String"          map-to="def:string"/>
+    <style id="anchor"    _name="Anchor"          map-to="def:identifier"/>
+    <style id="tag"       _name="Tag"             map-to="def:preprocessor"/>
+    <style id="alias"     _name="Alias"           map-to="def:type"/>        
+    <style id="map-key"   _name="Map key"         map-to="def:keyword"/>
+    <style id="directive" _name="Directive"       map-to="def:shebang"/>
+    <style id="null"      _name="Null"            map-to="def:special-constant"/>
+    <style id="bool"      _name="Boolean"         map-to="def:boolean"/> 
+    <style id="int"       _name="Integer"         map-to="def:decimal"/>
+    <style id="float"     _name="Floating point"  map-to="def:floating-point"/>        
+  </styles>
+  
+  <definitions>
+  
+    <define-regex id="ischar">[^-\?:,\[\]\{\}#&amp;*!|&gt;'"% \s]</define-regex>
+
+    <define-regex id="lschar">[\s\[\{,]</define-regex>
+    <define-regex id="rschar">[\s\]\},]</define-regex>
+        
+    <context id="scalar" class-disabled="no-spell-check">
+      <start>(?&lt;=^|\s)[|&gt;]$</start>
+      <include>
+        <context end-parent="true" style-ref="scalar">
+          <start>^(?'indent'\s+)</start>
+          <end>^(?!\%{indent start})</end>
+        </context>
+        <context end-parent="true">
+          <match>(?=.)</match>
+        </context>
+      </include>
+    </context>
+    
+    <context id="alias" style-ref="alias">
+      <match>(?&lt;=^|\s)\*\%{ischar}+(?=$|\s)</match>
+    </context>
+    
+    <context id="tag" style-ref="tag">
+      <match>(?&lt;=^|\s)!(?:\%{ischar}*)?!?\%{ischar}+(?=$|\s)</match>
+    </context>
+
+    <context id="anchor" style-ref="anchor">
+      <match>(?&lt;=^|\s)&amp;\%{ischar}+(?=$|\s)</match>
+    </context>
+    
+    <context id="string" end-at-line-end="true" style-ref="string" class-disabled="no-spell-check">
+      <start>(?&lt;=^|\%{lschar})(?'q'["'])</start>
+      <end>[^\\]\%{q start}</end>
+    </context>
+    
+    <context id="unquoted-string" end-at-line-end="true" style-ref="string" class-disabled="no-spell-check">
+      <start>(?=\%{ischar}|[:-\?\]\}]\S)</start>
+      <end>(?=:\s|:$|\s#)</end>
+    </context>
+    
+    <context id="inline-unquoted" end-at-line-end="true" style-ref="string" class-disabled="no-spell-check">
+      <start>(?=\%{ischar}|-\S)</start>
+      <end>(?=[:,?\[\{\]\}]|\s#)</end>
+    </context>
+    
+    <context id="null" style-ref="null">
+      <match>(?:null)(?=\s*$|\s+#)</match>
+    </context>    
+    
+    <context id="inline-null" style-ref="null">
+      <match>(?:null)(?=\s*[:,?\[\{\]\}]|\s+#)</match>
+    </context>
+
+    <context id="bool" style-ref="bool">
+      <match>(?:true|false)(?=\s*$|\s+#)</match>
+    </context>    
+    
+    <context id="inline-bool" style-ref="bool">
+      <match>(?:true|false)(?=\s*[:,?\[\{\]\}]|\s+#)</match>
+    </context>
+    
+    <context id="inline-int" style-ref="int">
+      <match>-?(?:0|[1-9][0-9]*)(?=\s*[:,?\[\{\]\}]|\s+#)</match>
+    </context>
+        
+    <context id="int" style-ref="int">
+      <match>-?(?:0|[1-9][0-9]*)(?=\s*$|\s+#)</match>
+    </context>
+
+    <context id="inline-float" style-ref="float">
+      <match>-?(?:0|[1-9][0-9]*)(?:[.][0-9]*)?(?:[eE][-+]?[0-9]+)?(?=\s*[:,?\[\{\]\}]|\s+#)</match>
+    </context>
+        
+    <context id="float" style-ref="float">
+      <match>-?(?:0|[1-9][0-9]*)(?:[.][0-9]*)?(?:[eE][-+]?[0-9]+)?(?=\s*$|\s+#)</match>
+    </context>
+    
+    <context id="comment" style-ref="comment">
+      <match>(?&lt;=^|\s)#.*$</match>
+    </context>
+    
+    <context id="inline-sequence">
+      <start>(?&lt;=^|\s)\[</start>
+      <include>
+        <context ref="scalar"/>
+        <context ref="inline-sequence"/>
+        <context ref="inline-map"/>
+        <context ref="comment"/>
+        <context ref="alias"/>
+        <context ref="tag"/>                
+        <context ref="anchor"/>
+        <context ref="string"/>        
+        <context ref="inline-null"/>         
+        <context ref="inline-bool"/>         
+        <context ref="inline-int"/>
+        <context ref="inline-float"/>                        
+        <context ref="inline-unquoted"/>        
+        <context end-parent="true">
+          <match>\]</match>
+        </context>
+      </include>
+    </context>
+    
+    <context id="inline-map">
+      <start>(?&lt;=^|\s)\{</start>
+      <include>
+        <context ref="scalar"/>
+        <context ref="inline-sequence"/>
+        <context ref="inline-map"/>
+        <context ref="comment"/>
+        <context ref="alias"/>
+        <context ref="tag"/>                
+        <context ref="anchor"/>
+        <context ref="string"/>        
+        <context ref="inline-null"/> 
+        <context ref="inline-bool"/>                         
+        <context ref="inline-int"/>
+        <context ref="inline-float"/>                        
+        <context ref="inline-unquoted"/>        
+        <context end-parent="true">
+          <match>\}</match>
+        </context>
+      </include>
+    </context>
+    
+    <context id="map">
+      <match>(?&lt;=^|\s)((?:[^:]|:(?=\S))+)(?::\s+|:$)</match>
+      <include>
+        <context sub-pattern="1" style-ref="map-key"/>
+      </include>
+    </context>
+    
+    <context id="sequence">
+      <match>^\s*-\s+</match>
+    </context>
+    
+    <context id="document" style-ref="comment">
+      <match>^(?:-{3}|[.]{3})(?:\s+|$)</match>
+    </context>
+    
+    <context id="directive" style-ref="directive">
+      <match>^%\%{ischar}(?:\%{ischar}|\s+)*</match>
+    </context>
+        
+    <context id="yaml" class="no-spell-check">
+      <include>
+        <context ref="directive"/>
+        <context ref="document"/>        
+        <context ref="scalar"/>
+        <context ref="sequence"/>
+        <context ref="inline-sequence"/>
+        <context ref="inline-map"/>
+        <context ref="comment"/>
+        <context ref="null"/>
+        <context ref="bool"/>
+        <context ref="int"/>
+        <context ref="float"/>
+        <context ref="alias"/>
+        <context ref="tag"/>
+        <context ref="anchor"/>
+        <context ref="map"/>
+        <context ref="string"/>
+        <context ref="unquoted-string"/>
+      </include>
+    </context>
+
+  </definitions>  
+
+</language>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e54ffc0..f195eeb 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -106,6 +106,7 @@ data/language-specs/vhdl.lang
 data/language-specs/xml.lang
 data/language-specs/xslt.lang
 data/language-specs/yacc.lang
+data/language-specs/yaml.lang
 data/styles/classic.xml
 data/styles/cobalt.xml
 data/styles/kate.xml


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