in packages/LUISGen/src/CSharp.cs [136:236]
static void Entities(dynamic app, Writer w)
{
// Entities
w.WriteLine();
w.IndentLine("public class _Entities");
w.IndentLine("{");
w.Indent();
if (app.entities != null && app.entities.Count > 0)
{
w.IndentLine("// Simple entities");
var first = true;
foreach (var entity in app.entities)
{
if (first)
{
first = false;
}
else
{
w.WriteLine();
}
WriteEntity(entity, entity.name, app, w);
if (entity?.children != null)
{
// Hiearchical
foreach (var child in entity.children)
{
WriteEntity(Utils.Entity(child), child, app, w);
}
}
}
}
WriteEntities(app.prebuiltEntities, app, "Built-in entities", w);
WriteEntities(app.closedLists, app, "Lists", w);
WriteEntities(app.regex_entities, app, "Regex entities", w);
WriteEntities(app.patternAnyEntities, app, "Pattern.any", w);
// Composites
if (app.composites != null && app.composites.Count > 0)
{
w.WriteLine();
w.IndentLine("// Composites");
bool first = true;
foreach (var composite in app.composites)
{
if (first)
{
first = false;
}
else
{
w.WriteLine();
}
var name = Utils.NormalizeName(composite.name);
w.IndentLine($"public class _Instance{name}");
w.IndentLine("{");
w.Indent();
foreach (var child in composite.children)
{
var childName = PropertyName(child, app);
w.IndentLine($"public InstanceData[] {childName};");
}
w.Outdent();
w.IndentLine("}");
w.IndentLine($"public class {name}Class");
w.IndentLine("{");
w.Indent();
foreach (var child in composite.children)
{
WriteEntity(Utils.Entity(child), Utils.IsList(child, app) ? "list" : child, app, w);
}
w.IndentLine("[JsonProperty(\"$instance\")]");
w.IndentLine($"public _Instance{name} _instance;");
w.Outdent();
w.IndentLine("}");
w.IndentLine($"public {name}Class[] {name};");
}
}
// Instance
w.WriteLine();
w.IndentLine("// Instance");
w.IndentLine("public class _Instance");
w.IndentLine("{");
w.Indent();
Utils.WriteInstances((JObject)app, (name) =>
{
var realName = PropertyName(name, app);
w.IndentLine($"public InstanceData[] {realName};");
});
w.Outdent();
w.IndentLine("}");
w.IndentLine("[JsonProperty(\"$instance\")]");
w.IndentLine("public _Instance _instance;");
w.Outdent();
w.IndentLine("}"); // Entities
w.IndentLine("[JsonProperty(\"entities\")]");
w.IndentLine("public _Entities Entities;");
}