Module: Rouge

Defined in:
lib/rouge.rb,
lib/rouge/cli.rb,
lib/rouge/util.rb,
lib/rouge/lexer.rb,
lib/rouge/theme.rb,
lib/rouge/token.rb,
lib/rouge/guesser.rb,
lib/rouge/version.rb,
lib/rouge/lexers/c.rb,
lib/rouge/lexers/d.rb,
lib/rouge/lexers/j.rb,
lib/rouge/lexers/q.rb,
lib/rouge/lexers/r.rb,
lib/rouge/formatter.rb,
lib/rouge/lexers/go.rb,
lib/rouge/lexers/io.rb,
lib/rouge/lexers/p4.rb,
lib/rouge/lexers/vb.rb,
lib/rouge/themes/bw.rb,
lib/rouge/lexers/ada.rb,
lib/rouge/lexers/awk.rb,
lib/rouge/lexers/bpf.rb,
lib/rouge/lexers/bsl.rb,
lib/rouge/lexers/cpp.rb,
lib/rouge/lexers/css.rb,
lib/rouge/lexers/dot.rb,
lib/rouge/lexers/ecl.rb,
lib/rouge/lexers/eex.rb,
lib/rouge/lexers/elm.rb,
lib/rouge/lexers/epp.rb,
lib/rouge/lexers/erb.rb,
lib/rouge/lexers/gjs.rb,
lib/rouge/lexers/gts.rb,
lib/rouge/lexers/hcl.rb,
lib/rouge/lexers/hql.rb,
lib/rouge/lexers/ini.rb,
lib/rouge/lexers/irb.rb,
lib/rouge/lexers/jsl.rb,
lib/rouge/lexers/jsp.rb,
lib/rouge/lexers/jsx.rb,
lib/rouge/lexers/lua.rb,
lib/rouge/lexers/nim.rb,
lib/rouge/lexers/nix.rb,
lib/rouge/lexers/ocl.rb,
lib/rouge/lexers/pdf.rb,
lib/rouge/lexers/php.rb,
lib/rouge/lexers/qml.rb,
lib/rouge/lexers/rml.rb,
lib/rouge/lexers/sas.rb,
lib/rouge/lexers/sed.rb,
lib/rouge/lexers/sml.rb,
lib/rouge/lexers/sqf.rb,
lib/rouge/lexers/sql.rb,
lib/rouge/lexers/ssh.rb,
lib/rouge/lexers/tap.rb,
lib/rouge/lexers/tcl.rb,
lib/rouge/lexers/tex.rb,
lib/rouge/lexers/tsx.rb,
lib/rouge/lexers/vue.rb,
lib/rouge/lexers/xml.rb,
lib/rouge/lexers/zig.rb,
lib/rouge/lexers/abap.rb,
lib/rouge/lexers/apex.rb,
lib/rouge/lexers/biml.rb,
lib/rouge/lexers/cmhg.rb,
lib/rouge/lexers/conf.rb,
lib/rouge/lexers/csvs.rb,
lib/rouge/lexers/cuda.rb,
lib/rouge/lexers/dart.rb,
lib/rouge/lexers/diff.rb,
lib/rouge/lexers/glsl.rb,
lib/rouge/lexers/hack.rb,
lib/rouge/lexers/haml.rb,
lib/rouge/lexers/haxe.rb,
lib/rouge/lexers/hlsl.rb,
lib/rouge/lexers/html.rb,
lib/rouge/lexers/http.rb,
lib/rouge/lexers/isbl.rb,
lib/rouge/lexers/java.rb,
lib/rouge/lexers/json.rb,
lib/rouge/lexers/lean.rb,
lib/rouge/lexers/llvm.rb,
lib/rouge/lexers/m68k.rb,
lib/rouge/lexers/make.rb,
lib/rouge/lexers/mojo.rb,
lib/rouge/lexers/mxml.rb,
lib/rouge/lexers/nasm.rb,
lib/rouge/lexers/nial.rb,
lib/rouge/lexers/perl.rb,
lib/rouge/lexers/pony.rb,
lib/rouge/lexers/rego.rb,
lib/rouge/lexers/rocq.rb,
lib/rouge/lexers/ruby.rb,
lib/rouge/lexers/rust.rb,
lib/rouge/lexers/sass.rb,
lib/rouge/lexers/scss.rb,
lib/rouge/lexers/slim.rb,
lib/rouge/lexers/stan.rb,
lib/rouge/lexers/toml.rb,
lib/rouge/lexers/twig.rb,
lib/rouge/lexers/vala.rb,
lib/rouge/lexers/vhdl.rb,
lib/rouge/lexers/viml.rb,
lib/rouge/lexers/xojo.rb,
lib/rouge/lexers/yaml.rb,
lib/rouge/lexers/yang.rb,
lib/rouge/regex_lexer.rb,
lib/rouge/lexers/bicep.rb,
lib/rouge/lexers/clean.rb,
lib/rouge/lexers/cmake.rb,
lib/rouge/lexers/cobol.rb,
lib/rouge/lexers/dafny.rb,
lib/rouge/lexers/dylan.rb,
lib/rouge/lexers/email.rb,
lib/rouge/lexers/hocon.rb,
lib/rouge/lexers/idris.rb,
lib/rouge/lexers/iecst.rb,
lib/rouge/lexers/janet.rb,
lib/rouge/lexers/jinja.rb,
lib/rouge/lexers/json5.rb,
lib/rouge/lexers/julia.rb,
lib/rouge/lexers/lasso.rb,
lib/rouge/lexers/lutin.rb,
lib/rouge/lexers/magik.rb,
lib/rouge/lexers/mason.rb,
lib/rouge/lexers/meson.rb,
lib/rouge/lexers/mosel.rb,
lib/rouge/lexers/nginx.rb,
lib/rouge/lexers/ocaml.rb,
lib/rouge/lexers/plist.rb,
lib/rouge/lexers/plsql.rb,
lib/rouge/lexers/praat.rb,
lib/rouge/lexers/scala.rb,
lib/rouge/lexers/shell.rb,
lib/rouge/lexers/sieve.rb,
lib/rouge/lexers/slice.rb,
lib/rouge/lexers/stata.rb,
lib/rouge/lexers/swift.rb,
lib/rouge/lexers/ttcn3.rb,
lib/rouge/lexers/tulip.rb,
lib/rouge/lexers/veryl.rb,
lib/rouge/lexers/xpath.rb,
lib/rouge/themes/tulip.rb,
lib/rouge/guessers/util.rb,
lib/rouge/lexers/apache.rb,
lib/rouge/lexers/armasm.rb,
lib/rouge/lexers/augeas.rb,
lib/rouge/lexers/bibtex.rb,
lib/rouge/lexers/ceylon.rb,
lib/rouge/lexers/csharp.rb,
lib/rouge/lexers/cypher.rb,
lib/rouge/lexers/cython.rb,
lib/rouge/lexers/digdag.rb,
lib/rouge/lexers/docker.rb,
lib/rouge/lexers/eiffel.rb,
lib/rouge/lexers/elixir.rb,
lib/rouge/lexers/erlang.rb,
lib/rouge/lexers/escape.rb,
lib/rouge/lexers/factor.rb,
lib/rouge/lexers/fluent.rb,
lib/rouge/lexers/fsharp.rb,
lib/rouge/lexers/gradle.rb,
lib/rouge/lexers/groovy.rb,
lib/rouge/lexers/hylang.rb,
lib/rouge/lexers/idlang.rb,
lib/rouge/lexers/kotlin.rb,
lib/rouge/lexers/liquid.rb,
lib/rouge/lexers/lustre.rb,
lib/rouge/lexers/matlab.rb,
lib/rouge/lexers/nesasm.rb,
lib/rouge/lexers/pascal.rb,
lib/rouge/lexers/prolog.rb,
lib/rouge/lexers/puppet.rb,
lib/rouge/lexers/python.rb,
lib/rouge/lexers/racket.rb,
lib/rouge/lexers/scheme.rb,
lib/rouge/lexers/smarty.rb,
lib/rouge/lexers/sparql.rb,
lib/rouge/lexers/svelte.rb,
lib/rouge/lexers/thrift.rb,
lib/rouge/lexers/turtle.rb,
lib/rouge/lexers/wollok.rb,
lib/rouge/lexers/xquery.rb,
lib/rouge/text_analyzer.rb,
lib/rouge/themes/base16.rb,
lib/rouge/themes/github.rb,
lib/rouge/themes/pastie.rb,
lib/rouge/formatters/tex.rb,
lib/rouge/lexers/clojure.rb,
lib/rouge/lexers/console.rb,
lib/rouge/lexers/crystal.rb,
lib/rouge/lexers/fortran.rb,
lib/rouge/lexers/freefem.rb,
lib/rouge/lexers/ghc_cmm.rb,
lib/rouge/lexers/gherkin.rb,
lib/rouge/lexers/graphql.rb,
lib/rouge/lexers/haskell.rb,
lib/rouge/lexers/igorpro.rb,
lib/rouge/lexers/jsonnet.rb,
lib/rouge/lexers/systemd.rb,
lib/rouge/lexers/syzlang.rb,
lib/rouge/lexers/syzprog.rb,
lib/rouge/lexers/varnish.rb,
lib/rouge/lexers/verilog.rb,
lib/rouge/template_lexer.rb,
lib/rouge/themes/gruvbox.rb,
lib/rouge/themes/molokai.rb,
lib/rouge/themes/monokai.rb,
lib/rouge/formatters/html.rb,
lib/rouge/formatters/null.rb,
lib/rouge/guessers/source.rb,
lib/rouge/lexers/bbcbasic.rb,
lib/rouge/lexers/cfscript.rb,
lib/rouge/lexers/gdscript.rb,
lib/rouge/lexers/ghc_core.rb,
lib/rouge/lexers/isabelle.rb,
lib/rouge/lexers/json_doc.rb,
lib/rouge/lexers/markdown.rb,
lib/rouge/lexers/minizinc.rb,
lib/rouge/lexers/msgtrans.rb,
lib/rouge/lexers/openedge.rb,
lib/rouge/lexers/protobuf.rb,
lib/rouge/lexers/reasonml.rb,
lib/rouge/lexers/rescript.rb,
lib/rouge/lexers/velocity.rb,
lib/rouge/themes/colorful.rb,
lib/rouge/themes/igor_pro.rb,
lib/rouge/themes/magritte.rb,
lib/rouge/lexers/batchfile.rb,
lib/rouge/lexers/brainfuck.rb,
lib/rouge/lexers/cisco_ios.rb,
lib/rouge/lexers/smalltalk.rb,
lib/rouge/lexers/terraform.rb,
lib/rouge/guessers/filename.rb,
lib/rouge/guessers/mimetype.rb,
lib/rouge/guessers/modeline.rb,
lib/rouge/lexers/codeowners.rb,
lib/rouge/lexers/datastudio.rb,
lib/rouge/lexers/handlebars.rb,
lib/rouge/lexers/javascript.rb,
lib/rouge/lexers/livescript.rb,
lib/rouge/lexers/moonscript.rb,
lib/rouge/lexers/plain_text.rb,
lib/rouge/lexers/postscript.rb,
lib/rouge/lexers/powershell.rb,
lib/rouge/lexers/prometheus.rb,
lib/rouge/lexers/properties.rb,
lib/rouge/lexers/typescript.rb,
lib/rouge/plugins/redcarpet.rb,
lib/rouge/lexers/common_lisp.rb,
lib/rouge/lexers/mathematica.rb,
lib/rouge/lexers/objective_c.rb,
lib/rouge/lexers/sass/common.rb,
lib/rouge/tex_theme_renderer.rb,
lib/rouge/lexers/actionscript.rb,
lib/rouge/lexers/apiblueprint.rb,
lib/rouge/lexers/apple_script.rb,
lib/rouge/lexers/brightscript.rb,
lib/rouge/lexers/coffeescript.rb,
lib/rouge/lexers/lua/keywords.rb,
lib/rouge/lexers/ocaml/common.rb,
lib/rouge/lexers/php/keywords.rb,
lib/rouge/lexers/sqf/keywords.rb,
lib/rouge/lexers/abap/builtins.rb,
lib/rouge/lexers/glsl/builtins.rb,
lib/rouge/lexers/llvm/keywords.rb,
lib/rouge/lexers/objective_cpp.rb,
lib/rouge/lexers/supercollider.rb,
lib/rouge/lexers/viml/keywords.rb,
lib/rouge/themes/thankful_eyes.rb,
lib/rouge/formatters/html_debug.rb,
lib/rouge/formatters/html_table.rb,
lib/rouge/guessers/glob_mapping.rb,
lib/rouge/lexers/kick_assembler.rb,
lib/rouge/lexers/lasso/keywords.rb,
lib/rouge/formatters/html_inline.rb,
lib/rouge/formatters/html_legacy.rb,
lib/rouge/formatters/terminal256.rb,
lib/rouge/lexers/apache/keywords.rb,
lib/rouge/lexers/matlab/keywords.rb,
lib/rouge/lexers/robot_framework.rb,
lib/rouge/themes/monokai_sublime.rb,
lib/rouge/guessers/disambiguation.rb,
lib/rouge/lexers/gherkin/keywords.rb,
lib/rouge/lexers/igorpro/builtins.rb,
lib/rouge/lexers/literate_haskell.rb,
lib/rouge/formatters/html_linewise.rb,
lib/rouge/formatters/html_pygments.rb,
lib/rouge/lexers/typescript/common.rb,
lib/rouge/lexers/objective_c/common.rb,
lib/rouge/formatters/html_line_table.rb,
lib/rouge/lexers/mathematica/keywords.rb,
lib/rouge/formatters/html_legacy_table.rb,
lib/rouge/lexers/literate_coffeescript.rb,
lib/rouge/lexers/opentype_feature_file.rb,
lib/rouge/formatters/terminal_truecolor.rb,
lib/rouge/formatters/html_line_highlighter.rb

