private static CodeTypeDeclaration Entry2Class(string EntryPath) { var xdoc = XDocument.Load(EntryPath); var FileName = Path.GetFileNameWithoutExtension(EntryPath); ClassNameDef ClassName = CreateClassName(FileName, xdoc); if (ClassName == null) { Console.WriteLine("Skipped file: " + FileName); return(null); } CodeTypeDeclaration CurrentClass = null; if (ClassLookup.ContainsKey(ClassName.ActionScriptName) == false) { CurrentClass = Builder.CreateClass(ClassName); ClassLookup[ClassName.ActionScriptName] = CurrentClass; if (ClassName.ActionScriptName.IndexOf("Static") > -1) { CurrentClass.TypeAttributes = CurrentClass.TypeAttributes | TypeAttributes.Sealed; } } else { CurrentClass = ClassLookup[ClassName.ActionScriptName]; } xdoc.Descendants("entry").ToList <XElement>().ForEach(e => AddMember(CurrentClass, e)); return(CurrentClass); }
private static CodeTypeDeclaration Entry2Class(string EntryPath) { var xdoc = XDocument.Load(EntryPath); var FileName = Path.GetFileNameWithoutExtension(EntryPath); ClassNameDef ClassName = CreateClassName(FileName, xdoc); if (ClassName == null) { Console.WriteLine("Skipped file: " + FileName); return(null); } CodeTypeDeclaration CurrentClass = null; if (ClassLookup.ContainsKey(ClassName.ActionScriptName) == false) { CurrentClass = Builder.CreateClass(ClassName); ClassLookup[ClassName.ActionScriptName] = CurrentClass; } else { CurrentClass = ClassLookup[ClassName.ActionScriptName]; } if ((xdoc.Root.Attribute("type") != null) && (xdoc.Root.Attribute("type").Value != "method")) { xdoc.Descendants("entry").ToList <XElement>().ForEach(e => AddMembers(CurrentClass, e)); } else if ((xdoc.Root.Attribute("type") != null) && (xdoc.Root.Attribute("type").Value == "method")) { AddMethod(CurrentClass, xdoc.Root); } return(CurrentClass); }
private static ClassNameDef CreateClassName(String FileName, XDocument xdoc) { ClassNameDef result = new ClassNameDef(); String ClassName = null; if ((xdoc.Root.Attribute("type") != null) && (xdoc.Root.Attribute("type").Value == "widget")) { ClassName = CapitalizeName(xdoc.Root.Attribute("name").Value); } else if ((xdoc.Root.Attribute("type") != null) && (xdoc.Root.Attribute("type").Value == "method")) { ClassName = "JQueryUI"; result.JavascriptName = "JQuery"; } else if (FileName.IndexOf('.') > -1) { var parts = FileName.Split('.'); if (parts[0].ToLower() != "jquery") { ClassName = CapitalizeName(parts[0]); } else { ClassName = "JQueryStaticUI"; result.JavascriptName = "JQuery"; } } else { if (xdoc.Root.Attributes("return").Count() > 0) { ClassName = CapitalizeName(xdoc.Root.Attribute("return").Value); result.JavascriptName = ClassName; if (ClassName.Length == 0) { return(null); } } else { if (xdoc.Root.Name == "entries") { ClassName = CapitalizeName(xdoc.Root.Elements("entry").ToList <XElement>()[0].Attribute("return").Value); } else { return(null); } } } ClassName = TranslateClassName(ClassName); ClassName = CapitalizeName(ClassName); result.ActionScriptName = ClassName; if (ClassName == "JQueryUI") { result.Extends = "JQuery"; } return(result); }
private static void AddHeightStyleEnum(CodeMemberField field, List <XElement> RawEnumValues) { if (Builder.GetClassByName("HeightStyles") == null) { var NameDef = new ClassNameDef() { ActionScriptName = "HeightStyles" }; var EnumClass = Builder.CreateClass(NameDef); RawEnumValues.ForEach(v => CreateEnumValue(EnumClass, v)); } }
private static void CreateClass(JToken ClassToken, string FileName) { var type = Builder.GetClassByName((String)ClassToken["name"]); if (type == null) { var name = new ClassNameDef() { ActionScriptName = FormatClassName((String)ClassToken["name"]), JavascriptName = (String)ClassToken["name"] }; type = Builder.CreateClass(name); type.Comments.Add(new CodeCommentStatement("Generated from file: " + FileName, true)); } AddMembers(type, ClassToken, false); }
private static CodeTypeDeclaration CreateArgumentObjectClass(string RawClassName, XDocument xdoc) { var Name = FormatFromHypenatedName(RawClassName); if (ClassLookup.ContainsKey(Name)) { return(ClassLookup[Name]); } var NameDef = new ClassNameDef() { ActionScriptName = Name, Extends = "Argument" }; var classDef = Builder.CreateClass(NameDef); ClassLookup[Name] = classDef; xdoc.Root.Elements("property").ToList <XElement>().ForEach(e => AddMemberFromPropertyElement(classDef, e)); return(classDef); }
private static void CreateCompileUnit(JToken ClassToken, string FileName) { var className = new ClassNameDef() { ActionScriptName = FormatClassName((String)ClassToken["name"]), JavascriptName = (String)ClassToken["name"] }; var type = Builder.CreateClass(className); type.Comments.Add(new CodeCommentStatement("Generated from file: " + FileName, true)); AddMembers(type, ClassToken, true); if (ClassToken["classes"] != null) { AddClasses(ClassToken["classes"], FileName); } Console.WriteLine("Created: " + className.ActionScriptName); }
private static string CreateTypedObjectForPlainObject(string BaseName, XElement Elm) { var propertyElms = Elm.Elements("property"); var ClassName = new ClassNameDef() { ActionScriptName = CapitalizeName(BaseName) + "Object" }; if (ClassLookup.ContainsKey(ClassName.ActionScriptName)) { throw new Exception("Class name already exists: " + ClassName.ActionScriptName); } var classDef = Builder.CreateClass(ClassName); ClassLookup[ClassName.ActionScriptName] = classDef; foreach (var prop in propertyElms) { AddProperty(prop, classDef); } return(ClassName.ActionScriptName); }