diff --git a/OSCADSharp/OSCADSharp/BlockStatementObject.cs b/OSCADSharp/OSCADSharp/BlockStatementObject.cs
new file mode 100644
index 0000000..273a2ab
--- /dev/null
+++ b/OSCADSharp/OSCADSharp/BlockStatementObject.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OSCADSharp
+{
+
+ ///
+ /// A statement that has multiple child nodes, whose ToString output
+ /// is more or less just an aggregate of the children
+ ///
+ internal class BlockStatementObject : OSCADObject
+ {
+ private string outerStatement;
+ private IEnumerable children;
+
+ internal BlockStatementObject(string outerStatement, IEnumerable children)
+ {
+ this.outerStatement = outerStatement;
+ this.children = children;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (var child in this.children)
+ {
+ sb.AppendLine(child.ToString());
+ }
+
+ var formatter = new BlockFormatter(this.outerStatement, sb.ToString());
+ return formatter.ToString();
+ }
+ }
+}
diff --git a/OSCADSharp/OSCADSharp/Booleans/Union.cs b/OSCADSharp/OSCADSharp/Booleans/Union.cs
index 48b6f65..23b42d9 100644
--- a/OSCADSharp/OSCADSharp/Booleans/Union.cs
+++ b/OSCADSharp/OSCADSharp/Booleans/Union.cs
@@ -9,30 +9,14 @@ namespace OSCADSharp.Booleans
///
/// A union of child nodes. This is the sum of all children (logical or).
///
- internal class Union : OSCADObject
+ internal class Union : BlockStatementObject
{
- private IEnumerable children;
-
///
/// Create a union that is the combination of all children
///
/// OSCADObjects to combine
- internal Union(IEnumerable children)
+ internal Union(IEnumerable children) : base("union()", children)
{
- this.children = children;
- }
-
- public override string ToString()
- {
- string unionCommand = "union()";
- StringBuilder sb = new StringBuilder();
- foreach (var child in this.children)
- {
- sb.AppendLine(child.ToString());
- }
-
- var formatter = new BlockFormatter(unionCommand, sb.ToString());
- return formatter.ToString();
}
}
}
diff --git a/OSCADSharp/OSCADSharp/OSCADSharp.csproj b/OSCADSharp/OSCADSharp/OSCADSharp.csproj
index 1ad1a1e..f84b9c2 100644
--- a/OSCADSharp/OSCADSharp/OSCADSharp.csproj
+++ b/OSCADSharp/OSCADSharp/OSCADSharp.csproj
@@ -41,6 +41,7 @@
+