Files
Mementos/Unity/Alternate Genre Jam/Assets/Ink/InkLibs/InkCompiler/ParsedHierarchy/StringExpression.cs
2021-06-30 21:39:19 +10:00

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 ();
}
}
}