| Index: lib/src/parser.dart
|
| diff --git a/lib/src/parser.dart b/lib/src/parser.dart
|
| index 5dac14617bc517d6fe25f73f0f49b35d4ff5a70b..24090535558d42a283bf37e71bfee0f355c7665e 100644
|
| --- a/lib/src/parser.dart
|
| +++ b/lib/src/parser.dart
|
| @@ -21,8 +21,12 @@ class Parser {
|
| /// The path context for the glob.
|
| final p.Context _context;
|
|
|
| - Parser(String component, this._context)
|
| - : _scanner = new StringScanner(component);
|
| + /// Whether this glob is case-sensitive.
|
| + final bool _caseSensitive;
|
| +
|
| + Parser(String component, this._context, {bool caseSensitive: true})
|
| + : _scanner = new StringScanner(component),
|
| + _caseSensitive = caseSensitive;
|
|
|
| /// Parses an entire glob.
|
| SequenceNode parse() => _parseSequence();
|
| @@ -42,7 +46,7 @@ class Parser {
|
| nodes.add(_parseNode(inOptions: inOptions));
|
| }
|
|
|
| - return new SequenceNode(nodes);
|
| + return new SequenceNode(nodes, caseSensitive: _caseSensitive);
|
| }
|
|
|
| /// Parses an [AstNode].
|
| @@ -69,7 +73,9 @@ class Parser {
|
| /// Returns `null` if there's not one to parse.
|
| AstNode _parseStar() {
|
| if (!_scanner.scan('*')) return null;
|
| - return _scanner.scan('*') ? new DoubleStarNode(_context) : new StarNode();
|
| + return _scanner.scan('*')
|
| + ? new DoubleStarNode(_context, caseSensitive: _caseSensitive)
|
| + : new StarNode(caseSensitive: _caseSensitive);
|
| }
|
|
|
| /// Tries to parse an [AnyCharNode].
|
| @@ -77,7 +83,7 @@ class Parser {
|
| /// Returns `null` if there's not one to parse.
|
| AstNode _parseAnyChar() {
|
| if (!_scanner.scan('?')) return null;
|
| - return new AnyCharNode();
|
| + return new AnyCharNode(caseSensitive: _caseSensitive);
|
| }
|
|
|
| /// Tries to parse an [RangeNode].
|
| @@ -125,7 +131,8 @@ class Parser {
|
| }
|
| }
|
|
|
| - return new RangeNode(ranges, negated: negated);
|
| + return new RangeNode(ranges,
|
| + negated: negated, caseSensitive: _caseSensitive);
|
| }
|
|
|
| /// Tries to parse an [OptionsNode].
|
| @@ -144,7 +151,7 @@ class Parser {
|
| if (options.length == 1) _scanner.expect(',');
|
| _scanner.expect('}');
|
|
|
| - return new OptionsNode(options);
|
| + return new OptionsNode(options, caseSensitive: _caseSensitive);
|
| }
|
|
|
| /// Parses a [LiteralNode].
|
| @@ -168,6 +175,7 @@ class Parser {
|
| }
|
| if (!inOptions && _scanner.matches('}')) _scanner.error('unexpected "}"');
|
|
|
| - return new LiteralNode(buffer.toString(), _context);
|
| + return new LiteralNode(buffer.toString(),
|
| + context: _context, caseSensitive: _caseSensitive);
|
| }
|
| }
|
|
|