rouge 3.9.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/common_lisp.rb +1 -1
- data/lib/rouge/lexers/http.rb +1 -1
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/version.rb +1 -1
- metadata +12 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3fb254c48c7225eb55006a7e1fb0cd713afa34faf35d4f4c92bec44c663a7a49
         | 
| 4 | 
            +
              data.tar.gz: 0d5193efc0336f18a8012f09135deb4eb988051367b78928c5b7bc61f3f0b49c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 41128ed9650fe8aa804d9c93c44ebaf8f93131ee156ed1b57acfd1b790f435cf9f7f2233fd7ca3701b206b7131d979a2517abbf87da6c01ca931ec8d7ac4c04b
         | 
| 7 | 
            +
              data.tar.gz: 255518b66c766562b22005ade1eebc7bf092e3b29b1f5fe298b0497801a86de2e350e726b57ac52380d58e9aa28bfb84cff2f917759053548704bd2bb4bf4b8c
         | 
    
        data/lib/rouge/demos/jsl
    ADDED
    
    
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            node gen_x_v1() returns (x:real) = loop 0.0<x and x<42.0
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            node gen_x_v2() returns (x:real) = 
         | 
| 4 | 
            +
              loop { 0.0<x and x<42.0 fby loop [20] x = pre x }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            node gen_x_v3() returns (target:real; x:real=0.0) =
         | 
| 7 | 
            +
              run target := gen_x_v2() in
         | 
| 8 | 
            +
              loop { x = (pre x + target) / 2.0 }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            let inertia=0.6
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            node gen_x_v4()  returns (target:real; x:real=0.0) =
         | 
| 13 | 
            +
              run target := gen_x_v2() in
         | 
| 14 | 
            +
              exist px,ppx : real = 0.0 in
         | 
| 15 | 
            +
              loop { 
         | 
| 16 | 
            +
                  px = pre x and ppx = pre px and
         | 
| 17 | 
            +
                  x = (px+target) / 2.0+inertia*(px-ppx) 
         | 
| 18 | 
            +
              }
         | 
| @@ -0,0 +1,156 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*- #
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Rouge
         | 
| 5 | 
            +
              module Lexers
         | 
| 6 | 
            +
                class Clean < RegexLexer
         | 
| 7 | 
            +
                  title "Clean"
         | 
| 8 | 
            +
                  desc "The Clean programming language (clean.cs.ru.nl)"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  tag 'clean'
         | 
| 11 | 
            +
                  filenames '*.dcl', '*.icl'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def self.keywords
         | 
| 14 | 
            +
                    @keywords ||= Set.new %w(
         | 
| 15 | 
            +
                      if otherwise
         | 
| 16 | 
            +
                      let in
         | 
| 17 | 
            +
                      with where
         | 
| 18 | 
            +
                      case of
         | 
| 19 | 
            +
                      infix infixl infixr
         | 
| 20 | 
            +
                      class instance
         | 
| 21 | 
            +
                      generic derive
         | 
| 22 | 
            +
                      special
         | 
| 23 | 
            +
                      implementation definition system module
         | 
| 24 | 
            +
                      from import qualified as
         | 
| 25 | 
            +
                      dynamic
         | 
| 26 | 
            +
                      code inline foreign export ccall stdcall
         | 
| 27 | 
            +
                    )
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  # These are literal patterns common to the ABC intermediate language and
         | 
| 31 | 
            +
                  # Clean. Clean has more extensive literal patterns (see :basic below).
         | 
| 32 | 
            +
                  state :common_literals do
         | 
| 33 | 
            +
                    rule %r/'(?:[^'\\]|\\(?:x[0-9a-fA-F]+|\d+|.))'/, Str::Char
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    rule %r/[+~-]?\d+\.\d+(?:E[+-]?\d+)?\b/, Num::Float
         | 
| 36 | 
            +
                    rule %r/[+~-]?\d+E[+-]?\d+\b/, Num::Float
         | 
