Index: mojo/public/dart/third_party/yaml/lib/yaml.dart |
diff --git a/mojo/public/dart/third_party/yaml/lib/yaml.dart b/mojo/public/dart/third_party/yaml/lib/yaml.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9af329a202eb098850b5ac92c88a433239d8dbf5 |
--- /dev/null |
+++ b/mojo/public/dart/third_party/yaml/lib/yaml.dart |
@@ -0,0 +1,112 @@ |
+// 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 'src/loader.dart'; |
+import 'src/style.dart'; |
+import 'src/yaml_document.dart'; |
+import 'src/yaml_exception.dart'; |
+import 'src/yaml_node.dart'; |
+ |
+export 'src/style.dart'; |
+export 'src/utils.dart' show YamlWarningCallback, yamlWarningCallback; |
+export 'src/yaml_document.dart'; |
+export 'src/yaml_exception.dart'; |
+export 'src/yaml_node.dart' hide setSpan; |
+ |
+/// Loads a single document from a YAML string. |
+/// |
+/// If the string contains more than one document, this throws a |
+/// [YamlException]. In future releases, this will become an [ArgumentError]. |
+/// |
+/// The return value is mostly normal Dart objects. However, since YAML mappings |
+/// support some key types that the default Dart map implementation doesn't |
+/// (NaN, lists, and maps), all maps in the returned document are [YamlMap]s. |
+/// These have a few small behavioral differences from the default Map |
+/// implementation; for details, see the [YamlMap] class. |
+/// |
+/// In future versions, maps will instead be [HashMap]s with a custom equality |
+/// operation. |
+/// |
+/// If [sourceUrl] is passed, it's used as the URL from which the YAML |
+/// originated for error reporting. It can be a [String], a [Uri], or `null`. |
+loadYaml(String yaml, {sourceUrl}) => |
+ loadYamlNode(yaml, sourceUrl: sourceUrl).value; |
+ |
+/// Loads a single document from a YAML string as a [YamlNode]. |
+/// |
+/// This is just like [loadYaml], except that where [loadYaml] would return a |
+/// normal Dart value this returns a [YamlNode] instead. This allows the caller |
+/// to be confident that the return value will always be a [YamlNode]. |
+YamlNode loadYamlNode(String yaml, {sourceUrl}) => |
+ loadYamlDocument(yaml, sourceUrl: sourceUrl).contents; |
+ |
+/// Loads a single document from a YAML string as a [YamlDocument]. |
+/// |
+/// This is just like [loadYaml], except that where [loadYaml] would return a |
+/// normal Dart value this returns a [YamlDocument] instead. This allows the |
+/// caller to access document metadata. |
+YamlDocument loadYamlDocument(String yaml, {sourceUrl}) { |
+ var loader = new Loader(yaml, sourceUrl: sourceUrl); |
+ var document = loader.load(); |
+ if (document == null) { |
+ return new YamlDocument.internal( |
+ new YamlScalar.internal(null, loader.span, ScalarStyle.ANY), |
+ loader.span, null, const []); |
+ } |
+ |
+ var nextDocument = loader.load(); |
+ if (nextDocument != null) { |
+ throw new YamlException("Only expected one document.", nextDocument.span); |
+ } |
+ |
+ return document; |
+} |
+ |
+/// 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 |
+/// (NaN, lists, and maps), all maps in the returned document are [YamlMap]s. |
+/// These have a few small behavioral differences from the default Map |
+/// implementation; for details, see the [YamlMap] class. |
+/// |
+/// In future versions, maps will instead be [HashMap]s with a custom equality |
+/// operation. |
+/// |
+/// If [sourceUrl] is passed, it's used as the URL from which the YAML |
+/// originated for error reporting. It can be a [String], a [Uri], or `null`. |
+YamlList loadYamlStream(String yaml, {sourceUrl}) { |
+ var loader = new Loader(yaml, sourceUrl: sourceUrl); |
+ |
+ var documents = []; |
+ var document = loader.load(); |
+ while (document != null) { |
+ documents.add(document); |
+ document = loader.load(); |
+ } |
+ |
+ return new YamlList.internal( |
+ documents.map((document) => document.contents).toList(), |
+ loader.span, |
+ CollectionStyle.ANY); |
+} |
+ |
+/// Loads a stream of documents from a YAML string. |
+/// |
+/// This is like [loadYamlStream], except that it returns [YamlDocument]s with |
+/// metadata wrapping the document contents. |
+List<YamlDocument> loadYamlDocuments(String yaml, {sourceUrl}) { |
+ var loader = new Loader(yaml, sourceUrl: sourceUrl); |
+ |
+ var documents = []; |
+ var document = loader.load(); |
+ while (document != null) { |
+ documents.add(document); |
+ document = loader.load(); |
+ } |
+ |
+ return documents; |
+} |