private static void ProcessMembers( ExtClass ce2 ) { Console.WriteLine( ce2.name ); var ce = GetClass( ce2.name ); CurrHtDoc.LoadHtml( ce2.html ); ce2.AllMembers.ForEach( ProcessMemberDocs ); if ( IncludeConfigsInMainClass && !ce.IsInterface ) ce.Members.AddRange( ce2.members.cfg.Where( t => IsDeclared( ce2, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) && !ce2.members.property.Any( t2 => t2.name.Equals( t.name, StringComparison.Ordinal ) ) && !ce2.members.method.Any( t2 => t2.name.Equals( t.name, StringComparison.Ordinal ) ) ).Select( ProcessCfg ) ); ce.Members.AddRange( ce2.members.property.Where( t => IsDeclared( ce2, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) ).Select( ProcessProperty ) ); ce.Members.AddRange( ce2.members.method.Where( t => IsDeclared( ce2, t ) ).Select( ProcessMethod ) ); if ( !ce.IsInterface ) { ce.Members.AddRange( ce2.statics.property.Where( t => IsDeclared( ce2, t ) && !IsDeclared( ce, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) ).Select( ProcessProperty ) ); ce.Members.AddRange( ce2.statics.method.Where( t => IsDeclared( ce2, t ) && !IsDeclared( ce, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) ).Select( ProcessMethod ) ); } var ceCfg = GetClass( ce.FullName + "Config", false ); if ( ceCfg != null ) { ceCfg.Members.AddRange( ce2.members.cfg.Where( t => IsDeclared( ce2, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) ).Select( ProcessCfg ) ); if ( !ceCfg.IsInterface ) ceCfg.Members.AddRange( ce2.statics.cfg.Where( t => IsDeclared( ce2, t ) && !IsDeclared( ceCfg, t ) && ( t.defined_in.IsNullOrEmpty() || t.defined_in == t.owner || ce2.singleton ) ).Select( ProcessCfg ) ); } var ceEvents = GetClass( ce.FullName + "Events", false ); if ( ceEvents != null ) ceEvents.Members.AddRange( [email protected]( t => IsDeclared( ce2, t ) ).Select( ProcessEvent ) ); if ( ce2.singleton ) { ce.Members.ForEach( t => t.IsStatic = true ); } ce.Summary = FixDoc(); }
private static List<Class> Process( ExtClass ce2 ) { Console.WriteLine( ce2.name ); var ce = GetClass( ce2.name, true ); ce.Attributes.Add( CreateJsAttribute( "Prototype" ) ); ce.IsInterface = ce2.mixedInto != null && ce2.mixedInto.Count > 0; var ceCfg = GetClass( ce.FullName + "Config", true ); ceCfg.Attributes.Add( CreateJsAttribute( "Json" ) ); var ceEvents = GetClass( ce.FullName + "Events", true ); ceEvents.Attributes.Add( CreateJsAttribute( "Json" ) ); var list = new List<Class> { ce, ceCfg, ceEvents }; return list; }
static void ProcessBaseClassAndInterfaces( ExtClass ce2 ) { var ce = GetClass( ce2.name, false ); if ( ce2.superclasses != null && ce2.superclasses.Count > 0 ) ce.BaseClass = GetClass( ce2.superclasses.Last() ); if ( ce2.mixins != null ) ce.Interfaces.AddRange( ce2.mixins.Select( t => GetClass( t ) ) ); if ( ce.BaseClass != null ) { var ceCfg = GetClass( ce.FullName + "Config", false ); if ( ceCfg != null ) ceCfg.BaseClass = GetClass( ce.BaseClass.FullName + "Config", false ); var ceEvents = GetClass( ce.FullName + "Events", true ); if ( ceEvents != null ) ceEvents.BaseClass = GetClass( ce.BaseClass.FullName + "Events", false ); } }
static bool IsDeclared( ExtClass ce2, ExtMember me2 ) { if ( me2.owner == ce2.name && me2.defined_in == ce2.name ) return true; //if ( me2.defined_in.IsNullOrEmpty() || me2.defined_in == ce2.name || ( ce2.singleton && !me2.meta.@static ) ) // return true; var ce = GetClass( ce2.name, false ); var ceOwner = GetClass( me2.owner ); if ( ce.IsInterface && ceOwner.IsInterface ) return false; if ( ceOwner.IsInterface ) { if ( ( ce.BaseClass == null || ce.BaseClass.IsInterface || !ce.BaseClass.Interfaces.Contains( ceOwner ) ) && ce.BaseClass.BaseClass != ceOwner ) return true; } if ( me2.defined_in.IsNotNullOrEmpty() ) { var ceDefiner = GetClass( me2.defined_in ); if ( ceDefiner.IsInterface && !ce.IsInterface ) return true; } return me2.defined_in.IsNullOrEmpty() || ce2.singleton && ( ce2.singleton && !me2.meta.@static ); }