blob: f47ba156df73e3b40806924ff25986f19e194b89 [file] [log] [blame]
// Copyright (c) 2011, 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.
part of dart.core;
/**
* An interface for basic searches within strings.
*/
abstract class Pattern {
// NOTE: When using "start" index from the language library, call
// without an argument if start is zero. This allows backwards compatiblity
// with implementations of the older interface that didn't have the start
// index argument.
/**
* Match this pattern against the string repeatedly.
*
* If [start] is provided, matching will start at that index.
*
* The returned iterable lazily computes all the non-overlapping matches
* of the pattern on the string, ordered by start index.
* If a user only requests the first
* match, this function should not compute all possible matches.
*
* The matches are found by repeatedly finding the first match
* of the pattern on the string, starting from the end of the previous
* match, and initially starting from index zero.
*
* If the pattern matches the empty string at some point, the next
* match is found by starting at the previous match's end plus one.
*/
Iterable<Match> allMatches(String string, [int start = 0]);
/**
* Match this pattern against the start of `string`.
*
* If [start] is provided, it must be an integer in the range `0` ..
* `string.length`. In that case, this patten is tested against the
* string at the [start] position. That is, a [Match] is returned if the
* pattern can match a part of the string starting from position [start].
* Returns `null` if the pattern doesn't match.
*/
Match matchAsPrefix(String string, [int start = 0]);
}