// This file is part of YamlDotNet - A .NET library for YAML. // Copyright (c) Antoine Aubry and contributors // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is furnished to do // so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. namespace YamlDotNet.Core.Events { /// /// Represents a scalar event. /// public sealed class Scalar : NodeEvent { /// /// Gets the event type, which allows for simpler type comparisons. /// internal override EventType Type => EventType.Scalar; /// /// Gets the value. /// /// The value. public string Value { get; } /// /// Gets the style of the scalar. /// /// The style. public ScalarStyle Style { get; } /// /// Gets a value indicating whether the tag is optional for the plain style. /// public bool IsPlainImplicit { get; } /// /// Gets a value indicating whether the tag is optional for any non-plain style. /// public bool IsQuotedImplicit { get; } /// /// Gets a value indicating whether this instance is canonical. /// /// public override bool IsCanonical => !IsPlainImplicit && !IsQuotedImplicit; /// /// Initializes a new instance of the class. /// /// The anchor. /// The tag. /// The value. /// The style. /// . /// . /// The start position of the event. /// The end position of the event. public Scalar(AnchorName anchor, TagName tag, string value, ScalarStyle style, bool isPlainImplicit, bool isQuotedImplicit, Mark start, Mark end) : base(anchor, tag, start, end) { this.Value = value; this.Style = style; this.IsPlainImplicit = isPlainImplicit; this.IsQuotedImplicit = isQuotedImplicit; } /// /// Initializes a new instance of the class. /// /// The anchor. /// The tag. /// The value. /// The style. /// . /// . public Scalar(AnchorName anchor, TagName tag, string value, ScalarStyle style, bool isPlainImplicit, bool isQuotedImplicit) : this(anchor, tag, value, style, isPlainImplicit, isQuotedImplicit, Mark.Empty, Mark.Empty) { } /// /// Initializes a new instance of the class. /// /// The value. public Scalar(string value) : this(AnchorName.Empty, TagName.Empty, value, ScalarStyle.Any, true, true, Mark.Empty, Mark.Empty) { } /// /// Initializes a new instance of the class. /// /// The tag. /// The value. public Scalar(TagName tag, string value) : this(AnchorName.Empty, tag, value, ScalarStyle.Any, true, true, Mark.Empty, Mark.Empty) { } /// /// Initializes a new instance of the class. /// public Scalar(AnchorName anchor, TagName tag, string value) : this(anchor, tag, value, ScalarStyle.Any, true, true, Mark.Empty, Mark.Empty) { } /// /// Returns a that represents the current . /// /// /// A that represents the current . /// public override string ToString() { return $"Scalar [anchor = {Anchor}, tag = {Tag}, value = {Value}, style = {Style}, isPlainImplicit = {IsPlainImplicit}, isQuotedImplicit = {IsQuotedImplicit}]"; } /// /// Invokes run-time type specific Visit() method of the specified visitor. /// /// visitor, may not be null. public override void Accept(IParsingEventVisitor visitor) { visitor.Visit(this); } } }