static void WriteSources(DomBinder binder, string dir) { try { Directory.Delete(dir, true); } catch { } Directory.CreateDirectory(dir); foreach (var tree in binder.SyntaxTrees) { using (var writer = new StreamWriter(Path.Combine(dir, tree.FileName))) { writer.WriteLine("//"); writer.WriteLine("// WARNING - GENERATED CODE - DO NOT EDIT"); writer.WriteLine("//"); writer.WriteLine("// {0}", tree.FileName); writer.WriteLine("//"); writer.WriteLine("// Author:"); writer.WriteLine("// Aaron Bockover <*****@*****.**>"); writer.WriteLine("//"); writer.WriteLine("// Copyright 2015-2016 Xamarin Inc. All rights reserved."); writer.WriteLine(); writer.Write(tree.ToString().Trim()); } } }
static void Main(string [] args) { var dir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); var binders = new DomBinder [] { new JavaScriptCoreDomBinder(), new MshtmlDomBinder() }; foreach (var binder in binders) { SyntaxTree syntaxTree; using (var reader = new StreamReader(Path.Combine(dir, "DomApi.cs"))) syntaxTree = new CSharpParser().Parse(reader); syntaxTree.AcceptVisitor(binder); WriteSources(binder, Path.Combine(dir, "..", binder.OutputDirectory)); } }
public TypeCollector(DomBinder domBinder) { this.domBinder = domBinder; }