| // Copyright (c) 2012, 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("yaml"); |
| |
| #import('dart:math', prefix: 'Math'); |
| |
| #import("deep_equals.dart"); |
| |
| #source("yaml_map.dart"); |
| #source("model.dart"); |
| #source("parser.dart"); |
| #source("visitor.dart"); |
| #source("composer.dart"); |
| #source("constructor.dart"); |
| |
| /** |
| * Loads a single document from a YAML string. If the string contains more than |
| * one document, this throws an error. |
| * |
| * The return value is mostly normal Dart objects. However, since YAML mappings |
| * support some key types that the default Dart map implementation doesn't |
| * (null, NaN, booleans, lists, and maps), all maps in the returned document are |
| * YamlMaps. These have a few small behavioral differences from the default Map |
| * implementation; for details, see the YamlMap class. |
| */ |
| loadYaml(String yaml) { |
| var stream = loadYamlStream(yaml); |
| if (stream.length != 1) { |
| throw new YamlException("Expected 1 document, were ${stream.length}"); |
| } |
| return stream[0]; |
| } |
| |
| /** |
| * Loads a stream of documents from a YAML string. |
| * |
| * The return value is mostly normal Dart objects. However, since YAML mappings |
| * support some key types that the default Dart map implementation doesn't |
| * (null, NaN, booleans, lists, and maps), all maps in the returned document are |
| * YamlMaps. These have a few small behavioral differences from the default Map |
| * implementation; for details, see the YamlMap class. |
| */ |
| List loadYamlStream(String yaml) { |
| return new _Parser(yaml).l_yamlStream().map((doc) => |
| new _Constructor(new _Composer(doc).compose()).construct()); |
| } |
| |
| /** An error thrown by the YAML processor. */ |
| class YamlException implements Exception { |
| String msg; |
| |
| YamlException(this.msg); |
| |
| String toString() => msg; |
| } |