in Scripts/Runtime/WitRequestFactory.cs [77:112]
private static void MergeEntities(WitResponseClass entities, WitDynamicEntity providerEntity)
{
if (!entities.HasChild(providerEntity.entity))
{
entities[providerEntity.entity] = new WitResponseArray();
}
var mergedArray = entities[providerEntity.entity];
Dictionary<string, WitResponseClass> map = new Dictionary<string, WitResponseClass>();
HashSet<string> synonyms = new HashSet<string>();
var existingKeywords = mergedArray.AsArray;
for (int i = 0; i < existingKeywords.Count; i++)
{
var keyword = existingKeywords[i].AsObject;
var key = keyword["keyword"].Value;
if(!map.ContainsKey(key))
{
map[key] = keyword;
}
}
foreach (var keyword in providerEntity.keywords)
{
if (map.TryGetValue(keyword.keyword, out var keywordObject))
{
foreach (var synonym in keyword.synonyms)
{
keywordObject["synonyms"].Add(synonym);
}
}
else
{
keywordObject = keyword.AsJson;
map[keyword.keyword] = keywordObject;
mergedArray.Add(keywordObject);
}
}
}