public static string GetHeader (AuthorInformation authorInfo, StandardHeaderPolicy policy, TextStylePolicy textPolicy, string fileName, bool newFile) { string[] comment = Document.GetCommentTags (fileName); if (comment == null) return ""; if (string.IsNullOrEmpty (policy.Text) || (newFile && !policy.IncludeInNewFiles)) return ""; string result; string eolMarker = TextStylePolicy.GetEolMarker (textPolicy.EolMarker); if (comment.Length == 1) { string cmt = comment[0]; //make sure there's a space between the comment char and the license text if (!char.IsWhiteSpace (cmt[cmt.Length - 1])) cmt = cmt + " "; StringBuilder sb = new StringBuilder (policy.Text.Length); string[] lines = policy.Text.Split ('\n'); foreach (string line in lines) { if (string.IsNullOrWhiteSpace (line)) { sb.Append (cmt.TrimEnd ()); sb.Append (eolMarker); continue; } sb.Append (cmt); sb.Append (line); sb.Append (eolMarker); } result = sb.ToString (); } else { //multiline comment result = String.Concat (comment[0], "\n", policy.Text, "\n", comment[1], "\n"); } return StringParserService.Parse (result, new string[,] { { "FileName", Path.GetFileName (fileName) }, { "FileNameWithoutExtension", Path.GetFileNameWithoutExtension (fileName) }, { "Directory", Path.GetDirectoryName (fileName) }, { "FullFileName", fileName }, { "AuthorName", authorInfo.Name }, { "AuthorEmail", authorInfo.Email }, { "CopyrightHolder", authorInfo.Copyright }, }); }
public override string CreateContent(MonoDevelop.Projects.Project project, Dictionary <string, string> tags, string language) { var cc = base.CreateContent(project, tags, language); if (addStdHeader) { StandardHeaderPolicy headerPolicy = project != null?project.Policies.Get <StandardHeaderPolicy>() : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy <StandardHeaderPolicy>(); TextStylePolicy textPolicy = project != null?project.Policies.Get <TextStylePolicy>("text/plain") : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy <TextStylePolicy>("text/plain"); DFormattingPolicy dPolicy = project != null?project.Policies.Get <DFormattingPolicy>("text/x-d") : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy <DFormattingPolicy>("text/x-d"); if (string.IsNullOrWhiteSpace(headerPolicy.Text) || !headerPolicy.IncludeInNewFiles) { return(cc); } var eol = TextStylePolicy.GetEolMarker(textPolicy.EolMarker); var hdr = StringParserService.Parse(headerPolicy.Text, tags); if (dPolicy.CommentOutStandardHeaders) { var headerLines = hdr.Split('\n'); if (headerLines.Length == 1) { return("/// " + headerLines[0].Trim() + eol + cc); } else { var ret = "/**" + eol; for (int i = 0; i < headerLines.Length; i++) { ret += " * " + headerLines[i].Trim() + eol; } return(ret + " */" + eol + cc); } } else { return(hdr + eol + cc); } } return(cc); }