Add an additional optional argument to SpanScanner.spanFrom.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//795343003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/string_scanner@42305 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/string_scanner/CHANGELOG.md b/pkgs/string_scanner/CHANGELOG.md
index d273748..9c03874 100644
--- a/pkgs/string_scanner/CHANGELOG.md
+++ b/pkgs/string_scanner/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.3
+
+* Add an optional `endState` argument to `SpanScanner.spanFrom`.
+
 ## 0.1.2
 
 * Add `StringScanner.substring`, which returns a substring of the source string.
diff --git a/pkgs/string_scanner/lib/src/span_scanner.dart b/pkgs/string_scanner/lib/src/span_scanner.dart
index a70d5fd..2a78b5b 100644
--- a/pkgs/string_scanner/lib/src/span_scanner.dart
+++ b/pkgs/string_scanner/lib/src/span_scanner.dart
@@ -58,8 +58,10 @@
 
   /// Creates a [FileSpan] representing the source range between [startState]
   /// and the current position.
-  FileSpan spanFrom(LineScannerState startState) =>
-      _sourceFile.span(startState.position, position);
+  FileSpan spanFrom(LineScannerState startState, [LineScannerState endState]) {
+    var endPosition = endState == null ? position : endState.position;
+    return _sourceFile.span(startState.position, endPosition);
+  }
 
   bool matches(Pattern pattern) {
     if (!super.matches(pattern)) {
diff --git a/pkgs/string_scanner/pubspec.yaml b/pkgs/string_scanner/pubspec.yaml
index d14a43e..da93ead 100644
--- a/pkgs/string_scanner/pubspec.yaml
+++ b/pkgs/string_scanner/pubspec.yaml
@@ -1,5 +1,5 @@
 name: string_scanner
-version: 0.1.2
+version: 0.1.3
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://www.dartlang.org
 description: >