public static bool IsValid(jsduck.Class instance) { if (instance == null || instance.files == null || instance.files.Count() < 1 || string.IsNullOrWhiteSpace(instance.files[0].filename) || string.IsNullOrWhiteSpace(instance.files[0].href)) { return(false); } return(true); }
public Class(string name, string[] comments, Dictionary <string, HashSet <string> > @params, bool isSingleton, jsduck.Class jsClass, Dictionary <string, jsduck.Class> jsClassMap, string baseClass = null) : base(name, comments, @params, jsClassMap) { this.IsSingleton = isSingleton; this.BaseClass = baseClass == null || !jsClassMap.ContainsKey(baseClass) ? null : jsClassMap[baseClass].name; this.JsClass = jsClass; this.constructor = new Lazy <MethodMember>(this.FindConstructor, System.Threading.LazyThreadSafetyMode.ExecutionAndPublication); }
/// <summary> /// Create new tsClass into tsModule with members from jsClass meta information /// </summary> private Class BuildClass(Module tsModule, jsduck.Class jsClass) { Dictionary <string, HashSet <string> > jsHtmlParams; string[] jsHtmlComments; // Extract class document jsHtmlComments = JsDoc.ExtractComments(jsClass.Href, null, jsClass.docs, out jsHtmlParams); // Create class var tsClass = tsModule.Add(new Class(jsClass.name, jsHtmlComments, jsHtmlParams, jsClass.singleton ?? false, jsClass, this.JsClassMap, jsClass.extends)); Console.WriteLine($@"[{jsClass.OwnMembers.Length}]"); foreach (var jsMember in jsClass.OwnMembers) { // Extract member document jsHtmlComments = JsDoc.ExtractComments(jsClass.Href + '-' + jsMember.id, jsMember.id, jsClass.docs, out jsHtmlParams); // Create specific member Member member; switch (jsMember.tagname) { case PropertyMember.TAG: member = new PropertyMember(jsMember.name, jsHtmlComments, jsHtmlParams, tsClass, jsMember, this.JsClassMap); break; case MethodMember.TAG: member = new MethodMember(jsMember.name, jsHtmlComments, jsHtmlParams, tsClass, jsMember, this.JsClassMap); break; case ConfigMember.TAG: member = new ConfigMember(jsMember.name, jsHtmlComments, jsHtmlParams, tsClass, jsMember, this.JsClassMap); tsClass.MemberConfigs.Add(member.Name, member); break; case EventMember.TAG: member = new EventMember(jsMember.name, jsHtmlComments, jsHtmlParams, tsClass, jsMember, this.JsClassMap); break; default: throw new NotImplementedException(jsMember.tagname); } if (!tsClass.Members.ContainsKey(member.Name)) { tsClass.Members.Add(member.Name, member); } else { switch (jsMember.tagname) { case PropertyMember.TAG: case MethodMember.TAG: if (!tsClass.MemberExs.ContainsKey(member.Name)) { tsClass.MemberExs.Add(member.Name, new HashSet <Member>() { tsClass.Members[member.Name] }); } else { tsClass.MemberExs[member.Name].Add(tsClass.Members[member.Name]); } tsClass.Members[member.Name] = member; break; case ConfigMember.TAG: case EventMember.TAG: if (!tsClass.MemberExs.ContainsKey(member.Name)) { tsClass.MemberExs.Add(member.Name, new HashSet <Member>() { member }); } else { tsClass.MemberExs[member.Name].Add(member); } break; default: throw new NotImplementedException(jsMember.tagname); } } } return(tsClass); }