Editor/ink-compiler/ParsedHierarchy/ContentList.cs
using System.Collections.Generic;
using System.Text;
namespace Ink.Parsed
{
public class ContentList : Parsed.Object
{
public bool dontFlatten { get; set; }
public Runtime.Container runtimeContainer {
get {
return (Runtime.Container) this.runtimeObject;
}
}
public ContentList (List<Parsed.Object> objects)
{
if( objects != null )
AddContent (objects);
}
public ContentList (params Parsed.Object[] objects)
{
if (objects != null) {
var objList = new List<Parsed.Object> (objects);
AddContent (objList);
}
}
public ContentList()
{
}
public void TrimTrailingWhitespace()
{
for (int i = this.content.Count - 1; i >= 0; --i) {
var text = this.content [i] as Text;
if (text == null)
break;
text.text = text.text.TrimEnd (' ', '\t');
if (text.text.Length == 0)
this.content.RemoveAt (i);
else
break;
}
}
public override Runtime.Object GenerateRuntimeObject ()
{
var container = new Runtime.Container ();
if (content != null) {
foreach (var obj in content) {
var contentObjRuntime = obj.runtimeObject;
// Some objects (e.g. author warnings) don't generate runtime objects
if( contentObjRuntime )
container.AddContent (contentObjRuntime);
}
}
if( dontFlatten )
story.DontFlattenContainer (container);
return container;
}
public override string ToString ()
{
var sb = new StringBuilder ();
sb.Append ("ContentList(");
sb.Append(string.Join (", ", content.ToStringsArray()));
sb.Append (")");
return sb.ToString ();
}
}
}