mirror of
https://github.com/Ratstail91/Mementos.git
synced 2025-11-29 02:24:28 +11:00
71 lines
1.9 KiB
C#
71 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Ink.Parsed
|
|
{
|
|
public class StringExpression : Parsed.Expression
|
|
{
|
|
public bool isSingleString {
|
|
get {
|
|
if (content.Count != 1)
|
|
return false;
|
|
|
|
var c = content [0];
|
|
if (!(c is Text))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public StringExpression (List<Parsed.Object> content)
|
|
{
|
|
AddContent (content);
|
|
}
|
|
|
|
public override void GenerateIntoContainer (Runtime.Container container)
|
|
{
|
|
container.AddContent (Runtime.ControlCommand.BeginString());
|
|
|
|
foreach (var c in content) {
|
|
container.AddContent (c.runtimeObject);
|
|
}
|
|
|
|
container.AddContent (Runtime.ControlCommand.EndString());
|
|
}
|
|
|
|
public override string ToString ()
|
|
{
|
|
var sb = new StringBuilder ();
|
|
foreach (var c in content) {
|
|
sb.Append (c.ToString ());
|
|
}
|
|
return sb.ToString ();
|
|
}
|
|
|
|
// Equals override necessary in order to check for CONST multiple definition equality
|
|
public override bool Equals (object obj)
|
|
{
|
|
var otherStr = obj as StringExpression;
|
|
if (otherStr == null) return false;
|
|
|
|
// Can only compare direct equality on single strings rather than
|
|
// complex string expressions that contain dynamic logic
|
|
if (!this.isSingleString || !otherStr.isSingleString) {
|
|
return false;
|
|
}
|
|
|
|
var thisTxt = this.ToString ();
|
|
var otherTxt = otherStr.ToString ();
|
|
return thisTxt.Equals (otherTxt);
|
|
}
|
|
|
|
public override int GetHashCode ()
|
|
{
|
|
return this.ToString ().GetHashCode ();
|
|
}
|
|
}
|
|
}
|
|
|