Sha256: 178a6e7bf8caf8a501f4a773ec96ac8bc9b66027a544e876554a240784bda73e

Contents?: true

Size: 1.53 KB

Versions: 12

Compression:

Stored size: 1.53 KB

Contents

module Rouge
  module Lexers
    class Nginx < RegexLexer
      desc 'configuration files for the nginx web server (nginx.org)'
      tag 'nginx'
      mimetypes 'text/x-nginx-conf'
      filenames 'nginx.conf'

      id = /[^\s$;{}()#]+/

      state :root do
        rule /(include)(\s+)([^\s;]+)/ do
          group 'Keyword'; group 'Text'; group 'Name'
        end

        rule id, 'Keyword', :statement

        mixin :base
      end

      state :block do
        rule /}/, 'Punctuation', :pop!
        rule id, 'Keyword.Namespace', :statement
        mixin :base
      end

      state :statement do
        rule /{/ do
          token 'Punctuation'; pop!; push :block
        end

        rule /;/, 'Punctuation', :pop!

        mixin :base
      end

      state :base do
        rule /\s+/, 'Text'

        rule /#.*?\n/, 'Comment.Single'
        rule /(?:on|off)\b/, 'Name.Constant'
        rule /[$][\w-]+/, 'Name.Variable'

        # host/port
        rule /([a-z0-9.-]+)(:)([0-9]+)/i do
          group 'Name.Function'; group 'Punctuation'
          group 'Literal.Number.Integer'
        end

        # mimetype
        rule %r([a-z-]+/[a-z-]+)i, 'Name.Class'

        rule /[0-9]+[kmg]?\b/i, 'Literal.Number.Integer'
        rule /(~)(\s*)([^\s{]+)/ do
          group 'Punctuation'; group 'Text'; group 'Literal.String.Regex'
        end

        rule /[:=~]/, 'Punctuation'

        # pathname
        rule %r(/#{id}?), 'Name'

        rule /[^#\s;{}$\\]+/, 'Literal.String' # catchall

        rule /[$;]/, 'Text'
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rouge-0.4.0 lib/rouge/lexers/nginx.rb
rouge-0.3.10 lib/rouge/lexers/nginx.rb
rouge-0.3.9 lib/rouge/lexers/nginx.rb
rouge-0.3.8 lib/rouge/lexers/nginx.rb
rouge-0.3.7 lib/rouge/lexers/nginx.rb
rouge-0.3.6 lib/rouge/lexers/nginx.rb
rouge-0.3.5 lib/rouge/lexers/nginx.rb
rouge-0.3.4 lib/rouge/lexers/nginx.rb
rouge-0.3.3 lib/rouge/lexers/nginx.rb
rouge-0.3.2 lib/rouge/lexers/nginx.rb
rouge-0.3.1 lib/rouge/lexers/nginx.rb
rouge-0.3.0 lib/rouge/lexers/nginx.rb