Glob

com.github.arturopala.gitignore.Glob$
object Glob

Globbing pathnames.

Wildcard pattern matcher implementing the same rules as https://www.man7.org/linux/man-pages/man7/glob.7.html

Note that wildcard patterns are not regular expressions, although they are a bit similar. First of all, they match filenames, rather than text, and secondly, the conventions are not the same: for example, in a regular expression '*' means zero or more copies of the preceding thing.

Pattern syntax:

A string is a wildcard pattern if it contains one of the characters '?', '*' or '['. Globbing is the operation that expands a wildcard pattern into the list of pathnames matching the pattern. Matching is defined by:

A '?' (not between brackets) matches any single character.

A '*' (not between brackets) matches any string, including the empty string.

A '/' in a pathname cannot be matched by a '?' or '*' wildcard, or by a range like "[.-0]". A range containing an explicit '/' character is syntactically incorrect.

An expression "[...]" where the first character after the leading '[' is not an '!' matches a single character, namely any of the characters enclosed by the brackets. The string enclosed by the brackets cannot be empty; therefore ']' can be allowed between the brackets, provided that it is the first character. (Thus, "[][!]" matches the three characters '[', ']' and '!'.)

There is one special convention: two characters separated by '-' denote a range. (Thus, "[A-Fa-f0-9]" is equivalent to "[ABCDEFabcdef0123456789]".) One may include '-' in its literal meaning by making it the first or last character between the brackets. (Thus, "[]-]" matches just the two characters ']' and '-', and "[--0]" matches the three characters '-', '.', '0', since '/' cannot be matched.)

Now that regular expressions have bracket expressions where the negation is indicated by a '^', POSIX has declared the effect of a wildcard pattern "[^...]" to be undefined.

An expression "[!...]" matches a single character, namely any character that is not matched by the expression obtained by removing the first '!' from it. (Thus, "[!]a-]" matches any single character except ']', 'a' and '-'.)

One can remove the special meaning of '?', '' and '[' by preceding them by a backslash, or, in case this is part of a shell command line, enclosing them in quotes. Between brackets these characters stand for themselves. Thus, "[[?]" matches the four characters '[', '?', '*' and ''.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Glob.type

Members list

Concise view

Type members

Classlikes

A wildcard pattern matching any single character except path separator '/' character.

A wildcard pattern matching any single character except path separator '/' character.

Attributes

Graph
Supertypes
trait Pattern
class Object
trait Matchable
class Any
Self type
case object AnyStringPattern extends Pattern with WildcardPattern

A wildcard pattern matching anything but path separator '/' character.

A wildcard pattern matching anything but path separator '/' character.

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
trait Pattern
class Object
trait Matchable
class Any
Self type
case object AnythingPattern extends Pattern with WildcardPattern

A wildcard pattern matching anything, inluding path separator.

A wildcard pattern matching anything, inluding path separator.

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
trait Pattern
class Object
trait Matchable
class Any
Self type
final case class BracketPattern(pattern: String) extends Pattern with SingleCharacterPattern

A wildcard pattern matching either class or range of characters.

A wildcard pattern matching either class or range of characters.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Pattern
class Object
trait Matchable
class Any

Support for character classes and ranges.

Support for character classes and ranges.

Attributes

Companion:
trait
Graph
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type
sealed trait CharacterCheck

Character check defined between brackets, either class or range.

Character check defined between brackets, either class or range.

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
final case class CharacterClassCheck(characters: String) extends CharacterCheck

Checks if the character is of any of the provided characters.

Checks if the character is of any of the provided characters.

The string cannot be empty; therefore ']' can be allowed, provided that it is the first character. (Thus, "][!" matches the three characters '[', ']' and '!'.)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
final case class CharacterRangeCheck(from: Char, to: Char) extends CharacterCheck

Checks if the character is between provided range.

Checks if the character is between provided range.

There is one special convention: two characters separated by '-' denote a range. (Thus, "[A-Fa-f0-9]" is equivalent to "[ABCDEFabcdef0123456789]".) One may include '-' in its literal meaning by making it the first or last character between the brackets. (Thus, "[]-]" matches just the two characters ']' and '-', and "[--0]" matches the three characters '-', '.', '0', since '/' cannot be matched.)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
final case class CompositeCharacterCheck(checks: List[CharacterCheck]) extends CharacterCheck

Composite check nesting a sequence of positive checks.

Composite check nesting a sequence of positive checks.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
final case class CompositePattern(patterns: List[Pattern]) extends Pattern

A pattern consisting of a sequence of nested patterns.

A pattern consisting of a sequence of nested patterns.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Pattern
class Object
trait Matchable
class Any
final case class LiteralPattern(pattern: String) extends Pattern

A pattern matching literally, without any wildcards.

A pattern matching literally, without any wildcards.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Pattern
class Object
trait Matchable
class Any
object Matcher

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Matcher.type
sealed trait Matcher

An engine that performs match operations on a character sequence by interpreting a Pattern.

An engine that performs match operations on a character sequence by interpreting a Pattern.

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
final case class NegatedCompositeCharacterCheck(checks: List[CharacterCheck]) extends CharacterCheck

Composite check nesting a sequence of negative checks.

Composite check nesting a sequence of negative checks.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
sealed trait Pattern

A compiled representation of a glob pattern.

A compiled representation of a glob pattern.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes

A type of pattern matching single character only.

A type of pattern matching single character only.

Attributes

Graph
Supertypes
trait Pattern
class Object
trait Matchable
class Any
Known subtypes
sealed trait WildcardPattern extends Pattern

A type of pattern with variable match length, which can possibly consume nothing or all the remaining input.

A type of pattern with variable match length, which can possibly consume nothing or all the remaining input.

Attributes

Graph
Supertypes
trait Pattern
class Object
trait Matchable
class Any
Known subtypes

Value members

Concrete methods

final def compile(pattern: String): Pattern

Compile pattern expression as re-usable Pattern instance.

Compile pattern expression as re-usable Pattern instance.

Attributes

final def isWildcardPattern(pattern: String): Boolean