private void CreateComponents()
{
var components = DefinitionFile.Entities.Where(e => e.States.SourceText.IsEmptyOrWhitespace() && !e.Composition.SourceText.Contains("."));
foreach (var component in components)
{
var componentNode = new BcsComponentNode()
{
Name = component.Id
};
if (!component.Composition.SourceText.IsEmptyOrWhitespace())
{
var componentAgents = component.Composition.SourceText.Split('|').Select(name =>
{
name = name.Trim();
var matchingAgent = DefinitionFile.AtomicAgents.SingleOrDefault(agent => agent.Name == name);
if (matchingAgent == null)
{
componentNode.Errors.Add(new NodeError($"Failed to find matching agent named {name} in the definition file."));
var dummyAgent = new BcsAtomicAgentNode() { Name = name };
DefinitionFile.AtomicAgents.Add(dummyAgent);
return dummyAgent;
}
return matchingAgent;
}).ToList();
componentNode.AtomicAgents.AddRange(componentAgents);
}
DefinitionFile.Components.Add(componentNode);
}
}