| 37 | 
            +
                    rule %r/[+~-]?\d+/, Num::Integer
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    rule %r/"/, Str::Double, :string
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  state :basic do
         | 
| 43 | 
            +
                    rule %r/\s+/m, Text::Whitespace
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    rule %r/\/\/\*.*/, Comment::Doc
         | 
| 46 | 
            +
                    rule %r/\/\/.*/, Comment::Single
         | 
| 47 | 
            +
                    rule %r/\/\*\*/, Comment::Doc, :comment_doc
         | 
| 48 | 
            +
                    rule %r/\/\*/, Comment::Multiline, :comment
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    rule %r/[+~-]?0[0-7]+/, Num::Oct
         | 
| 51 | 
            +
                    rule %r/[+~-]?0x[0-9a-fA-F]+/, Num::Hex
         | 
| 52 | 
            +
                    mixin :common_literals
         | 
| 53 | 
            +
                    rule %r/(\[)(\s*)(')(?=.*?'\])/ do
         | 
| 54 | 
            +
                      groups Punctuation, Text::Whitespace, Str::Single, Punctuation
         | 
| 55 | 
            +
                      push :charlist
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  # nested commenting
         | 
| 60 | 
            +
                  state :comment_doc do
         | 
| 61 | 
            +
                    rule %r/\*\//, Comment::Doc, :pop!
         | 
| 62 | 
            +
                    rule %r/\/\/.*/, Comment::Doc # Singleline comments in multiline comments are skipped
         | 
| 63 | 
            +
                    rule %r/\/\*/, Comment::Doc, :comment
         | 
| 64 | 
            +
                    rule %r/[^*\/]+/, Comment::Doc
         | 
| 65 | 
            +
                    rule %r/[*\/]/, Comment::Doc
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  # This is the same as the above, but with Multiline instead of Doc
         | 
| 69 | 
            +
                  state :comment do
         | 
| 70 | 
            +
                    rule %r/\*\//, Comment::Multiline, :pop!
         | 
| 71 | 
            +
                    rule %r/\/\/.*/, Comment::Multiline # Singleline comments in multiline comments are skipped
         | 
| 72 | 
            +
                    rule %r/\/\*/, Comment::Multiline, :comment
         | 
| 73 | 
            +
                    rule %r/[^*\/]+/, Comment::Multiline
         | 
| 74 | 
            +
                    rule %r/[*\/]/, Comment::Multiline
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                  state :root do
         | 
