This allows us to create loosely coupled services with automatic dependency resolution
41 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|