Files
spark/src/DataStreamSuite/DataStreamExpressions/DataStreamExpression.cs
T
John Colvin a05c7410dc refactor: Use DependencyInjection paradigm in DataStreamSuite
This allows us to create loosely coupled services with automatic
dependency resolution
2024-07-02 11:30:14 -04:00

41 lines
1.2 KiB
C#

namespace Bts.DataStreamExpressions;
using BCG;
using System.Text;
public class DataStreamExpression {
public DataStreamExpression(ImmutableList<StatementExpression> statements) =>
Statements = statements;
public ImmutableList<StatementExpression> Statements { get; }
public string print(int startPos, IList<string> activeBindings, PrimitiveManager primitiveManager) {
var sb = new StringBuilder();
foreach (var st in Statements) {
sb.Append(new string(' ', startPos));
sb.Append(st.print(startPos, activeBindings, primitiveManager));
sb.AppendLine(";");
}
sb.AppendLine();
return sb.ToString();
}
public string printView(int startPos) {
var sb = new StringBuilder();
foreach (var st in Statements) {
sb.Append(new string(' ', startPos));
sb.AppendLine(st.printView(startPos));
}
sb.AppendLine();
return sb.ToString();
}
public ViewStream? getView(IDictionary<string, StatementExpression> env, PrimitiveManager primitiveManager) {
for (int i = 0; i < Statements.Count - 1; i++) {
Statements[i].getView(env, primitiveManager);
}
return Statements[^1].getView(env, primitiveManager);
}
}