private List <Action <ValueBag> > CompileImportActions(XElement statement, ValueBag validAssignments) { List <Action <ValueBag> > actions = new List <Action <ValueBag> >(); foreach (var stmt in statement.Elements()) { switch (stmt.Name.LocalName.ToLower()) { case "console.print": actions.Add((data) => this.console.Print(stmt.Value, data)); break; case "console.warn": actions.Add((data) => this.console.Warn(stmt.Value, data)); break; case "console.error": actions.Add((data) => this.console.Error(stmt.Value, data)); break; case "console.debug": actions.Add((data) => this.console.Debug(stmt.Value, data)); break; case "let": // a setter takes the form of // <let propertyname="column name" default="default value"><values><add text="if this" value="then this value" /></values></let> // we need to validate that the setters propertyname is valid var assignment = new Setter(stmt); if (validAssignments.ContainsKey(assignment.Target)) { actions.Add((data) => assignment.Assign(data["sourceValues"], data["targetValues"])); } else { this.log.Warn(string.Format("'{0}' is not a valid assignment attribute. Assignment skipped.", assignment.Target)); } break; } } return(actions); }