mirror of
https://github.com/Ratstail91/Mementos.git
synced 2025-11-29 10:34:27 +11:00
Committed everything
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
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 ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user