Sha256: e16bb39a572cec6e9fa6ec4427ecb7021f4b0c92efaf9f816489e4fd07d9f6a0

Contents?: true

Size: 1.62 KB

Versions: 24

Compression:

Stored size: 1.62 KB

Contents

# -*- coding: utf-8 -*- #
# frozen_string_literal: true

module Rouge
  module Lexers
    class Dot < RegexLexer
      title "DOT"
      desc "graph description language"

      tag 'dot'
      filenames '*.dot'
      mimetypes 'text/vnd.graphviz'

      start do
        @html = HTML.new(options)
      end

      state :comments_and_whitespace do
        rule %r/\s+/, Text
        rule %r(#.*), Comment::Single
        rule %r(//.*?$), Comment::Single
        rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
      end

      state :html do
        rule %r/[^<>]+/ do
          delegate @html
        end
        rule %r/<.+?>/m do
          delegate @html
        end
        rule %r/>/, Punctuation, :pop!
      end

      state :ID do
        rule %r/([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
          token Name, m[1]
          token Text, m[2]
          token Punctuation, m[3]
        end
        rule %r/[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
        rule %r/([0-9]+)?\.[0-9]+/, Num::Float
        rule %r/[0-9]+/, Num::Integer
        rule %r/"(\\"|[^"])*"/, Str::Double
        rule %r/</ do
          token Punctuation
          @html.reset!
          push :html
        end
      end

      state :a_list do
        mixin :comments_and_whitespace
        mixin :ID
        rule %r/[=;,]/, Punctuation
        rule %r/\]/, Operator, :pop!
      end

      state :root do
        mixin :comments_and_whitespace
        rule %r/\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
        rule %r/[{};:=]/, Punctuation
        rule %r/-[->]/, Operator
        rule %r/\[/, Operator, :a_list
        mixin :ID
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
mumukit-content-type-1.12.1 vendor/bundle/ruby/2.7.0/gems/rouge-3.30.0/lib/rouge/lexers/dot.rb
mumukit-content-type-1.12.0 vendor/bundle/ruby/2.7.0/gems/rouge-3.30.0/lib/rouge/lexers/dot.rb
rouge-4.1.0 lib/rouge/lexers/dot.rb
rouge-4.0.1 lib/rouge/lexers/dot.rb
rouge-4.0.0 lib/rouge/lexers/dot.rb
rouge-3.30.0 lib/rouge/lexers/dot.rb
rouge-3.29.0 lib/rouge/lexers/dot.rb
rouge-3.28.0 lib/rouge/lexers/dot.rb
rouge-3.27.0 lib/rouge/lexers/dot.rb
rouge-3.26.1 lib/rouge/lexers/dot.rb
mumukit-content-type-1.11.1 vendor/bundle/ruby/2.6.0/gems/rouge-3.26.0/lib/rouge/lexers/dot.rb
rouge-3.26.0 lib/rouge/lexers/dot.rb
rouge-3.25.0 lib/rouge/lexers/dot.rb
rouge-3.24.0 lib/rouge/lexers/dot.rb
rouge-3.23.0 lib/rouge/lexers/dot.rb
rouge-3.22.0 lib/rouge/lexers/dot.rb
rouge-3.21.0 lib/rouge/lexers/dot.rb
rouge-3.20.0 lib/rouge/lexers/dot.rb
rouge-3.19.0 lib/rouge/lexers/dot.rb
rouge-3.18.0 lib/rouge/lexers/dot.rb