diff --git a/src/Spectre.Console/Rendering/Segment.cs b/src/Spectre.Console/Rendering/Segment.cs index 0dfed61..35c823d 100644 --- a/src/Spectre.Console/Rendering/Segment.cs +++ b/src/Spectre.Console/Rendering/Segment.cs @@ -15,7 +15,7 @@ namespace Spectre.Console.Rendering /// /// Gets the segment text. /// - public string Text { get; private set; } + public string Text { get; } /// /// Gets a value indicating whether or not this is an expicit line break @@ -38,12 +38,12 @@ namespace Spectre.Console.Rendering /// /// Gets a segment representing a line break. /// - public static Segment LineBreak => new Segment(Environment.NewLine, Style.Plain, true); + public static Segment LineBreak { get; } = new Segment(Environment.NewLine, Style.Plain, true); /// /// Gets an empty segment. /// - public static Segment Empty => new Segment(string.Empty, Style.Plain, false); + public static Segment Empty { get; } = new Segment(string.Empty, Style.Plain, false); /// /// Initializes a new instance of the class. @@ -241,12 +241,10 @@ namespace Spectre.Console.Rendering // Same style? if (previous.Style.Equals(segment.Style)) { - // Modify the content of the previous segment - previous.Text += segment.Text; + previous = new Segment(previous.Text + segment.Text, previous.Style); } else { - // Push the current one to the results. result.Add(previous); previous = segment; } @@ -260,6 +258,15 @@ namespace Spectre.Console.Rendering return result; } + /// + /// Clones the segment. + /// + /// A new segment that's identical to this one. + public Segment Clone() + { + return new Segment(Text, Style); + } + /// /// Splits an overflowing segment into several new segments. ///