protected override Snippet PostProcess(Snippet snippet) { LiteralCollection literals = snippet.Literals; Literal typeLiteral = literals[LiteralIdentifiers.Type]; if (typeLiteral != null) { if (snippet.HasTag(KnownTags.GenerateVoidType)) { typeLiteral.DefaultValue = "void"; } else { typeLiteral.DefaultValue = "T"; } } base.PostProcess(snippet); return(snippet); }
private static string GetTextMateBody(Snippet snippet) { snippet = (Snippet)snippet.Clone(); snippet.RemoveLiteralAndReplacePlaceholders(XmlSnippetGenerator.CDataIdentifier, "]]>"); LiteralCollection literals = snippet.Literals; string s = snippet.CodeText; var sb = new StringBuilder(s.Length); int pos = 0; PlaceholderCollection placeholders = snippet.Code.Placeholders; Dictionary <Literal, int> literalIndexes = literals .OrderBy(f => FindMinIndex(f, placeholders)) .Select((literal, i) => new { Literal = literal, Index = i }) .ToDictionary(f => f.Literal, f => f.Index + 1); var processedIds = new List <string>(); foreach (Placeholder placeholder in placeholders.OrderBy(f => f.Index)) { sb.Append(s, pos, placeholder.Index - 1 - pos); if (placeholder.IsEndPlaceholder) { sb.Append("${0}"); } else if (placeholder.IsSelectedPlaceholder) { sb.Append("${TM_SELECTED_TEXT}"); } else { string id = placeholder.Identifier; Literal literal = literals[id]; sb.Append("${"); sb.Append(literalIndexes[literal]); if (!processedIds.Contains(id)) { sb.Append(":"); sb.Append(literal.DefaultValue); processedIds.Add(id); } sb.Append("}"); } pos = placeholder.EndIndex + 1; } sb.Append(s, pos, s.Length - pos); return(sb.ToString()); }
protected override IEnumerable <Snippet> PostProcess(IEnumerable <Snippet> snippets) { foreach (Snippet snippet in base.PostProcess(snippets)) { if (snippet.HasTag(KnownTags.ExcludeFromVisualStudioCode)) { continue; } LiteralCollection literals = snippet.Literals; for (int i = literals.Count - 1; i >= 0; i--) { Literal literal = literals[i]; if (!literal.IsEditable && !string.IsNullOrEmpty(literal.Function)) { literal.IsEditable = true; literal.Function = null; } } if (snippet.HasTag(KnownTags.TitleStartsWithShortcut)) { string shortcut = Regex.Match(snippet.Title, @"^\S+\s+").Value; snippet.Title = snippet.Title.Substring(shortcut.Length); shortcut = shortcut.TrimEnd(); if (shortcut != "-") { if (snippet.Shortcut.Last() != '_') { snippet.Shortcut += "_"; } snippet.Shortcut += shortcut.TrimEnd(); } snippet.RemoveTag(KnownTags.TitleStartsWithShortcut); } if (snippet.HasTag(KnownTags.NonUniqueShortcut)) { if (snippet.TryGetTag(KnownTags.ShortcutSuffix, out TagInfo info)) { if (snippet.Shortcut.Last() != '_') { snippet.Shortcut += "_"; } snippet.Shortcut += info.Value; snippet.Keywords.RemoveAt(info.KeywordIndex); snippet.AddTag(KnownTags.ExcludeFromReadme); } snippet.RemoveTag(KnownTags.NonUniqueShortcut); } yield return(snippet); } }