/// <summary> /// Writes a set of snippets to Visual Studio Code Snippet File /// </summary> /// <param name="snippets"></param> /// <param name="snippetFile"></param> /// <param name="prefix">Optional prefix to assign snippet shortcuts and title</param> /// <param name="clearSnippetFile"></param> public static void ToFile(List <VisualStudioSnippet> snippets, string snippetFile, bool clearSnippetFile = false, string prefix = null) { snippetFile = Environment.ExpandEnvironmentVariables(snippetFile); if (clearSnippetFile && File.Exists(snippetFile)) { File.Delete(snippetFile); } JObject rootJson = null; if (File.Exists(snippetFile)) { using (StreamReader reader = new StreamReader(snippetFile)) { using (var tr = new JsonTextReader(reader)) { rootJson = JObject.Load(tr); } } //rootJson = rootJson.First as JObject; } else { rootJson = new JObject(); } foreach (var snippet in snippets) { var vsCodeSnippet = VsCodeSnippet.FromVisualStudioCodeSnippet(snippet); if (!string.IsNullOrEmpty(prefix)) { if (!vsCodeSnippet.Prefix.StartsWith(prefix, StringComparison.InvariantCultureIgnoreCase)) { vsCodeSnippet.Prefix = prefix + vsCodeSnippet.Prefix; } if (!vsCodeSnippet.Title.StartsWith(prefix, StringComparison.InvariantCultureIgnoreCase)) { vsCodeSnippet.Title = prefix + vsCodeSnippet.Title; } } vsCodeSnippet.AttachToJsonRoot(rootJson); } using (var sw = new StreamWriter(snippetFile)) { using (var jw = new JsonTextWriter(sw) { Formatting = Formatting.Indented, }) { rootJson.WriteTo(jw); } } }
/// <summary> /// Attaches a list of Visual Studio snippets to a root JSON instance /// </summary> /// <param name="snippets"></param> /// <param name="rootJson"></param> /// <returns></returns> public static JObject FromVisualStudioCodeSnippetList(List <VisualStudioSnippet> snippets, JObject rootJson = null) { if (rootJson == null) { rootJson = new JObject(); } foreach (var vsSnippet in snippets) { var vsCodeSnippet = VsCodeSnippet.FromVisualStudioCodeSnippet(vsSnippet); vsCodeSnippet.AttachToJsonRoot(rootJson); } return(rootJson); }