static void InitializeDemo(MvcDemo demo)
        {
            var viewPath       = Path.Combine(contentRootPath, "Views", demo.Widget, string.Format("{0}.cshtml", demo.Name));
            var controllerPath = Path.Combine(contentRootPath, "Controllers", string.Format("{0}Controller.cs", demo.Widget));
            var controller     = new MvcDemoFile(new ActionTextParser(demo.Name))
            {
                Path = controllerPath,
                Name = Path.GetFileName(controllerPath)
            };

            demo.Files.Add(controller);


            var view = new MvcDemoFile {
                Path = viewPath,
                Name = Path.GetFileName(viewPath)
            };

            demo.Files.Add(view);

            var stylesPath = GetContentItem("css", "DemosStyles", demo, "css");

            if (File.Exists(stylesPath))
            {
                var styles = new MvcDemoFile {
                    Path = stylesPath,
                    Name = Path.GetFileName(stylesPath)
                };
                demo.Files.Add(styles);
                demo.HasStyles = true;
            }

            demo.Description = CommonMark.CommonMarkConverter.Convert(ReadDemoDescriptionFile(demo));

            if (demo.MvcAdditionalFiles != null)
            {
                demo.MvcAdditionalFiles.ForEach(f => {
                    var path = contentRootPath + f.Trim().Replace("/Content/", "/wwwroot/")
                               .Replace("/Scripts/", "/wwwroot/").Replace("/", Path.DirectorySeparatorChar.ToString());
                    var file = new MvcDemoFile {
                        Path = path,
                        Name = Path.GetFileName(path)
                    };
                    demo.Files.Add(file);
                });
            }

            demo.Files = demo.Files.OrderByDescending(f =>
                                                      f.Name.Contains("cshtml")
                                                      ).ThenByDescending(f =>
                                                                         f.Name.Contains(demo.Widget.Replace("_", "") + "Controller.cs")
                                                                         ).ThenByDescending(f =>
                                                                                            f.Name.Contains("Controller.cs")
                                                                                            ).ThenBy(f =>
                                                                                                     f.Name.Contains(".css")
                                                                                                     ).ToList();
            Demos.Add(demo);
        }
        static string ReadDemoDescriptionFile(MvcDemo demo)
        {
            var result          = string.Empty;
            var descriptionPath = GetContentItem("", "Descr", demo, "md");

            if (!File.Exists(descriptionPath))
            {
                descriptionPath = GetContentItem("", "Descr/Temp", demo, "md");
            }

            if (File.Exists(descriptionPath))
            {
                result = File.ReadAllText(descriptionPath);
            }

            return(result);
        }
 static string GetContentItem(string mainFolder, string targetFolder, MvcDemo demo, string fileExtension)
 {
     return(Path.Combine(contentRootPath, "wwwroot", mainFolder, targetFolder, demo.Widget, string.Format("{0}." + fileExtension, demo.Name)));
 }