| Index: pkg/glob/lib/src/utils.dart
|
| diff --git a/pkg/glob/lib/src/utils.dart b/pkg/glob/lib/src/utils.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..12952e88151139317a443ca6a25befc148d52330
|
| --- /dev/null
|
| +++ b/pkg/glob/lib/src/utils.dart
|
| @@ -0,0 +1,55 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// 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.utils;
|
| +
|
| +/// A range from [min] to [max], inclusive.
|
| +class Range {
|
| + /// The minimum value included by the range.
|
| + final int min;
|
| +
|
| + /// The maximum value included by the range.
|
| + final int max;
|
| +
|
| + /// Whether this range covers only a single number.
|
| + bool get isSingleton => min == max;
|
| +
|
| + Range(this.min, this.max);
|
| +
|
| + /// Returns a range that covers only [value].
|
| + Range.singleton(int value)
|
| + : this(value, value);
|
| +
|
| + /// Whether [this] contains [value].
|
| + bool contains(int value) => value >= min && value <= max;
|
| +}
|
| +
|
| +/// An implementation of [Match] constructed by [Glob]s.
|
| +class GlobMatch implements Match {
|
| + final String input;
|
| + final Pattern pattern;
|
| + final int start = 0;
|
| +
|
| + int get end => input.length;
|
| + int get groupCount => 0;
|
| +
|
| + GlobMatch(this.input, this.pattern);
|
| +
|
| + String operator [](int group) => this.group(group);
|
| +
|
| + String group(int group) {
|
| + if (group != 0) throw new RangeError.range(group, 0, 0);
|
| + return input;
|
| + }
|
| +
|
| + List<String> groups(List<int> groupIndices) =>
|
| + groupIndices.map((index) => group(index)).toList();
|
| +}
|
| +
|
| +final _quote = new RegExp(r"[+*?{}|[\]\\().^$-]");
|
| +
|
| +/// Returns [contents] with characters that are meaningful in regular
|
| +/// expressions backslash-escaped.
|
| +String regExpQuote(String contents) =>
|
| + contents.replaceAllMapped(_quote, (char) => "\\${char[0]}");
|
|
|