private static ContextInputs MakeContextInputs(string name, Collection <ValueTypeComponent> component, ItemDefinitionMeta curItemDefMeta, Dictionary <string, ItemDefinitionMeta> itemDefMetaDict) { var ctx = new ContextInputs(name); ctx.IsItemDefinition = true; foreach (var item in component) { var itemComponent = FindDefMeta(itemDefMetaDict, curItemDefMeta, item.Name); if (item.ComponentSpecified) { var nestedCtx = MakeContextInputs(item.Name, item.Component, itemComponent, itemDefMetaDict); ctx.Add(item.Name, nestedCtx); } if (item.ListSpecified) { var nestedList = MakeList(item.Name, item.List, itemComponent, itemDefMetaDict); ctx.Add(item.Name, nestedList); } if (itemComponent.TypeName == null) { throw new TCKException($"Missing type name for for component:{item.Name}"); } ctx.Add(item.Name, VariableHelper.MakeVariable(GetValueType(item.Value), itemComponent.TypeName)); } return(ctx); }
public object Execute(VariableContext context = null) { var contextInput = new ContextInputs(); if (context == null) { context = new VariableContext(); } if (context.LocalContext == null) { context.LocalContext = contextInput; } else if (context.LocalContext.ContextDict.ContainsKey("__currentContextX__")) { context.LocalContext.ContextDict["__currentContextX__"] = contextInput; } else { context.LocalContext.Add("__currentContextX__", contextInput); } foreach (var item in ContextEntries) { var itemVal = (Variable)item.Execute(context); contextInput.Add(itemVal.TwoTuple.a, itemVal.TwoTuple.b); } if (context.LocalContext != null) { context.LocalContext.ContextDict.Remove("__currentContextX__"); } return(new Variable(contextInput)); }
public Variable Execute(List <Variable> parameters) { parameters.ExpectedParamCount(1); parameters[0].ExpectedDataType(DataTypeEnum.Context); List <Variable> entries = new List <Variable> (); foreach (var item in parameters[0].ContextInputs.ContextDict) { var cntxt = new ContextInputs().Add("key", item.Key).Add("value", item.Value); entries.Add(cntxt); } return(entries); }
private Variable FindContextVariable(string name, ContextInputs parent) { parent.ContextDict.TryGetValue(name, out var outVariable); return(outVariable); }