private void AutoFillTypeByReturnValue(DocComment dc) { if (dc != null && ReturnValue != null) { if (ReturnValue is bool) { dc.AutoFill(NodeNames.Type, "Boolean"); dc.AutoFill(NodeNames.DefaultValue, (bool)ReturnValue == true ? "true" : "false"); } else if (ReturnValue is string) { dc.AutoFill(NodeNames.Type, "String"); dc.AutoFill(NodeNames.DefaultValue, new StringLiteral((string)ReturnValue, '"', Location.Empty, Location.Empty).ToString()); } else if (ReturnValue is double) { dc.AutoFill(NodeNames.Type, "Number"); if (!(double.IsNaN((double)ReturnValue))) dc.AutoFill(NodeNames.DefaultValue, ReturnValue.ToString()); } else if (ReturnValue is ILiteral) { if (ReturnValue is ArrayLiteral) { dc.AutoFill(NodeNames.Type, "Array"); } else if (ReturnValue is NullLiteral) { dc.AutoFill(NodeNames.DefaultValue, "null"); } else if (ReturnValue is RegExpLiteral) { dc.AutoFill(NodeNames.Type, "RegExp"); dc.AutoFill(NodeNames.DefaultValue, ((RegExpLiteral)ReturnValue).ToString()); } else if (ReturnValue is FunctionExpression) { dc.AutoFill(NodeNames.Type, "Function"); dc.AutoFill(NodeNames.MemberType, "method"); if(_project.AutoCreateFunctionParam) { FunctionExpression fn = (FunctionExpression)ReturnValue; var param = (ParamInfoCollection)dc[NodeNames.Param]; if(param == null) { dc[NodeNames.Param] = param = new ParamInfoCollection(); foreach(Identifier p in fn.Params) { param.Add(p.Value); } } } } } } }
/// <summary> /// 自动识别注释中的名字。 /// </summary> /// <param name="dc">赋值的父对象。</param> /// <param name="value">变量。</param> private void AutoFillName(DocComment dc, string name) { if (dc != null && name != null) dc.AutoFill(NodeNames.Name, name); }