Improve performance by not doing binary searches.

Normally getting the line and column of a SpanScanner or a
SourceLocation needs a binary search through all the line endings in the
source file. This CL avoids those searches by using an eager SpanScanner
which does extra computation to track its current line and column
position, and storing the line and column directly on _SimpleKey
objects.

See #12

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//1325133002 .
2 files changed
tree: 8db6881444c940dd6fe8bd541a590ab8230887ca
  1. benchmark/
  2. lib/
  3. test/
  4. .gitignore
  5. .test_config
  6. CHANGELOG.md
  7. codereview.settings
  8. libyaml-license.txt
  9. LICENSE
  10. pubspec.yaml
  11. README.md
README.md

A parser for YAML.

Use loadYaml to load a single document, or loadYamlStream to load a stream of documents. For example:

import 'package:yaml/yaml.dart';

main() {
  var doc = loadYaml("YAML: YAML Ain't Markup Language");
  print(doc['YAML']);
}

This library currently doesn't support dumping to YAML. You should use JSON.encode from dart:convert instead:

import 'dart:convert';
import 'package:yaml/yaml.dart';

main() {
  var doc = loadYaml("YAML: YAML Ain't Markup Language");
  print(JSON.encode(doc));
}