summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb106
1 files changed, 106 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb b/vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb
new file mode 100644
index 0000000..f8cffcb
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/rouge-4.5.2/lib/rouge.rb
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*- #
+# frozen_string_literal: true
+
+# stdlib
+require 'pathname'
+
+# The containing module for Rouge
+module Rouge
+ # cache value in a constant since `__dir__` allocates a new string
+ # on every call.
+ LIB_DIR = __dir__.freeze
+
+ class << self
+ def reload!
+ Object::send :remove_const, :Rouge
+ Kernel::load __FILE__
+ end
+
+ # Highlight some text with a given lexer and formatter.
+ #
+ # @example
+ # Rouge.highlight('@foo = 1', 'ruby', 'html')
+ # Rouge.highlight('var foo = 1;', 'js', 'terminal256')
+ #
+ # # streaming - chunks become available as they are lexed
+ # Rouge.highlight(large_string, 'ruby', 'html') do |chunk|
+ # $stdout.print chunk
+ # end
+ def highlight(text, lexer, formatter, &b)
+ lexer = Lexer.find(lexer) unless lexer.respond_to? :lex
+ raise "unknown lexer #{lexer}" unless lexer
+
+ formatter = Formatter.find(formatter) unless formatter.respond_to? :format
+ raise "unknown formatter #{formatter}" unless formatter
+
+ formatter.format(lexer.lex(text), &b)
+ end
+
+ # Load a file relative to the `lib/rouge` path.
+ #
+ # @api private
+ def load_file(path)
+ Kernel::load File.join(LIB_DIR, "rouge/#{path}.rb")
+ end
+
+ # Load the lexers in the `lib/rouge/lexers` directory.
+ #
+ # @api private
+ def load_lexers
+ lexer_dir = Pathname.new(LIB_DIR) / "rouge/lexers"
+ Pathname.glob(lexer_dir / '*.rb').each do |f|
+ Lexers.load_lexer(f.relative_path_from(lexer_dir))
+ end
+ end
+ end
+end
+
+Rouge.load_file 'version'
+Rouge.load_file 'util'
+Rouge.load_file 'text_analyzer'
+Rouge.load_file 'token'
+
+Rouge.load_file 'lexer'
+Rouge.load_file 'regex_lexer'
+Rouge.load_file 'template_lexer'
+
+Rouge.load_lexers
+
+Rouge.load_file 'guesser'
+Rouge.load_file 'guessers/util'
+Rouge.load_file 'guessers/glob_mapping'
+Rouge.load_file 'guessers/modeline'
+Rouge.load_file 'guessers/filename'
+Rouge.load_file 'guessers/mimetype'
+Rouge.load_file 'guessers/source'
+Rouge.load_file 'guessers/disambiguation'
+
+Rouge.load_file 'formatter'
+Rouge.load_file 'formatters/html'
+Rouge.load_file 'formatters/html_table'
+Rouge.load_file 'formatters/html_pygments'
+Rouge.load_file 'formatters/html_legacy'
+Rouge.load_file 'formatters/html_linewise'
+Rouge.load_file 'formatters/html_line_highlighter'
+Rouge.load_file 'formatters/html_line_table'
+Rouge.load_file 'formatters/html_inline'
+Rouge.load_file 'formatters/terminal256'
+Rouge.load_file 'formatters/terminal_truecolor'
+Rouge.load_file 'formatters/tex'
+Rouge.load_file 'formatters/null'
+
+Rouge.load_file 'theme'
+Rouge.load_file 'tex_theme_renderer'
+Rouge.load_file 'themes/thankful_eyes'
+Rouge.load_file 'themes/colorful'
+Rouge.load_file 'themes/base16'
+Rouge.load_file 'themes/github'
+Rouge.load_file 'themes/igor_pro'
+Rouge.load_file 'themes/monokai'
+Rouge.load_file 'themes/molokai'
+Rouge.load_file 'themes/monokai_sublime'
+Rouge.load_file 'themes/gruvbox'
+Rouge.load_file 'themes/tulip'
+Rouge.load_file 'themes/pastie'
+Rouge.load_file 'themes/bw'
+Rouge.load_file 'themes/magritte'