| Index: packages/glob/lib/src/parser.dart | 
| diff --git a/packages/glob/lib/src/parser.dart b/packages/glob/lib/src/parser.dart | 
| index 5dac14617bc517d6fe25f73f0f49b35d4ff5a70b..d3c7e1ddd9658a99e1139831fe79ea23854c05a3 100644 | 
| --- a/packages/glob/lib/src/parser.dart | 
| +++ b/packages/glob/lib/src/parser.dart | 
| @@ -2,8 +2,6 @@ | 
| // for details. All rights reserved. Use of this source code is governed by a | 
| // BSD-style license that can be found in the LICENSE file. | 
|  | 
| -library glob.single_component; | 
| - | 
| import 'package:path/path.dart' as p; | 
| import 'package:string_scanner/string_scanner.dart'; | 
|  | 
| @@ -21,8 +19,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(); | 
| @@ -31,7 +33,7 @@ class Parser { | 
| /// | 
| /// If [inOptions] is true, this is parsing within an [OptionsNode]. | 
| SequenceNode _parseSequence({bool inOptions: false}) { | 
| -    var nodes = []; | 
| +    var nodes = <AstNode>[]; | 
|  | 
| if (_scanner.isDone) { | 
| _scanner.error('expected a glob.', position: 0, length: 0); | 
| @@ -42,7 +44,7 @@ class Parser { | 
| nodes.add(_parseNode(inOptions: inOptions)); | 
| } | 
|  | 
| -    return new SequenceNode(nodes); | 
| +    return new SequenceNode(nodes, caseSensitive: _caseSensitive); | 
| } | 
|  | 
| /// Parses an [AstNode]. | 
| @@ -69,7 +71,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 +81,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]. | 
| @@ -95,7 +99,7 @@ class Parser { | 
| position: _scanner.position - 1); | 
| } | 
|  | 
| -    var ranges = []; | 
| +    var ranges = <Range>[]; | 
| while (!_scanner.scan(']')) { | 
| var start = _scanner.position; | 
| // Allow a backslash to escape a character. | 
| @@ -125,7 +129,8 @@ class Parser { | 
| } | 
| } | 
|  | 
| -    return new RangeNode(ranges, negated: negated); | 
| +    return new RangeNode(ranges, | 
| +        negated: negated, caseSensitive: _caseSensitive); | 
| } | 
|  | 
| /// Tries to parse an [OptionsNode]. | 
| @@ -135,7 +140,7 @@ class Parser { | 
| if (!_scanner.scan('{')) return null; | 
| if (_scanner.matches('}')) _scanner.error('unexpected "}".'); | 
|  | 
| -    var options = []; | 
| +    var options = <SequenceNode>[]; | 
| do { | 
| options.add(_parseSequence(inOptions: true)); | 
| } while (_scanner.scan(',')); | 
| @@ -144,7 +149,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 +173,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); | 
| } | 
| } | 
|  |