Exemple #1
0
        /// <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);
                }
            }
        }
Exemple #2
0
        /// <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);
        }