| 78 | 
            +
                    mixin :basic
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                    rule %r/code(\s+inline)?\s*{/, Comment::Preproc, :abc
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                    rule %r/_*[a-z][\w_`]*/ do |m|
         | 
| 83 | 
            +
                      if self.class.keywords.include?(m[0])
         | 
| 84 | 
            +
                        token Keyword
         | 
| 85 | 
            +
                      else
         | 
| 86 | 
            +
                        token Name
         | 
| 87 | 
            +
                      end
         | 
| 88 | 
            +
                    end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    rule %r/_*[A-Z][\w_`]*/ do |m|
         | 
| 91 | 
            +
                      if m[0]=='True' || m[0]=='False'
         | 
| 92 | 
            +
                        token Keyword::Constant
         | 
| 93 | 
            +
                      else
         | 
| 94 | 
            +
                        token Keyword::Type
         | 
| 95 | 
            +
                      end
         | 
| 96 | 
            +
                    end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    rule %r/[^\w_\s`]/, Punctuation
         | 
| 99 | 
            +
                    rule %r/_\b/, Punctuation
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  state :escapes do
         | 
| 103 | 
            +
                    rule %r/\\x[0-9a-fA-F]{1,2}/i, Str::Escape
         | 
| 104 | 
            +
                    rule %r/\\d\d{0,3}/i, Str::Escape
         | 
| 105 | 
            +
                    rule %r/\\0[0-7]{0,3}/, Str::Escape
         | 
| 106 | 
            +
                    rule %r/\\[0-7]{1,3}/, Str::Escape
         | 
| 107 | 
            +
                    rule %r/\\[nrfbtv\\"']/, Str::Escape
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  state :string do
         | 
| 111 | 
            +
                    rule %r/"/, Str::Double, :pop!
         | 
| 112 | 
            +
                    mixin :escapes
         | 
| 113 | 
            +
                    rule %r/[^\\"]+/, Str::Double
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  state :charlist do
         | 
| 117 | 
            +
                    rule %r/(')(\])/ do
         | 
| 118 | 
            +
                      groups Str::Single, Punctuation
         | 
| 119 | 
            +
                      pop!
         | 
| 120 | 
            +
                    end
         | 
| 121 | 
            +
                    mixin :escapes
         | 
| 122 | 
            +
                    rule %r/[^\\']/, Str::Single
         | 
| 123 | 
            +
                  end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                  state :abc_basic do
         | 
| 126 | 
            +
                    rule %r/\s+/, Text::Whitespace
         | 
| 127 | 
            +
                    rule %r/\|.*/, Comment::Single
         | 
| 128 | 
            +
                    mixin :common_literals
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                  # The ABC intermediate language can be included, similar to C's inline
         | 
| 132 | 
            +
                  # assembly. For some information about ABC, see:
         | 
| 133 | 
            +
                  # https://en.wikipedia.org/wiki/Clean_(programming_language)#The_ABC-Machine
         | 
| 134 | 
            +
                  state :abc do
         | 
| 135 | 
            +
                    mixin :abc_basic
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                    rule %r/}/, Comment::Preproc, :pop!
         | 
| 138 | 
            +
                    rule %r/\.\w*/, Keyword, :abc_rest_of_line
         | 
| 139 | 
            +
                    rule %r/[\w_]+/, Name::Builtin, :abc_rest_of_line
         | 
| 140 | 
            +
                  end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  state :abc_rest_of_line do
         | 
| 143 | 
            +
                    rule %r/\n/, Text::Whitespace, :pop!
         | 
| 144 | 
            +
                    rule %r/}/ do
         | 
| 145 | 
            +
                      token Comment::Preproc
         | 
| 146 | 
            +
                      pop!
         | 
| 147 | 
            +
                      pop!
         | 
| 148 | 
            +
                    end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                    mixin :abc_basic
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                    rule %r/\S+/, Name
         | 
| 153 | 
            +
                  end
         | 
| 154 | 
            +
                end
         | 
| 155 | 
            +
              end
         | 
| 156 | 
            +
            end
         | 
| @@ -7,7 +7,7 @@ module Rouge | |
| 7 7 | 
             
                  title "Common Lisp"
         | 
| 8 8 | 
             
                  desc "The Common Lisp variant of Lisp (common-lisp.net)"
         | 
| 9 9 | 
             
                  tag 'common_lisp'
         | 
| 10 | 
            -
                  aliases 'cl', 'common-lisp', 'elisp', 'emacs-lisp'
         | 
| 10 | 
            +
                  aliases 'cl', 'common-lisp', 'elisp', 'emacs-lisp', 'lisp'
         | 
| 11 11 |  | 
| 12 12 | 
             
                  filenames '*.cl', '*.lisp', '*.asd', '*.el' # used for Elisp too
         | 
| 13 13 | 
             
                  mimetypes 'text/x-common-lisp'
         | 
    
        data/lib/rouge/lexers/http.rb
    CHANGED
    
    
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*- #
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Rouge
         | 
| 5 | 
            +
              module Lexers
         | 
| 6 | 
            +
                class JSL < RegexLexer
         | 
| 7 | 
            +
                  title "JSL"
         | 
| 8 | 
            +
                  desc "The JMP Scripting Language (JSL) (jmp.com)"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  tag 'jsl'
         | 
| 11 | 
            +
                  filenames '*.jsl'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  state :root do
         | 
| 14 | 
            +
                    rule %r/\s+/m, Text::Whitespace
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    rule %r(//.*?$), Comment::Single
         | 
| 17 | 
            +
                    rule %r(/\*.*?\*/)m, Comment::Multiline
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    # messages
         | 
| 20 | 
            +
                    rule %r/(<<)(.*?)(\(|;)/ do |m|
         | 
| 21 | 
            +
                      groups Operator, Name::Function, Punctuation
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                    # covers built-in and custom functions
         | 
| 25 | 
            +
                    rule %r/([a-z_][\w\s'%.\\]*)(\()/i do |m|
         | 
| 26 | 
            +
                      groups Keyword, Punctuation
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    rule %r/\b[+-]?(?:[0-9]+(?:\.[0-9]+)?|\.[0-9]+|\.)(?:e[+-]?[0-9]+)?i?\b/i, Num
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    rule %r/\d{2}(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}(\d{2})?(:\d{2}:\d{2}(:\d{2}(\.\d*)?)?)?/i, Literal::Date
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    rule %r/::[a-z_][\w\s'%.\\]*/i, Name::Variable
         | 
| 34 | 
            +
                    rule %r/:\w+/, Name
         | 
| 35 | 
            +
                    rule %r/[a-z_][\w\s'%.\\]*/i, Name::Variable
         | 
| 36 | 
            +
                    rule %r/"(?:\\!"|[^"])*?"n/m, Name::Variable
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    rule %r/(")(\\\[)(.*?)(\]\\)(")/m do
         | 
| 39 | 
            +
                      groups Str::Double, Str::Escape, Str::Double, Str::Escape, Str::Double  # escaped string
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
                    rule %r/"/, Str::Double, :dq
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    rule %r/[-+*\/!%&<>\|=:]/, Operator
         | 
| 44 | 
            +
                    rule %r/[\[\](){},;]/, Punctuation
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  state :dq do
         | 
| 48 | 
            +
                    rule %r/\\![btrnNf0\\"]/, Str::Escape
         | 
| 49 | 
            +
                    rule %r/\\/, Str::Double
         | 
| 50 | 
            +
                    rule %r/"/, Str::Double, :pop!
         | 
| 51 | 
            +
                    rule %r/[^\\"]*/m, Str::Double
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
            end
         | 
| @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*- #
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Rouge
         | 
| 5 | 
            +
              module Lexers
         | 
| 6 | 
            +
                class Lustre < RegexLexer
         | 
| 7 | 
            +
                  title "Lustre"
         | 
| 8 | 
            +
                  desc 'The Lustre programming language (Verimag)'
         | 
| 9 | 
            +
                  tag 'lustre'
         | 
| 10 | 
            +
                  filenames '*.lus'
         | 
| 11 | 
            +
                  mimetypes 'text/x-lustre'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def self.keywords
         | 
| 14 | 
            +
                    @keywords ||= Set.new %w(
         | 
| 15 | 
            +
                      extern unsafe assert const current enum function let node operator
         | 
| 16 | 
            +
                      returns step struct tel type var model package needs provides uses is
         | 
| 17 | 
            +
                      body end include merge
         | 
| 18 | 
            +
                    )
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def self.word_operators
         | 
| 22 | 
            +
                    @word_operators ||= Set.new %w(
         | 
| 23 | 
            +
                      div and xor mod or not nor if then else fby pre when with
         | 
| 24 | 
            +
                    )
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def self.primitives
         | 
| 28 | 
            +
                    @primitives ||= Set.new %w(int real bool)
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  operator = %r([,!$%&*+./:<=>?@^|~#-]+)
         | 
| 32 | 
            +
                  id = /[a-z_][\w']*/i
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  state :root do
         | 
| 35 | 
            +
                    rule %r/\s+/m, Text
         | 
| 36 | 
            +
                    rule %r/false|true/, Keyword::Constant
         | 
| 37 | 
            +
                    rule %r(\-\-.*), Comment::Single
         | 
| 38 | 
            +
                    rule %r(/\*.*?\*/)m, Comment::Multiline
         | 
| 39 | 
            +
                    rule %r(\(\*.*?\*\))m, Comment::Multiline
         | 
| 40 | 
            +
                    rule id do |m|
         | 
| 41 | 
            +
                      match = m[0]
         | 
| 42 | 
            +
                      if self.class.keywords.include? match
         | 
| 43 | 
            +
                        token Keyword
         | 
| 44 | 
            +
                      elsif self.class.word_operators.include? match
         | 
| 45 | 
            +
                        token Operator::Word
         | 
| 46 | 
            +
                      elsif self.class.primitives.include? match
         | 
| 47 | 
            +
                        token Keyword::Type
         | 
| 48 | 
            +
                      else
         | 
| 49 | 
            +
                        token Name
         | 
| 50 | 
            +
                      end
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    rule %r/[(){}\[\];]+/, Punctuation
         | 
| 54 | 
            +
                    rule operator, Operator
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    rule %r/-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
         | 
| 57 | 
            +
                    rule %r/\d[\d_]*/, Num::Integer
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    rule %r/'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
         | 
| 60 | 
            +
                    rule %r/'[.]'/, Str::Char
         | 
| 61 | 
            +
                    rule %r/"/, Str::Double, :string
         | 
| 62 | 
            +
                    rule %r/[~?]#{id}/, Name::Variable
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  state :string do
         | 
| 66 | 
            +
                    rule %r/[^\\"]+/, Str::Double
         | 
| 67 | 
            +
                    mixin :escape_sequence
         | 
| 68 | 
            +
                    rule %r/\\\n/, Str::Double
         | 
| 69 | 
            +
                    rule %r/"/, Str::Double, :pop!
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  state :escape_sequence do
         | 
| 73 | 
            +
                    rule %r/\\[\\"'ntbr]/, Str::Escape
         | 
| 74 | 
            +
                    rule %r/\\\d{3}/, Str::Escape
         | 
| 75 | 
            +
                    rule %r/\\x\h{2}/, Str::Escape
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*- #
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            # adapted from lustre.rf (adapted from ocaml.rb), hence some ocaml-ism migth remains
         | 
| 5 | 
            +
            module Rouge
         | 
| 6 | 
            +
              module Lexers
         | 
| 7 | 
            +
                load_lexer 'lustre.rb'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                class Lutin < Lustre
         | 
| 10 | 
            +
                  title "Lutin"
         | 
| 11 | 
            +
                  desc 'The Lutin programming language (Verimag)'
         | 
| 12 | 
            +
                  tag 'lutin'
         | 
| 13 | 
            +
                  filenames '*.lut'
         | 
| 14 | 
            +
                  mimetypes 'text/x-lutin'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def self.keywords
         | 
| 17 | 
            +
                    @keywords ||= Set.new %w(
         | 
| 18 | 
            +
                      let in node extern system returns weak strong assert raise try catch
         | 
| 19 | 
            +
                      trap do exist erun run type ref exception include false true 
         | 
| 20 | 
            +
                    )
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def self.word_operators
         | 
| 24 | 
            +
                    @word_operators ||= Set.new %w(
         | 
| 25 | 
            +
                       div and xor mod or not nor if then else pre) 
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  def self.primitives
         | 
| 29 | 
            +
                    @primitives ||= Set.new %w(int real bool trace loop fby)
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,129 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*- #
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Rouge
         | 
| 5 | 
            +
              module Lexers
         | 
| 6 | 
            +
                class SPARQL < RegexLexer
         | 
| 7 | 
            +
                  title "SPARQL"
         | 
| 8 | 
            +
                  desc "Semantic Query Language, for RDF data"
         | 
| 9 | 
            +
                  tag 'sparql'
         | 
| 10 | 
            +
                  filenames '*.rq'
         | 
| 11 | 
            +
                  mimetypes 'application/sparql-query'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def self.builtins
         | 
| 14 | 
            +
                    @builtins = Set.new %w[
         | 
| 15 | 
            +
                      ABS AVG BNODE BOUND CEIL COALESCE CONCAT CONTAINS COUNT DATATYPE DAY
         | 
| 16 | 
            +
                      ENCODE_FOR_URI FLOOR GROUP_CONCAT HOURS IF IRI isBLANK isIRI
         | 
| 17 | 
            +
                      isLITERAL isNUMERIC isURI LANG LANGMATCHES LCASE MAX MD5 MIN MINUTES
         | 
| 18 | 
            +
                      MONTH NOW RAND REGEX REPLACE ROUND SAMETERM SAMPLE SECONDS SEPARATOR
         | 
| 19 | 
            +
                      SHA1 SHA256 SHA384 SHA512 STR STRAFTER STRBEFORE STRDT STRENDS
         | 
| 20 | 
            +
                      STRLANG STRLEN STRSTARTS STRUUID SUBSTR SUM TIMEZONE TZ UCASE URI
         | 
| 21 | 
            +
                      UUID YEAR
         | 
| 22 | 
            +
                    ]
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  def self.keywords
         | 
| 26 | 
            +
                    @keywords = Set.new %w[
         | 
| 27 | 
            +
                      ADD ALL AS ASC ASK BASE BIND BINDINGS BY CLEAR CONSTRUCT COPY CREATE
         | 
| 28 | 
            +
                      DATA DEFAULT DELETE DESC DESCRIBE DISTINCT DROP EXISTS FILTER FROM
         | 
| 29 | 
            +
                      GRAPH GROUP BY HAVING IN INSERT LIMIT LOAD MINUS MOVE NAMED NOT
         | 
| 30 | 
            +
                      OFFSET OPTIONAL ORDER PREFIX SELECT REDUCED SERVICE SILENT TO UNDEF
         | 
| 31 | 
            +
                      UNION USING VALUES WHERE WITH
         | 
| 32 | 
            +
                    ]
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  state :root do
         | 
| 36 | 
            +
                    rule %r(\s+)m, Text::Whitespace
         | 
| 37 | 
            +
                    rule %r(#.*), Comment::Single
         | 
| 38 | 
            +
                    
         | 
| 39 | 
            +
                    rule %r("""), Str::Double, :string_double_literal
         | 
| 40 | 
            +
                    rule %r("), Str::Double, :string_double
         | 
| 41 | 
            +
                    rule %r('''), Str::Single, :string_single_literal
         | 
| 42 | 
            +
                    rule %r('), Str::Single, :string_single
         | 
| 43 | 
            +
                   
         | 
| 44 | 
            +
                    rule %r([$?]\w+), Name::Variable
         | 
| 45 | 
            +
                    rule %r((\w*:)(\w+)?) do |m|
         | 
| 46 | 
            +
                      token Name::Namespace, m[1]
         | 
| 47 | 
            +
                      token Str::Symbol, m[2]
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
                    rule %r(<[^>]*>), Name::Namespace
         | 
| 50 | 
            +
                    rule %r(true|false)i, Keyword::Constant
         | 
| 51 | 
            +
                    
         | 
| 52 | 
            +
                    rule %r([A-Z]\w+\b)i do |m|
         | 
| 53 | 
            +
                      if self.class.builtins.include? m[0].upcase
         | 
| 54 | 
            +
                        token Name::Builtin
         | 
| 55 | 
            +
                      elsif self.class.keywords.include? m[0].upcase
         | 
| 56 | 
            +
                        token Keyword
         | 
| 57 | 
            +
                      else
         | 
| 58 | 
            +
                        token Error
         | 
| 59 | 
            +
                      end
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                    rule %r([+\-]?(?:\d+\.\d*|\.\d+)(?:[e][+\-]?[0-9]+)?)i, Num::Float
         | 
| 63 | 
            +
                    rule %r([+\-]?\d+), Num::Integer
         | 
| 64 | 
            +
                    rule %r([\]\[(){}.,;=]), Punctuation
         | 
| 65 | 
            +
                    rule %r([/?*+=!<>]|&&|\|\||\^\^), Operator
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  state :string_double_common do
         | 
| 69 | 
            +
                    mixin :string_escapes
         | 
| 70 | 
            +
                    rule %r(\\), Str::Double
         | 
| 71 | 
            +
                    rule %r([^"\\]+), Str::Double
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  state :string_double do
         | 
| 75 | 
            +
                    rule %r(") do
         | 
| 76 | 
            +
                      token Str::Double
         | 
| 77 | 
            +
                      goto :string_end
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
                    mixin :string_double_common
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  state :string_double_literal do
         | 
| 83 | 
            +
                    rule %r(""") do
         | 
| 84 | 
            +
                      token Str::Double
         | 
| 85 | 
            +
                      goto :string_end
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
                    rule %r("), Str::Double
         | 
| 88 | 
            +
                    mixin :string_double_common
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  state :string_single_common do
         | 
| 92 | 
            +
                    mixin :string_escapes
         | 
| 93 | 
            +
                    rule %r(\\), Str::Single
         | 
| 94 | 
            +
                    rule %r([^'\\]+), Str::Single
         | 
| 95 | 
            +
                  end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                  state :string_single do
         | 
| 98 | 
            +
                    rule %r(') do
         | 
| 99 | 
            +
                      token Str::Single
         | 
| 100 | 
            +
                      goto :string_end
         | 
| 101 | 
            +
                    end
         | 
| 102 | 
            +
                    mixin :string_single_common
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
                  
         | 
| 105 | 
            +
                  state :string_single_literal do
         | 
| 106 | 
            +
                    rule %r(''') do
         | 
| 107 | 
            +
                      token Str::Single
         | 
| 108 | 
            +
                      goto :string_end
         | 
| 109 | 
            +
                    end
         | 
| 110 | 
            +
                    rule %r('), Str::Single
         | 
| 111 | 
            +
                    mixin :string_single_common
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                  state :string_escapes do
         | 
| 115 | 
            +
                    rule %r(\\[tbnrf"'\\]), Str::Escape
         | 
| 116 | 
            +
                    rule %r(\\u\h{4}), Str::Escape
         | 
| 117 | 
            +
                    rule %r(\\U\h{8}), Str::Escape
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                  state :string_end do
         | 
| 121 | 
            +
                    rule %r((@)([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)) do
         | 
| 122 | 
            +
                      groups Operator, Name::Property
         | 
| 123 | 
            +
                    end
         | 
| 124 | 
            +
                    rule %r(\^\^), Operator
         | 
| 125 | 
            +
                    rule(//) { pop! }
         | 
| 126 | 
            +
                  end
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
              end
         | 
| 129 | 
            +
            end
         | 
    
        data/lib/rouge/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rouge
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3. | 
| 4 | 
            +
              version: 3.10.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jeanine Adkisson
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-09-03 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
         | 
| 14 14 | 
             
            email:
         | 
| @@ -40,6 +40,7 @@ files: | |
| 40 40 | 
             
            - lib/rouge/demos/c
         | 
| 41 41 | 
             
            - lib/rouge/demos/ceylon
         | 
| 42 42 | 
             
            - lib/rouge/demos/cfscript
         | 
| 43 | 
            +
            - lib/rouge/demos/clean
         | 
| 43 44 | 
             
            - lib/rouge/demos/clojure
         | 
| 44 45 | 
             
            - lib/rouge/demos/cmake
         | 
| 45 46 | 
             
            - lib/rouge/demos/cmhg
         | 
| @@ -98,6 +99,7 @@ files: | |
| 98 99 | 
             
            - lib/rouge/demos/java
         | 
| 99 100 | 
             
            - lib/rouge/demos/javascript
         | 
| 100 101 | 
             
            - lib/rouge/demos/jinja
         | 
| 102 | 
            +
            - lib/rouge/demos/jsl
         | 
| 101 103 | 
             
            - lib/rouge/demos/json
         | 
| 102 104 | 
             
            - lib/rouge/demos/json-doc
         | 
| 103 105 | 
             
            - lib/rouge/demos/jsonnet
         | 
| @@ -111,6 +113,8 @@ files: | |
| 111 113 | 
             
            - lib/rouge/demos/literate_haskell
         | 
| 112 114 | 
             
            - lib/rouge/demos/llvm
         | 
| 113 115 | 
             
            - lib/rouge/demos/lua
         | 
| 116 | 
            +
            - lib/rouge/demos/lustre
         | 
| 117 | 
            +
            - lib/rouge/demos/lutin
         | 
| 114 118 | 
             
            - lib/rouge/demos/m68k
         | 
| 115 119 | 
             
            - lib/rouge/demos/magik
         | 
| 116 120 | 
             
            - lib/rouge/demos/make
         | 
| @@ -163,6 +167,7 @@ files: | |
| 163 167 | 
             
            - lib/rouge/demos/smalltalk
         | 
| 164 168 | 
             
            - lib/rouge/demos/smarty
         | 
| 165 169 | 
             
            - lib/rouge/demos/sml
         | 
| 170 | 
            +
            - lib/rouge/demos/sparql
         | 
| 166 171 | 
             
            - lib/rouge/demos/sqf
         | 
| 167 172 | 
             
            - lib/rouge/demos/sql
         | 
| 168 173 | 
             
            - lib/rouge/demos/supercollider
         | 
| @@ -227,6 +232,7 @@ files: | |
| 227 232 | 
             
            - lib/rouge/lexers/c.rb
         | 
| 228 233 | 
             
            - lib/rouge/lexers/ceylon.rb
         | 
| 229 234 | 
             
            - lib/rouge/lexers/cfscript.rb
         | 
| 235 | 
            +
            - lib/rouge/lexers/clean.rb
         | 
| 230 236 | 
             
            - lib/rouge/lexers/clojure.rb
         | 
| 231 237 | 
             
            - lib/rouge/lexers/cmake.rb
         | 
| 232 238 | 
             
            - lib/rouge/lexers/cmhg.rb
         | 
| @@ -285,6 +291,7 @@ files: | |
| 285 291 | 
             
            - lib/rouge/lexers/java.rb
         | 
| 286 292 | 
             
            - lib/rouge/lexers/javascript.rb
         | 
| 287 293 | 
             
            - lib/rouge/lexers/jinja.rb
         | 
| 294 | 
            +
            - lib/rouge/lexers/jsl.rb
         | 
| 288 295 | 
             
            - lib/rouge/lexers/json.rb
         | 
| 289 296 | 
             
            - lib/rouge/lexers/json_doc.rb
         | 
| 290 297 | 
             
            - lib/rouge/lexers/jsonnet.rb
         | 
| @@ -300,6 +307,8 @@ files: | |
| 300 307 | 
             
            - lib/rouge/lexers/llvm.rb
         | 
| 301 308 | 
             
            - lib/rouge/lexers/lua.rb
         | 
| 302 309 | 
             
            - lib/rouge/lexers/lua/builtins.rb
         | 
| 310 | 
            +
            - lib/rouge/lexers/lustre.rb
         | 
| 311 | 
            +
            - lib/rouge/lexers/lutin.rb
         | 
| 303 312 | 
             
            - lib/rouge/lexers/m68k.rb
         | 
| 304 313 | 
             
            - lib/rouge/lexers/magik.rb
         | 
| 305 314 | 
             
            - lib/rouge/lexers/make.rb
         | 
| @@ -357,6 +366,7 @@ files: | |
| 357 366 | 
             
            - lib/rouge/lexers/smalltalk.rb
         | 
| 358 367 | 
             
            - lib/rouge/lexers/smarty.rb
         | 
| 359 368 | 
             
            - lib/rouge/lexers/sml.rb
         | 
| 369 | 
            +
            - lib/rouge/lexers/sparql.rb
         | 
| 360 370 | 
             
            - lib/rouge/lexers/sqf.rb
         | 
| 361 371 | 
             
            - lib/rouge/lexers/sqf/commands.rb
         | 
| 362 372 | 
             
            - lib/rouge/lexers/sql.rb
         |