lib/rouge/guessers/glob_mapping.rb
# frozen_string_literal: true module Rouge module Guessers # This class allows for custom behavior # with glob -> lexer name mappings class GlobMapping < Guesser include Util def self.by_pairs(mapping, filename) glob_map = {} mapping.each do |(glob, lexer_name)| lexer = Lexer.find(lexer_name) # ignore unknown lexers next unless lexer glob_map[lexer.name] ||= [] glob_map[lexer.name] << glob end new(glob_map, filename) end attr_reader :glob_map, :filename def initialize(glob_map, filename) @glob_map = glob_map @filename = filename end def filter(lexers) basename = File.basename(filename) collect_best(lexers) do |lexer| (@glob_map[lexer.name] || []).map do |pattern| if test_glob(pattern, basename) # specificity is better the fewer wildcards there are -pattern.scan(/[*?\[]/).size end end.compact.min end end end end end
Source Files
- lib/rouge.rb
- lib/rouge/cli.rb
- lib/rouge/formatter.rb
- lib/rouge/formatters/html.rb
- lib/rouge/formatters/html_inline.rb
- lib/rouge/formatters/html_legacy.rb
- lib/rouge/formatters/html_line_highlighter.rb
- lib/rouge/formatters/html_line_table.rb
- lib/rouge/formatters/html_linewise.rb
- lib/rouge/formatters/html_pygments.rb
- lib/rouge/formatters/html_table.rb
- lib/rouge/formatters/null.rb
- lib/rouge/formatters/terminal256.rb
- lib/rouge/formatters/terminal_truecolor.rb
- lib/rouge/formatters/tex.rb
- lib/rouge/guesser.rb
- lib/rouge/guessers/disambiguation.rb
- lib/rouge/guessers/filename.rb
- lib/rouge/guessers/glob_mapping.rb
- lib/rouge/guessers/mimetype.rb
- lib/rouge/guessers/modeline.rb
- lib/rouge/guessers/source.rb
- lib/rouge/guessers/util.rb
- lib/rouge/lexer.rb
- lib/rouge/lexers/abap.rb
- lib/rouge/lexers/actionscript.rb
- lib/rouge/lexers/ada.rb
- lib/rouge/lexers/apache.rb
- lib/rouge/lexers/apache/keywords.rb
- lib/rouge/lexers/apex.rb
- lib/rouge/lexers/apiblueprint.rb
- lib/rouge/lexers/apple_script.rb
- lib/rouge/lexers/armasm.rb
- lib/rouge/lexers/augeas.rb
- lib/rouge/lexers/awk.rb
- lib/rouge/lexers/batchfile.rb
- lib/rouge/lexers/bbcbasic.rb
- lib/rouge/lexers/bibtex.rb
- lib/rouge/lexers/biml.rb
- lib/rouge/lexers/bpf.rb
- lib/rouge/lexers/brainfuck.rb
- lib/rouge/lexers/brightscript.rb
- lib/rouge/lexers/bsl.rb
- lib/rouge/lexers/c.rb
- lib/rouge/lexers/ceylon.rb
- lib/rouge/lexers/cfscript.rb
- lib/rouge/lexers/cisco_ios.rb
- lib/rouge/lexers/clean.rb
- lib/rouge/lexers/clojure.rb
- lib/rouge/lexers/cmake.rb
- lib/rouge/lexers/cmhg.rb
- lib/rouge/lexers/codeowners.rb
- lib/rouge/lexers/coffeescript.rb
- lib/rouge/lexers/common_lisp.rb
- lib/rouge/lexers/conf.rb
- lib/rouge/lexers/console.rb
- lib/rouge/lexers/coq.rb
- lib/rouge/lexers/cpp.rb
- lib/rouge/lexers/crystal.rb
- lib/rouge/lexers/csharp.rb
- lib/rouge/lexers/css.rb
- lib/rouge/lexers/csvs.rb
- lib/rouge/lexers/cuda.rb
- lib/rouge/lexers/cypher.rb
- lib/rouge/lexers/cython.rb
- lib/rouge/lexers/d.rb
- lib/rouge/lexers/dafny.rb
- lib/rouge/lexers/dart.rb
- lib/rouge/lexers/datastudio.rb
- lib/rouge/lexers/diff.rb
- lib/rouge/lexers/digdag.rb
- lib/rouge/lexers/docker.rb
- lib/rouge/lexers/dot.rb
- lib/rouge/lexers/ecl.rb
- lib/rouge/lexers/eex.rb
- lib/rouge/lexers/eiffel.rb
- lib/rouge/lexers/elixir.rb
- lib/rouge/lexers/elm.rb
- lib/rouge/lexers/email.rb
- lib/rouge/lexers/epp.rb
- lib/rouge/lexers/erb.rb
- lib/rouge/lexers/erlang.rb
- lib/rouge/lexers/escape.rb
- lib/rouge/lexers/factor.rb
- lib/rouge/lexers/fluent.rb
- lib/rouge/lexers/fortran.rb
- lib/rouge/lexers/freefem.rb
- lib/rouge/lexers/fsharp.rb
- lib/rouge/lexers/gdscript.rb
- lib/rouge/lexers/ghc_cmm.rb
- lib/rouge/lexers/ghc_core.rb
- lib/rouge/lexers/gherkin.rb
- lib/rouge/lexers/gherkin/keywords.rb
- lib/rouge/lexers/glsl.rb
- lib/rouge/lexers/go.rb
- lib/rouge/lexers/gradle.rb
- lib/rouge/lexers/graphql.rb
- lib/rouge/lexers/groovy.rb
- lib/rouge/lexers/hack.rb
- lib/rouge/lexers/haml.rb
- lib/rouge/lexers/handlebars.rb
- lib/rouge/lexers/haskell.rb
- lib/rouge/lexers/haxe.rb
- lib/rouge/lexers/hcl.rb
- lib/rouge/lexers/hlsl.rb
- lib/rouge/lexers/hocon.rb
- lib/rouge/lexers/hql.rb
- lib/rouge/lexers/html.rb
- lib/rouge/lexers/http.rb
- lib/rouge/lexers/hylang.rb
- lib/rouge/lexers/idlang.rb
- lib/rouge/lexers/idris.rb
- lib/rouge/lexers/igorpro.rb
- lib/rouge/lexers/ini.rb
- lib/rouge/lexers/io.rb
- lib/rouge/lexers/irb.rb
- lib/rouge/lexers/isabelle.rb
- lib/rouge/lexers/isbl.rb
- lib/rouge/lexers/isbl/builtins.rb
- lib/rouge/lexers/j.rb
- lib/rouge/lexers/janet.rb
- lib/rouge/lexers/java.rb
- lib/rouge/lexers/javascript.rb
- lib/rouge/lexers/jinja.rb
- lib/rouge/lexers/jsl.rb
- lib/rouge/lexers/json.rb
- lib/rouge/lexers/json_doc.rb
- lib/rouge/lexers/jsonnet.rb
- lib/rouge/lexers/jsp.rb
- lib/rouge/lexers/jsx.rb
- lib/rouge/lexers/julia.rb
- lib/rouge/lexers/kotlin.rb
- lib/rouge/lexers/lasso.rb
- lib/rouge/lexers/lasso/keywords.rb
- lib/rouge/lexers/lean.rb
- lib/rouge/lexers/liquid.rb
- lib/rouge/lexers/literate_coffeescript.rb
- lib/rouge/lexers/literate_haskell.rb
- lib/rouge/lexers/livescript.rb
- lib/rouge/lexers/llvm.rb
- lib/rouge/lexers/llvm/keywords.rb
- lib/rouge/lexers/lua.rb
- lib/rouge/lexers/lua/keywords.rb
- lib/rouge/lexers/lustre.rb
- lib/rouge/lexers/lutin.rb
- lib/rouge/lexers/m68k.rb
- lib/rouge/lexers/magik.rb
- lib/rouge/lexers/make.rb
- lib/rouge/lexers/markdown.rb
- lib/rouge/lexers/mason.rb
- lib/rouge/lexers/mathematica.rb
- lib/rouge/lexers/mathematica/keywords.rb
- lib/rouge/lexers/matlab.rb
- lib/rouge/lexers/matlab/builtins.rb
- lib/rouge/lexers/matlab/keywords.rb
- lib/rouge/lexers/meson.rb
- lib/rouge/lexers/minizinc.rb
- lib/rouge/lexers/moonscript.rb
- lib/rouge/lexers/mosel.rb
- lib/rouge/lexers/msgtrans.rb
- lib/rouge/lexers/mxml.rb
- lib/rouge/lexers/nasm.rb
- lib/rouge/lexers/nesasm.rb
- lib/rouge/lexers/nginx.rb
- lib/rouge/lexers/nial.rb
- lib/rouge/lexers/nim.rb
- lib/rouge/lexers/nix.rb
- lib/rouge/lexers/objective_c.rb
- lib/rouge/lexers/objective_c/common.rb
- lib/rouge/lexers/objective_cpp.rb
- lib/rouge/lexers/ocaml.rb
- lib/rouge/lexers/ocaml/common.rb
- lib/rouge/lexers/ocl.rb
- lib/rouge/lexers/openedge.rb
- lib/rouge/lexers/opentype_feature_file.rb
- lib/rouge/lexers/pascal.rb
- lib/rouge/lexers/perl.rb
- lib/rouge/lexers/php.rb
- lib/rouge/lexers/php/keywords.rb
- lib/rouge/lexers/plain_text.rb
- lib/rouge/lexers/plist.rb
- lib/rouge/lexers/plsql.rb
- lib/rouge/lexers/pony.rb
- lib/rouge/lexers/postscript.rb
- lib/rouge/lexers/powershell.rb
- lib/rouge/lexers/praat.rb
- lib/rouge/lexers/prolog.rb
- lib/rouge/lexers/prometheus.rb
- lib/rouge/lexers/properties.rb
- lib/rouge/lexers/protobuf.rb
- lib/rouge/lexers/puppet.rb
- lib/rouge/lexers/python.rb
- lib/rouge/lexers/q.rb
- lib/rouge/lexers/qml.rb
- lib/rouge/lexers/r.rb
- lib/rouge/lexers/racket.rb
- lib/rouge/lexers/reasonml.rb
- lib/rouge/lexers/rego.rb
- lib/rouge/lexers/rescript.rb
- lib/rouge/lexers/rml.rb
- lib/rouge/lexers/robot_framework.rb
- lib/rouge/lexers/ruby.rb
- lib/rouge/lexers/rust.rb
- lib/rouge/lexers/sas.rb
- lib/rouge/lexers/sass.rb
- lib/rouge/lexers/sass/common.rb
- lib/rouge/lexers/scala.rb
- lib/rouge/lexers/scheme.rb
- lib/rouge/lexers/scss.rb
- lib/rouge/lexers/sed.rb
- lib/rouge/lexers/shell.rb
- lib/rouge/lexers/sieve.rb
- lib/rouge/lexers/slice.rb
- lib/rouge/lexers/slim.rb
- lib/rouge/lexers/smalltalk.rb
- lib/rouge/lexers/smarty.rb
- lib/rouge/lexers/sml.rb
- lib/rouge/lexers/sparql.rb
- lib/rouge/lexers/sqf.rb
- lib/rouge/lexers/sqf/keywords.rb
- lib/rouge/lexers/sql.rb
- lib/rouge/lexers/ssh.rb
- lib/rouge/lexers/stan.rb
- lib/rouge/lexers/stata.rb
- lib/rouge/lexers/supercollider.rb
- lib/rouge/lexers/svelte.rb
- lib/rouge/lexers/swift.rb
- lib/rouge/lexers/systemd.rb
- lib/rouge/lexers/syzlang.rb
- lib/rouge/lexers/syzprog.rb
- lib/rouge/lexers/tap.rb
- lib/rouge/lexers/tcl.rb
- lib/rouge/lexers/terraform.rb
- lib/rouge/lexers/tex.rb
- lib/rouge/lexers/toml.rb
- lib/rouge/lexers/tsx.rb
- lib/rouge/lexers/ttcn3.rb
- lib/rouge/lexers/tulip.rb
- lib/rouge/lexers/turtle.rb
- lib/rouge/lexers/twig.rb
- lib/rouge/lexers/typescript.rb
- lib/rouge/lexers/typescript/common.rb
- lib/rouge/lexers/vala.rb
- lib/rouge/lexers/varnish.rb
- lib/rouge/lexers/vb.rb
- lib/rouge/lexers/velocity.rb
- lib/rouge/lexers/verilog.rb
- lib/rouge/lexers/vhdl.rb
- lib/rouge/lexers/viml.rb
- lib/rouge/lexers/viml/keywords.rb
- lib/rouge/lexers/vue.rb
- lib/rouge/lexers/wollok.rb
- lib/rouge/lexers/xml.rb
- lib/rouge/lexers/xojo.rb
- lib/rouge/lexers/xpath.rb
- lib/rouge/lexers/xquery.rb
- lib/rouge/lexers/yaml.rb
- lib/rouge/lexers/yang.rb
- lib/rouge/lexers/zig.rb
- lib/rouge/plugins/redcarpet.rb
- lib/rouge/regex_lexer.rb
- lib/rouge/template_lexer.rb
- lib/rouge/tex_theme_renderer.rb
- lib/rouge/text_analyzer.rb
- lib/rouge/theme.rb
- lib/rouge/themes/base16.rb
- lib/rouge/themes/bw.rb
- lib/rouge/themes/colorful.rb
- lib/rouge/themes/github.rb
- lib/rouge/themes/gruvbox.rb
- lib/rouge/themes/igor_pro.rb
- lib/rouge/themes/magritte.rb
- lib/rouge/themes/molokai.rb
- lib/rouge/themes/monokai.rb
- lib/rouge/themes/monokai_sublime.rb
- lib/rouge/themes/pastie.rb
- lib/rouge/themes/thankful_eyes.rb
- lib/rouge/themes/tulip.rb
- lib/rouge/token.rb
- lib/rouge/util.rb
- lib/rouge/version.rb