# -*- coding: utf-8 -*- #

module Rouge
  module Lexers
    class TeX < RegexLexer
      title "TeX"
      desc "The TeX typesetting system"
      tag 'tex'
      aliases 'TeX', 'LaTeX', 'latex'

      filenames '*.tex', '*.aux', '*.toc'
      mimetypes 'text/x-tex', 'text/x-latex'

      def self.analyze_text(text)
        return 1 if text =~ /\A\s*\\documentclass/
        return 1 if text =~ /\A\s*\\input/
        return 1 if text =~ /\A\s*\\documentstyle/
        return 1 if text =~ /\A\s*\\relax/
      end

      command = /\\([a-z]+|\s+|.)/i

      state :general do
        rule /%.*$/, Comment
        rule /[{}&_^]/, Punctuation
      end

      state :root do
        rule /\\\[/, Punctuation, :displaymath
        rule /\\\(/, Punctuation, :inlinemath
        rule /\$\$/, Punctuation, :displaymath
        rule /\$/, Punctuation, :inlinemath
        rule /\\(begin|end)\{.*?\}/, Name::Tag

        rule /(\\verb)\b(\S)(.*?)(\2)/ do |m|
          groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
        end

        rule command, Keyword, :command
        mixin :general
        rule /[^\\$%&_^{}]+/, Text
      end

      state :math do
        rule command, Name::Variable
        mixin :general
        rule /[0-9]+/, Num
        rule /[-=!+*\/()\[\]]/, Operator
        rule /[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
      end

      state :inlinemath do
        rule /\\\)/, Punctuation, :pop!
        rule /\$/, Punctuation, :pop!
        mixin :math
      end

      state :displaymath do
        rule /\\\]/, Punctuation, :pop!
        rule /\$\$/, Punctuation, :pop!
        rule /\$/, Name::Builtin
        mixin :math
      end

      state :command do
        rule /\[.*?\]/, Name::Attribute
        rule /\*/, Keyword
        rule(//) { pop! }
      end
    end
  end
end
