/// <summary> /// Parses arguments by /// </summary> /// <param name="argText"></param> /// <returns></returns> private static ArgAttribute ParseArgByPositionProperties(string argText) { var arg = new ArgAttribute(); // NOTE: Do a simple split on "," for the 1st version of fluentscript. var fields = argText.Split(','); var totalFields = fields.Length; // Get the name. if (totalFields >= 1) { arg.Name = fields[0].Trim(); } if (totalFields >= 2) { arg.Desc = fields[1].Trim(); } if (totalFields >= 3) { arg.Type = fields[2].Trim(); } if (totalFields >= 4) { arg.Alias = fields[3].Trim(); } if (totalFields >= 5) { var example = fields[4]; ParseExamples(arg, example); } return(arg); }
public ArgInstance(ArgAttribute arg, FieldInfo field, Type parentType, object parentObject, object defaultValue) { ParentType = parentType; Field = field; Arg = arg; ParentObject = parentObject; DefaultValue = defaultValue; }
/// <summary> /// Converts the parameter value into the proper type of the argument. /// </summary> /// <param name="arg"></param> /// <param name="param"></param> /// <returns></returns> private object ConvertToProperType(ArgAttribute arg, object param) { object val = param; if (param is LObject) { var lobj = (LObject)param; var isInt = arg.Type == "int" && lobj.Type == LTypes.Number; val = isInt ? Convert.ToInt32(lobj.GetValue()) : lobj.GetValue(); } return(val); }
private static void ParseExamples(ArgAttribute arg, string example) { if (!example.Contains("|")) { arg.Examples.Add(example); } else { var examples = example.Split('|'); foreach (var ex in examples) { arg.Examples.Add(ex.Trim()); } } }
/// <summary> /// Parses arguments by /// </summary> /// <param name="argText"></param> /// <returns></returns> private static ArgAttribute ParseArgByNamedProperties(string argText) { // Remove the @arg: from the argText var arg = new ArgAttribute(); // NOTE: Do a simple split on "," for the 1st version of fluentscript. string[] fields = argText.Split(','); int totalFields = fields.Length; foreach (var field in fields) { var tokens = field.Split(':'); // Name string name = tokens[0].Trim().ToLower(); string value = tokens[1].Trim(); if (name == "name") { arg.Name = value; } else if (name == "desc") { arg.Desc = value; } else if (name == "alias") { arg.Alias = value; } else if (name == "type") { arg.Type = value; } else if (name == "examples") { ParseExamples(arg, value); } } return(arg); }
public FindResult GetFindResult(params string[] mandatoryFields) { HashSet<string> mandatoryFieldsSet = new HashSet<string>(mandatoryFields); List<ArgInstance> argInstances = new List<ArgInstance>(); foreach (FieldInfo fieldInfo in GetType().GetFields()) { ArgAttribute attribute = new ArgAttribute("helpmessage"); if (mandatoryFieldsSet.Contains(fieldInfo.Name)) { attribute.IsMandatory = true; } ArgInstance argInstance = new ArgInstance(attribute, fieldInfo, GetType(), this); argInstances.Add(argInstance); } return new FindResult(argInstances, ExecutionLog.CreateErrorLog(), ExecutionLog.CreateWarningLog()); }
public ArgInstance(ArgAttribute arg, FieldInfo field, Type parentType, object parentObject) : this(arg, field, parentType, parentObject, CreateSystemDefaultValue(field.FieldType)) { }
public ArgInstance(ArgAttribute arg, FieldInfo field, Type parentType) : this(arg, field, parentType, parentType) { }