public static bool AllAssemblies(ConfigBase config, TextWriter w) { w.Write(GetHeader(config.AssemblyPaths, config.IncludeSpecialTypes)); var typeCollection = new TypeCollection(config.GetTypeWriterTypeSelector()); var wroteAnyTypes = WriteSpecialTypes(config.IncludeSpecialTypes, w, config); wroteAnyTypes |= WriteFiles(config.AssemblyPaths, w, config.TypeNotFoundErrorHandler, typeCollection, config.RegexFilter, config); return wroteAnyTypes; }
private static bool WriteSpecialTypes(bool includeSpecialTypes, TextWriter w, ConfigBase config) { if (!includeSpecialTypes) return false; w.NewLine(); w.WriteLine(Resources.ToTypeScriptDSpecialTypes_d.Replace(" ", config.Indent)); w.NewLine(); w.NewLine(); return true; }
private static bool WriteFiles(IEnumerable<string> assemblyPaths, TextWriter w, ITypeNotFoundErrorHandler typeNotFoundErrorHandler, TypeCollection typeCollection, string filterRegex, ConfigBase config) { var filesAlreadyProcessed = new HashSet<string>(new IgnoreCaseStringEqualityComparer()); if (!assemblyPaths.Any()) return false; assemblyPaths.Each(assemblyPath => { if (filesAlreadyProcessed.Contains(assemblyPath)) return; filesAlreadyProcessed.Add(assemblyPath); CollectTypes(assemblyPath, typeNotFoundErrorHandler, typeCollection, config); }); var renderedOut = typeCollection.Render(filterRegex); w.WriteLine(renderedOut); return true; }
public static string FullAssembly(string assemblyPath, TypeCollection typeCollection, ConfigBase config) { CollectTypes(assemblyPath, config.TypeNotFoundErrorHandler, typeCollection, config); return GetHeader(new[] { assemblyPath }, config.IncludeSpecialTypes) + typeCollection.Render(config.RegexFilter); }
private static void CollectTypes(string assemblyPath, ITypeNotFoundErrorHandler typeNotFoundErrorHandler, TypeCollection typeCollection, ConfigBase config) { var assembly = Mono.Cecil.AssemblyDefinition.ReadAssembly(assemblyPath); typeCollection.AddAssembly(assembly); var typeWriterGenerator = new TypeWriterCollector(typeNotFoundErrorHandler, typeCollection.TypeSelector); foreach (var item in assembly.MainModule.Types) { typeWriterGenerator.Collect(item, typeCollection, config); } }