void WriteDocumentation(BindStreamWriter sw, Function f) { if (docfiles == null) { docfiles = new Dictionary <string, string>(); foreach (string file in Directory.GetFiles(Settings.DocPath)) { docfiles.Add(Path.GetFileName(file), file); } } string docfile = null; try { docfile = Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"; if (!docfiles.ContainsKey(docfile)) { docfile = Settings.FunctionPrefix + f.TrimmedName + ".xml"; } if (!docfiles.ContainsKey(docfile)) { docfile = Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"; } string doc = null; if (docfiles.ContainsKey(docfile)) { doc = processor.ProcessFile(docfiles[docfile]); } if (doc == null) { doc = "/// <summary></summary>"; } int summary_start = doc.IndexOf("<summary>") + "<summary>".Length; string warning = "[deprecated: v{0}]"; string category = "[requires: {0}]"; if (f.Deprecated) { warning = String.Format(warning, f.DeprecatedVersion); doc = doc.Insert(summary_start, warning); } if (f.Extension != "Core" && !String.IsNullOrEmpty(f.Category)) { category = String.Format(category, f.Category); doc = doc.Insert(summary_start, category); } else if (!String.IsNullOrEmpty(f.Version)) { if (f.Category.StartsWith("VERSION")) { category = String.Format(category, "v" + f.Version); } else { category = String.Format(category, "v" + f.Version + " and " + f.Category); } doc = doc.Insert(summary_start, category); } sw.WriteLine(doc); } catch (Exception e) { Console.WriteLine("[Warning] Error processing file {0}: {1}", docfile, e.ToString()); } }