packages feed

highlighting-kate 0.2.4 → 0.2.5

raw patch · 8 files changed

+250/−34 lines, 8 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Text.Highlighting.Kate.Syntax.Relaxngcompact: highlight :: String -> Either String [SourceLine]
+ Text.Highlighting.Kate.Syntax.Relaxngcompact: parseExpression :: GenParser Char SyntaxState LabeledSource
+ Text.Highlighting.Kate.Syntax.Relaxngcompact: syntaxExtensions :: String
+ Text.Highlighting.Kate.Syntax.Relaxngcompact: syntaxName :: String

Files

ParseSyntaxFiles.hs view
@@ -35,7 +35,6 @@ import System.FilePath import Text.PrettyPrint import Text.Highlighting.Kate.Definitions-import Text.Highlighting.Kate.Common (capitalize)  data SyntaxDefinition =   SyntaxDefinition { synLanguage      :: String@@ -140,9 +139,15 @@            \            -> String                        -- ^ Source code to highlight\n\            \            -> Either String [SourceLine]    -- ^ Either error message or result\n\            \highlightAs lang =\n\-           \  case (map toLower lang) of\n" +++           \  let lang'  = map toLower lang\n\+           \      lang'' = if lang' `elem` map (map toLower) languages\n\+           \                  then lang'\n\+           \                  else case languagesByExtension lang' of\n\+           \                            [l]  -> map toLower l  -- go by extension if unambiguous\n\+           \                            _    -> lang'\n\+           \  in  case lang'' of\n" ++            cases ++-           "        _ -> (\\_ -> Left (\"Unknown language ++ \" ++ lang))\n"+           "        _ -> (\\_ -> Left (\"Unknown language: \" ++ lang))\n"  processOneFile :: FilePath -> IO () processOneFile src = do@@ -244,12 +249,6 @@                                       endLineParser, withAttr, styles, parseExpressionInternal,                                        defaultAttributes {- , lineBeginContexts -}] ++ contexts ++ [contextCatchAll] -mkIdentifier :: String -> String-mkIdentifier "" = ""-mkIdentifier ('-':x:xs) = toUpper x : mkIdentifier xs-mkIdentifier ('-':xs) = mkIdentifier xs-mkIdentifier (x:xs) = x : mkIdentifier xs- mkAlternatives :: [Doc] -> Doc mkAlternatives docs =    let contents = vcat $ intersperse (text "<|>") docs@@ -343,6 +342,10 @@     "Javadoc" -> "Javadoc"     "JavaScript" -> "Javascript"     x -> x++capitalize :: String -> String+capitalize (x:xs) = toUpper x : xs+capitalize [] = []  nameFromPath :: FilePath -> String nameFromPath = concat . map capitalize . words . 
README view
@@ -7,8 +7,9 @@ D, Djangotemplate, Doxygen, Dtd, Eiffel, Erlang, Fortran, Haskell, Html, Java, Javadoc, Javascript, Json, Latex, Lex, LiterateHaskell, Lua, Makefile, Matlab, Mediawiki, Modula3, Nasm, Objectivec, Ocaml, Pascal,-Perl, Php, Postscript, Prolog, Python, Rhtml, Ruby, Scala, Scheme, Sgml,-Sql, SqlMysql, SqlPostgresql, Tcl, Texinfo, Xml, Xslt, Yacc+Perl, Php, Postscript, Prolog, Python, RelaxNG compact, Rhtml, Ruby,+Scala, Scheme, Sgml, Sql, SqlMysql, SqlPostgresql, Tcl, Texinfo, Xml,+Xslt, Yacc  To install: 
Text/Highlighting/Kate.hs view
@@ -35,4 +35,4 @@ import Text.Highlighting.Kate.Syntax ( highlightAs, languages, languagesByExtension ) import Text.Highlighting.Kate.Definitions ( SourceLine, LabeledSource ) -highlightingKateVersion = "0.2.4"+highlightingKateVersion = "0.2.5"
Text/Highlighting/Kate/Common.hs view
@@ -22,10 +22,6 @@ (>>~) :: (Monad m) => m a -> m b -> m a a >>~ b = a >>= \x -> b >> return x -capitalize :: [Char] -> [Char]-capitalize [] = []-capitalize (a:as) = toUpper a : as- normalizeHighlighting :: [LabeledSource] -> [LabeledSource] normalizeHighlighting [] = [] normalizeHighlighting ((_,""):xs) = normalizeHighlighting xs
Text/Highlighting/Kate/Syntax.hs view
@@ -44,6 +44,7 @@ import qualified Text.Highlighting.Kate.Syntax.Postscript as Postscript import qualified Text.Highlighting.Kate.Syntax.Prolog as Prolog import qualified Text.Highlighting.Kate.Syntax.Python as Python+import qualified Text.Highlighting.Kate.Syntax.Relaxngcompact as Relaxngcompact import qualified Text.Highlighting.Kate.Syntax.Rhtml as Rhtml import qualified Text.Highlighting.Kate.Syntax.Ruby as Ruby import qualified Text.Highlighting.Kate.Syntax.Scala as Scala@@ -60,11 +61,11 @@  -- | List of supported languages. languages :: [String]-languages = ["Ada","Alert","Asp","Awk","Bash","Bibtex","C","Cmake","Coldfusion","Commonlisp","Cpp","Css","D","Djangotemplate","Doxygen","Dtd","Eiffel","Erlang","Fortran","Haskell","Html","Java","Javadoc","Javascript","Json","Latex","Lex","LiterateHaskell","Lua","Makefile","Matlab","Mediawiki","Modula3","Nasm","Objectivec","Ocaml","Pascal","Perl","Php","Postscript","Prolog","Python","Rhtml","Ruby","Scala","Scheme","Sgml","Sql","SqlMysql","SqlPostgresql","Tcl","Texinfo","Xml","Xslt","Yacc"]+languages = ["Ada","Alert","Asp","Awk","Bash","Bibtex","C","Cmake","Coldfusion","Commonlisp","Cpp","Css","D","Djangotemplate","Doxygen","Dtd","Eiffel","Erlang","Fortran","Haskell","Html","Java","Javadoc","Javascript","Json","Latex","Lex","LiterateHaskell","Lua","Makefile","Matlab","Mediawiki","Modula3","Nasm","Objectivec","Ocaml","Pascal","Perl","Php","Postscript","Prolog","Python","Relaxngcompact","Rhtml","Ruby","Scala","Scheme","Sgml","Sql","SqlMysql","SqlPostgresql","Tcl","Texinfo","Xml","Xslt","Yacc"]  -- | List of language extensions. languageExtensions :: [(String, String)]-languageExtensions = [("Ada", Ada.syntaxExtensions), ("Alert", Alert.syntaxExtensions), ("Asp", Asp.syntaxExtensions), ("Awk", Awk.syntaxExtensions), ("Bash", Bash.syntaxExtensions), ("Bibtex", Bibtex.syntaxExtensions), ("C", C.syntaxExtensions), ("Cmake", Cmake.syntaxExtensions), ("Coldfusion", Coldfusion.syntaxExtensions), ("Commonlisp", Commonlisp.syntaxExtensions), ("Cpp", Cpp.syntaxExtensions), ("Css", Css.syntaxExtensions), ("D", D.syntaxExtensions), ("Djangotemplate", Djangotemplate.syntaxExtensions), ("Doxygen", Doxygen.syntaxExtensions), ("Dtd", Dtd.syntaxExtensions), ("Eiffel", Eiffel.syntaxExtensions), ("Erlang", Erlang.syntaxExtensions), ("Fortran", Fortran.syntaxExtensions), ("Haskell", Haskell.syntaxExtensions), ("Html", Html.syntaxExtensions), ("Java", Java.syntaxExtensions), ("Javadoc", Javadoc.syntaxExtensions), ("Javascript", Javascript.syntaxExtensions), ("Json", Json.syntaxExtensions), ("Latex", Latex.syntaxExtensions), ("Lex", Lex.syntaxExtensions), ("LiterateHaskell", LiterateHaskell.syntaxExtensions), ("Lua", Lua.syntaxExtensions), ("Makefile", Makefile.syntaxExtensions), ("Matlab", Matlab.syntaxExtensions), ("Mediawiki", Mediawiki.syntaxExtensions), ("Modula3", Modula3.syntaxExtensions), ("Nasm", Nasm.syntaxExtensions), ("Objectivec", Objectivec.syntaxExtensions), ("Ocaml", Ocaml.syntaxExtensions), ("Pascal", Pascal.syntaxExtensions), ("Perl", Perl.syntaxExtensions), ("Php", Php.syntaxExtensions), ("Postscript", Postscript.syntaxExtensions), ("Prolog", Prolog.syntaxExtensions), ("Python", Python.syntaxExtensions), ("Rhtml", Rhtml.syntaxExtensions), ("Ruby", Ruby.syntaxExtensions), ("Scala", Scala.syntaxExtensions), ("Scheme", Scheme.syntaxExtensions), ("Sgml", Sgml.syntaxExtensions), ("Sql", Sql.syntaxExtensions), ("SqlMysql", SqlMysql.syntaxExtensions), ("SqlPostgresql", SqlPostgresql.syntaxExtensions), ("Tcl", Tcl.syntaxExtensions), ("Texinfo", Texinfo.syntaxExtensions), ("Xml", Xml.syntaxExtensions), ("Xslt", Xslt.syntaxExtensions), ("Yacc", Yacc.syntaxExtensions)]+languageExtensions = [("Ada", Ada.syntaxExtensions), ("Alert", Alert.syntaxExtensions), ("Asp", Asp.syntaxExtensions), ("Awk", Awk.syntaxExtensions), ("Bash", Bash.syntaxExtensions), ("Bibtex", Bibtex.syntaxExtensions), ("C", C.syntaxExtensions), ("Cmake", Cmake.syntaxExtensions), ("Coldfusion", Coldfusion.syntaxExtensions), ("Commonlisp", Commonlisp.syntaxExtensions), ("Cpp", Cpp.syntaxExtensions), ("Css", Css.syntaxExtensions), ("D", D.syntaxExtensions), ("Djangotemplate", Djangotemplate.syntaxExtensions), ("Doxygen", Doxygen.syntaxExtensions), ("Dtd", Dtd.syntaxExtensions), ("Eiffel", Eiffel.syntaxExtensions), ("Erlang", Erlang.syntaxExtensions), ("Fortran", Fortran.syntaxExtensions), ("Haskell", Haskell.syntaxExtensions), ("Html", Html.syntaxExtensions), ("Java", Java.syntaxExtensions), ("Javadoc", Javadoc.syntaxExtensions), ("Javascript", Javascript.syntaxExtensions), ("Json", Json.syntaxExtensions), ("Latex", Latex.syntaxExtensions), ("Lex", Lex.syntaxExtensions), ("LiterateHaskell", LiterateHaskell.syntaxExtensions), ("Lua", Lua.syntaxExtensions), ("Makefile", Makefile.syntaxExtensions), ("Matlab", Matlab.syntaxExtensions), ("Mediawiki", Mediawiki.syntaxExtensions), ("Modula3", Modula3.syntaxExtensions), ("Nasm", Nasm.syntaxExtensions), ("Objectivec", Objectivec.syntaxExtensions), ("Ocaml", Ocaml.syntaxExtensions), ("Pascal", Pascal.syntaxExtensions), ("Perl", Perl.syntaxExtensions), ("Php", Php.syntaxExtensions), ("Postscript", Postscript.syntaxExtensions), ("Prolog", Prolog.syntaxExtensions), ("Python", Python.syntaxExtensions), ("Relaxngcompact", Relaxngcompact.syntaxExtensions), ("Rhtml", Rhtml.syntaxExtensions), ("Ruby", Ruby.syntaxExtensions), ("Scala", Scala.syntaxExtensions), ("Scheme", Scheme.syntaxExtensions), ("Sgml", Sgml.syntaxExtensions), ("Sql", Sql.syntaxExtensions), ("SqlMysql", SqlMysql.syntaxExtensions), ("SqlPostgresql", SqlPostgresql.syntaxExtensions), ("Tcl", Tcl.syntaxExtensions), ("Texinfo", Texinfo.syntaxExtensions), ("Xml", Xml.syntaxExtensions), ("Xslt", Xslt.syntaxExtensions), ("Yacc", Yacc.syntaxExtensions)]  -- | Returns a list of languages appropriate for the given file extension. languagesByExtension :: String -> [String]@@ -85,7 +86,13 @@             -> String                        -- ^ Source code to highlight             -> Either String [SourceLine]    -- ^ Either error message or result highlightAs lang =-  case (map toLower lang) of+  let lang'  = map toLower lang+      lang'' = if lang' `elem` map (map toLower) languages+                  then lang'+                  else case languagesByExtension lang' of+                            [l]  -> map toLower l  -- go by extension if unambiguous+                            _    -> lang'+  in  case lang'' of         "ada" -> Ada.highlight         "alert" -> Alert.highlight         "asp" -> Asp.highlight@@ -128,6 +135,7 @@         "postscript" -> Postscript.highlight         "prolog" -> Prolog.highlight         "python" -> Python.highlight+        "relaxngcompact" -> Relaxngcompact.highlight         "rhtml" -> Rhtml.highlight         "ruby" -> Ruby.highlight         "scala" -> Scala.highlight@@ -141,4 +149,4 @@         "xml" -> Xml.highlight         "xslt" -> Xslt.highlight         "yacc" -> Yacc.highlight-        _ -> (\_ -> Left ("Unknown language ++ " ++ lang))+        _ -> (\_ -> Left ("Unknown language: " ++ lang))
+ Text/Highlighting/Kate/Syntax/Relaxngcompact.hs view
@@ -0,0 +1,108 @@+{- This module was generated from data in the Kate syntax highlighting file relaxngcompact.xml, version 0.2,+   by  Rintze Zelle -}++module Text.Highlighting.Kate.Syntax.Relaxngcompact ( highlight, parseExpression, syntaxName, syntaxExtensions ) where+import Text.Highlighting.Kate.Definitions+import Text.Highlighting.Kate.Common+import Text.ParserCombinators.Parsec+import Data.List (nub)+import Data.Map (fromList)+import Data.Maybe (fromMaybe)++-- | Full name of language.+syntaxName :: String+syntaxName = "RelaxNG-Compact"++-- | Filename extensions for this language.+syntaxExtensions :: String+syntaxExtensions = "*.rnc"++-- | Highlight source code using this syntax definition.+highlight :: String -> Either String [SourceLine]+highlight input =+  case runParser parseSource startingState "source" input of+    Left err     -> Left $ show err+    Right result -> Right result++-- | Parse an expression using appropriate local context.+parseExpression :: GenParser Char SyntaxState LabeledSource+parseExpression = do+  st <- getState+  let oldLang = synStLanguage st+  setState $ st { synStLanguage = "RelaxNG-Compact" }+  context <- currentContext <|> (pushContext "Normal Text" >> currentContext)+  result <- parseRules context+  updateState $ \st -> st { synStLanguage = oldLang }+  return result++parseSource = do +  lineContents <- lookAhead wholeLine+  updateState $ \st -> st { synStCurrentLine = lineContents }+  result <- manyTill parseSourceLine eof+  return $ map normalizeHighlighting result++startingState = SyntaxState {synStContexts = fromList [("RelaxNG-Compact",["Normal Text"])], synStLanguage = "RelaxNG-Compact", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}++parseSourceLine = manyTill parseExpressionInternal pEndLine++pEndLine = do+  newline <|> (eof >> return '\n')+  context <- currentContext+  case context of+    "Normal Text" -> return ()+    "Comments" -> (popContext >> return ())+    "String" -> return ()+    "Node Names" -> (popContext >> return ())+    "Definitions" -> (popContext >> return ())+    _ -> return ()+  lineContents <- lookAhead wholeLine+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }++withAttribute attr txt = do+  if null txt+     then fail "Parser matched no text"+     else return ()+  let style = fromMaybe "" $ lookup attr styles+  st <- getState+  let oldCharsParsed = synStCharsParsedInLine st+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } +  return (nub [style, attr], txt)++styles = [("Normal Text","Normal"),("Comments","Comment"),("String","String"),("Keywords","Keyword"),("Datatypes","DataType"),("Node Names","Others"),("Definitions","Function")]++parseExpressionInternal = do+  context <- currentContext+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))++defaultAttributes = [("Normal Text","Normal Text"),("Comments","Comments"),("String","String"),("Node Names","Node Names"),("Definitions","Definitions")]++parseRules "Normal Text" = +  do (attr, result) <- (((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Comments") >>~ pushContext "Comments")+                        <|>+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")+                        <|>+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\" ["default","datatypes","div","empty","external","grammar","include","inherit","list","mixed","namespace","notAllowed","parent","start","token"] >>= withAttribute "Keywords"))+                        <|>+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\" ["attribute","element"] >>= withAttribute "Keywords") >>~ pushContext "Node Names")+                        <|>+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\" ["string","text","xsd:anyURI","xsd:base64Binary","xsd:boolean","xsd:byte","xsd:date","xsd:dateTime","xsd:decimal","xsd:double","xsd:duration","xsd:ENTITIES","xsd:ENTITY","xsd:float","xsd:gDay","xsd:gMonth","xsd:gMonthDay","xsd:gYear","xsd:gYearMonth","xsd:hexBinary","xsd:ID","xsd:IDREF","xsd:IDREFS","xsd:int","xsd:integer","xsd:language","xsd:long","xsd:Name","xsd:NCName","xsd:negativeInteger","xsd:NMTOKEN","xsd:NMTOKENS","xsd:nonNegativeInteger","xsd:nonPositiveInteger","xsd:normalizedString","xsd:NOTATION","xsd:positiveInteger","xsd:QName","xsd:short","xsd:string","xsd:time","xsd:token","xsd:unsignedByte","xsd:unsignedInt","xsd:unsignedLong","xsd:unsignedShort"] >>= withAttribute "Datatypes"))+                        <|>+                        ((lookAhead (pRegExpr (compileRegex "[\\w\\.-]+[\\s]+=")) >> return ([],"") ) >>~ pushContext "Definitions"))+     return (attr, result)++parseRules "Comments" = +  pzero++parseRules "String" = +  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))+     return (attr, result)++parseRules "Node Names" = +  do (attr, result) <- ((lookAhead (pDetectChar False '{') >> return ([],"") ) >>~ (popContext >> return ()))+     return (attr, result)++parseRules "Definitions" = +  do (attr, result) <- ((lookAhead (pDetectChar False '=') >> return ([],"") ) >>~ (popContext >> popContext >> return ()))+     return (attr, result)++parseRules x = fail $ "Unknown context" ++ x
highlighting-kate.cabal view
@@ -1,28 +1,18 @@ Name:                highlighting-kate-Version:             0.2.4+Version:             0.2.5 Cabal-Version:       >= 1.2 Build-Type:          Simple Category:            Text Synopsis:            Syntax highlighting Description:         highlighting-kate is a syntax highlighting library-                     with support for over 50 languages. The syntax+                     with support for over fifty languages. The syntax                      parsers are automatically generated from Kate                      syntax descriptions (<http://kate-editor.org/>),                      so any syntax supported by Kate can be added.                      An (optional) command-line program is provided, along                      with a utility for generating new parsers from Kate                      XML syntax descriptions.-                     .-                     Currently the following languages are supported:-                     Ada, Asp, Awk, Bash, Bibtex, C, Cmake, Coldfusion,-                     Commonlisp, Cpp, Css, D, Djangotemplate, Doxygen,-                     Dtd, Eiffel, Erlang, Fortran, Haskell, Html,-                     Java, Javadoc, Javascript, Json, Latex, Lex,-                     LiterateHaskell, Lua, Makefile, Matlab, Mediawiki,-                     Modula3, Nasm, Objectivec, Ocaml, Pascal, Perl,-                     Php, Postscript, Prolog, Python, Rhtml, Ruby,-                     Scala, Scheme, Sgml, Sql, SqlMysql, SqlPostgresql,-                     Tcl, Texinfo, Xml, Xslt, Yacc.+ License:             GPL License-file:        LICENSE Author:              John MacFarlane@@ -84,6 +74,7 @@                      xml/postscript.xml                      xml/prolog.xml                      xml/python.xml+                     xml/relaxngcompact.xml                      xml/rhtml.xml                      xml/ruby.xml                      xml/scala.xml@@ -106,7 +97,7 @@  Library   if flag(splitBase)-    Build-Depends:   base >= 3, containers+    Build-Depends:   base >= 3 && < 5, containers   else     Build-Depends:   base < 3   Build-Depends:     parsec < 3, pcre-light, xhtml@@ -156,6 +147,7 @@                      Text.Highlighting.Kate.Syntax.Postscript                      Text.Highlighting.Kate.Syntax.Prolog                      Text.Highlighting.Kate.Syntax.Python+                     Text.Highlighting.Kate.Syntax.Relaxngcompact                      Text.Highlighting.Kate.Syntax.Rhtml                      Text.Highlighting.Kate.Syntax.Ruby                      Text.Highlighting.Kate.Syntax.Scala
+ xml/relaxngcompact.xml view
@@ -0,0 +1,108 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<language name="RelaxNG-Compact" version="0.2" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">+  <highlighting>+    <list name="Keywords">+      <item> default </item>+      <item> datatypes </item>+      <item> div </item>+      <item> empty </item>+      <item> external </item>+      <item> grammar </item>+      <item> include </item>+      <item> inherit </item>+      <item> list </item>+      <item> mixed </item>+      <item> namespace </item>+      <item> notAllowed </item>+      <item> parent </item>+      <item> start </item>+      <item> token </item>      +    </list>+    <list name="Node Names">+      <item> attribute </item>+      <item> element </item>    +    </list>    +    <list name="Datatypes">+      <item> string </item>+      <item> text </item>    +      <item> xsd:anyURI </item>+      <item> xsd:base64Binary </item>+      <item> xsd:boolean </item>+      <item> xsd:byte </item>+      <item> xsd:date </item>+      <item> xsd:dateTime </item>+      <item> xsd:decimal </item>+      <item> xsd:double </item>+      <item> xsd:duration </item>+      <item> xsd:ENTITIES </item>+      <item> xsd:ENTITY </item>+      <item> xsd:float </item>+      <item> xsd:gDay </item>+      <item> xsd:gMonth </item>+      <item> xsd:gMonthDay </item>+      <item> xsd:gYear </item>+      <item> xsd:gYearMonth </item>+      <item> xsd:hexBinary </item>+      <item> xsd:ID </item>+      <item> xsd:IDREF </item>+      <item> xsd:IDREFS </item>+      <item> xsd:int </item>+      <item> xsd:integer </item>+      <item> xsd:language </item>+      <item> xsd:long </item>+      <item> xsd:Name </item>+      <item> xsd:NCName </item>+      <item> xsd:negativeInteger </item>+      <item> xsd:NMTOKEN </item>+      <item> xsd:NMTOKENS </item>+      <item> xsd:nonNegativeInteger </item>+      <item> xsd:nonPositiveInteger </item>+      <item> xsd:normalizedString </item>+      <item> xsd:NOTATION </item>+      <item> xsd:positiveInteger </item>+      <item> xsd:QName </item>+      <item> xsd:short </item>+      <item> xsd:string </item> +      <item> xsd:time </item>+      <item> xsd:token </item>+      <item> xsd:unsignedByte </item>+      <item> xsd:unsignedInt </item>+      <item> xsd:unsignedLong </item>+      <item> xsd:unsignedShort </item>+    </list>+    <contexts>+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >+        <DetectChar attribute="Comments" char="#" firstNonSpace="true" context="Comments"/>+	<DetectChar attribute="String" char="&quot;" context="String" />+	<keyword attribute="Keywords" context="#stay" String="Keywords" />+	<keyword attribute="Keywords" context="Node Names" String="Node Names" />+	<keyword attribute="Datatypes" context="#stay" String="Datatypes" />+	<RegExpr attribute="Definitions" context="Definitions" String="[\w\.-]+[\s]+=" lookAhead="true" />+      </context>+      <context attribute="Comments" lineEndContext="#pop" name="Comments" >+      </context>+      <context attribute="String" lineEndContext="#stay" name="String" >+        <DetectChar attribute="String" context="#pop" char="&quot;" />+      </context>+      <context attribute="Node Names" lineEndContext="#pop" name="Node Names" >+        <DetectChar attribute="Node Names" context="#pop" char="{" lookAhead="true" />+      </context>+      <context attribute="Definitions" lineEndContext="#pop" name="Definitions" >+        <DetectChar attribute="Definitions" context="#pop#pop" char="=" lookAhead="true" />+      </context>+    </contexts>+    <itemDatas>+      <itemData name="Normal Text" defStyleNum="dsNormal" />+      <itemData name="Comments" defStyleNum="dsComment" />+      <itemData name="String" defStyleNum="dsString" />+      <itemData name="Keywords" defStyleNum="dsKeyword" />+      <itemData name="Datatypes" defStyleNum="dsDataType" />+      <itemData name="Node Names" defStyleNum="dsOthers" />+      <itemData name="Definitions" defStyleNum="dsFunction" />+    </itemDatas>+  </highlighting>+  <general>+    <keywords weakDeliminator="-:"/>+  </general>+</language>