| Index: mojo/public/dart/third_party/yaml/lib/src/event.dart
|
| diff --git a/mojo/public/dart/third_party/yaml/lib/src/event.dart b/mojo/public/dart/third_party/yaml/lib/src/event.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..96e2f1666f8ad5bd613afca88d21f9c5f4bcb546
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/yaml/lib/src/event.dart
|
| @@ -0,0 +1,157 @@
|
| +// Copyright (c) 2014, 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.event;
|
| +
|
| +import 'package:source_span/source_span.dart';
|
| +
|
| +import 'style.dart';
|
| +import 'yaml_document.dart';
|
| +
|
| +/// An event emitted by a [Parser].
|
| +class Event {
|
| + /// The event type.
|
| + final EventType type;
|
| +
|
| + /// The span associated with the event.
|
| + final FileSpan span;
|
| +
|
| + Event(this.type, this.span);
|
| +
|
| + String toString() => type.toString();
|
| +}
|
| +
|
| +/// An event indicating the beginning of a YAML document.
|
| +class DocumentStartEvent implements Event {
|
| + get type => EventType.DOCUMENT_START;
|
| + final FileSpan span;
|
| +
|
| + /// The document's `%YAML` directive, or `null` if there was none.
|
| + final VersionDirective versionDirective;
|
| +
|
| + /// The document's `%TAG` directives, if any.
|
| + final List<TagDirective> tagDirectives;
|
| +
|
| + /// Whether the document started implicitly (that is, without an explicit
|
| + /// `===` sequence).
|
| + final bool isImplicit;
|
| +
|
| + DocumentStartEvent(this.span, {this.versionDirective,
|
| + List<TagDirective> tagDirectives, this.isImplicit: true})
|
| + : tagDirectives = tagDirectives == null ? [] : tagDirectives;
|
| +
|
| + String toString() => "DOCUMENT_START";
|
| +}
|
| +
|
| +/// An event indicating the end of a YAML document.
|
| +class DocumentEndEvent implements Event {
|
| + get type => EventType.DOCUMENT_END;
|
| + final FileSpan span;
|
| +
|
| + /// Whether the document ended implicitly (that is, without an explicit
|
| + /// `...` sequence).
|
| + final bool isImplicit;
|
| +
|
| + DocumentEndEvent(this.span, {this.isImplicit: true});
|
| +
|
| + String toString() => "DOCUMENT_END";
|
| +}
|
| +
|
| +/// An event indicating that an alias was referenced.
|
| +class AliasEvent implements Event {
|
| + get type => EventType.ALIAS;
|
| + final FileSpan span;
|
| +
|
| + /// The name of the anchor.
|
| + final String name;
|
| +
|
| + AliasEvent(this.span, this.name);
|
| +
|
| + String toString() => "ALIAS $name";
|
| +}
|
| +
|
| +/// A base class for events that can have anchor and tag properties associated
|
| +/// with them.
|
| +abstract class _ValueEvent implements Event {
|
| + /// The name of the value's anchor, or `null` if it wasn't anchored.
|
| + String get anchor;
|
| +
|
| + /// The text of the value's tag, or `null` if it wasn't tagged.
|
| + String get tag;
|
| +
|
| + String toString() {
|
| + var buffer = new StringBuffer('$type');
|
| + if (anchor != null) buffer.write(" &$anchor");
|
| + if (tag != null) buffer.write(" $tag");
|
| + return buffer.toString();
|
| + }
|
| +}
|
| +
|
| +/// An event indicating a single scalar value.
|
| +class ScalarEvent extends _ValueEvent {
|
| + get type => EventType.SCALAR;
|
| + final FileSpan span;
|
| + final String anchor;
|
| + final String tag;
|
| +
|
| + /// The contents of the scalar.
|
| + final String value;
|
| +
|
| + /// The style of the scalar in the original source.
|
| + final ScalarStyle style;
|
| +
|
| + ScalarEvent(this.span, this.value, this.style, {this.anchor, this.tag});
|
| +
|
| + String toString() => "${super.toString()} \"$value\"";
|
| +}
|
| +
|
| +/// An event indicating the beginning of a sequence.
|
| +class SequenceStartEvent extends _ValueEvent {
|
| + get type => EventType.SEQUENCE_START;
|
| + final FileSpan span;
|
| + final String anchor;
|
| + final String tag;
|
| +
|
| + /// The style of the collection in the original source.
|
| + final CollectionStyle style;
|
| +
|
| + SequenceStartEvent(this.span, this.style, {this.anchor, this.tag});
|
| +}
|
| +
|
| +/// An event indicating the beginning of a mapping.
|
| +class MappingStartEvent extends _ValueEvent {
|
| + get type => EventType.MAPPING_START;
|
| + final FileSpan span;
|
| + final String anchor;
|
| + final String tag;
|
| +
|
| + /// The style of the collection in the original source.
|
| + final CollectionStyle style;
|
| +
|
| + MappingStartEvent(this.span, this.style, {this.anchor, this.tag});
|
| +}
|
| +
|
| +/// An enum of types of [Event] object.
|
| +class EventType {
|
| + static const STREAM_START = const EventType._("STREAM_START");
|
| + static const STREAM_END = const EventType._("STREAM_END");
|
| +
|
| + static const DOCUMENT_START = const EventType._("DOCUMENT_START");
|
| + static const DOCUMENT_END = const EventType._("DOCUMENT_END");
|
| +
|
| + static const ALIAS = const EventType._("ALIAS");
|
| + static const SCALAR = const EventType._("SCALAR");
|
| +
|
| + static const SEQUENCE_START = const EventType._("SEQUENCE_START");
|
| + static const SEQUENCE_END = const EventType._("SEQUENCE_END");
|
| +
|
| + static const MAPPING_START = const EventType._("MAPPING_START");
|
| + static const MAPPING_END = const EventType._("MAPPING_END");
|
| +
|
| + final String name;
|
| +
|
| + const EventType._(this.name);
|
| +
|
| + String toString() => name;
|
| +}
|
|
|