internal bool GetPrompt(string fieldName, JObject message, MessageOrConfirmation info) { bool found = false; JToken val; if (message.TryGetValue(fieldName, out val)) { if (val is JValue) { info.MessageScript = (string)val; } else if (val is JArray) { info.Prompt = (PromptAttribute)ProcessTemplate(message, new PromptAttribute((from msg in val select(string) msg).ToArray())); } else { throw new ArgumentException($"{val} must be string or array of strings."); } if (message["Active"] != null) { info.ActiveScript = (string)message["Active"]; } if (message["Dependencies"] != null) { info.Dependencies = (from dependent in message["Dependencies"] select(string) dependent); } found = true; } return(found); }
internal IEnumerable <MessageOrConfirmation> ProcessMessages(string fieldName, JObject fieldSchema) { JToken array; if (fieldSchema.TryGetValue(fieldName, out array)) { foreach (var message in array.Children <JObject>()) { var info = new MessageOrConfirmation(); if (GetPrompt("Message", message, info)) { info.IsMessage = true; yield return(info); } else if (GetPrompt("Confirm", message, info)) { info.IsMessage = false; yield return(info); } else { throw new ArgumentException($"{message} is not Message or Confirm"); } } } }