# -*- coding: utf-8 -*- # # frozen_string_literal: true module Rouge module Lexers # IMPORTANT NOTICE: # # Please do not copy this lexer and open a pull request # for a new language. It will not get merged, you will # be unhappy, and kittens will cry. # class Javascript < RegexLexer title "JavaScript" desc "JavaScript, the browser scripting language" tag 'javascript' aliases 'js' filenames '*.js', '*.mjs' mimetypes 'application/javascript', 'application/x-javascript', 'text/javascript', 'text/x-javascript' def self.detect?(text) return 1 if text.shebang?('node') return 1 if text.shebang?('jsc') # TODO: rhino, spidermonkey, etc end state :multiline_comment do rule %r([*]/), Comment::Multiline, :pop! rule %r([^*/]+), Comment::Multiline rule %r([*/]), Comment::Multiline end state :comments_and_whitespace do rule %r/\s+/, Text rule %r/