class Mustermann::Shell

Matches strings that are identical to the pattern.

@example

Mustermann.new('/*.*', type: :shell) === '/bar' # => false

@see Mustermann::Pattern @see file:README.md#shell Syntax description in the README

Public Class Methods

new(string, **options) click to toggle source

@param (see Mustermann::Pattern#initialize) @return (see Mustermann::Pattern#initialize) @see (see Mustermann::Pattern#initialize)

Calls superclass method
# File lib/mustermann/shell.rb, line 34
def initialize(string, **options)
  @flags = File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB
  super(string, **options)
end

Public Instance Methods

===(string) click to toggle source

@param (see Mustermann::Pattern#===) @return (see Mustermann::Pattern#===) @see (see Mustermann::Pattern#===)

# File lib/mustermann/shell.rb, line 42
def ===(string)
  File.fnmatch? @string, unescape(string), @flags
end
highlighter() click to toggle source

@!visibility private @return [#highlight, nil]

highlighing logic for mustermann-visualizer,
nil if mustermann-visualizer hasn't been loaded
# File lib/mustermann/shell.rb, line 22
def highlighter
  return unless defined? Mustermann::Visualizer::Highlighter
  @@highlighter ||= Mustermann::Visualizer::Highlighter.create do
    on('\\') { |matched| escaped(matched, scanner.getch) }
    on(/[\*\[\]]/, :special)
    on("{") { nested(:union, ?{, ?}, ?,) }
  end
end
peek_size(string) click to toggle source

@param (see Mustermann::Pattern#peek_size) @return (see Mustermann::Pattern#peek_size) @see (see Mustermann::Pattern#peek_size)

Calls superclass method
# File lib/mustermann/shell.rb, line 49
def peek_size(string)
  @peek_string ||= @string + "{**,/**,/**/*}"
  super if File.fnmatch? @peek_string, unescape(string), @flags
end