Overview

jneen

This is an example implementation only. You may use it as-is, but please do

not submit patches that alter the behaviour or options of this formatter for the convenience of your application. You are highly encouraged to write your own formatter for your application instead.

Defined Under Namespace

Modules: Formatters, Guessers, HasModes, Indentation, Lexers, Plugins, Themes Classes: CLI, CSSTheme, FileReader, Formatter, Guesser, InheritableHash, InheritableList, Lexer, RegexLexer, TemplateLexer, TexThemeRenderer, TextAnalyzer, Theme, Token

Constant Summary collapse

LIB_DIR =

cache value in a constant since ‘__dir__` allocates a new string on every call.

__dir__.freeze

Class Method Summary collapse

Class Method Details

.eager_load!Object



47
48
49
# File 'lib/rouge.rb', line 47

def eager_load!
  Rouge::Lexer.all.each(&:eager_load!)
end

.highlight(text, lexer, formatter, &b) ⇒ Object

Highlight some text with a given lexer and formatter.

Examples:

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


37
38
39
40
41
42
43
44
45
# File 'lib/rouge.rb', line 37

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

.reload!Object

Deprecated.

This method of reloading is incompatible with modern Ruby’s

expectations around global caching of ‘require`. It is deprecated with no replacement - consider reloading the entire process instead with something like Guard. This method will be removed in rouge 5.0.



21
22
23
24
25
# File 'lib/rouge.rb', line 21

def reload!
  Kernel::warn "Rouge.reload! is deprecated, with no replacement, and will be removed in 5.0. Use a reloading system like Guard instead."
  Object::send :remove_const, :Rouge
  Kernel::load __FILE__
end

.versionObject



5
6
7
# File 'lib/rouge/version.rb', line 5

def self.version
  "5.0.0"
end