Exemplo n.º 1
0
        public MvcHtmlString Render(RepositoryBlob blob)
        {
            var tag = new TagBuilder("img");

            tag.Attributes.Add("src", blob.RawUrl);
            tag.Attributes.Add("alt", blob.FileName);

            return(new MvcHtmlString(tag.ToString(TagRenderMode.SelfClosing)));
        }
Exemplo n.º 2
0
        public MvcHtmlString Render(RepositoryBlob blob)
        {
            var tag = new TagBuilder("pre");

            tag.AddCssClass("prettyprint linenums");

            tag.InnerHtml = HttpUtility.HtmlEncode(blob.Content);

            return(new MvcHtmlString(tag.ToString(TagRenderMode.Normal)));
        }
Exemplo n.º 3
0
        public static RepositoryBlob FindFile(this Tree instance, string subPath)
        {
            var repositoryBlob = new RepositoryBlob();

            var segments =
                subPath.Split(
                    new[] { '/' },
                    StringSplitOptions.RemoveEmptyEntries);

            var obj = instance;

            foreach (var segment in segments)
            {
                foreach (var entry in obj)
                {
                    if (entry.Name.Equals(segment, StringComparison.OrdinalIgnoreCase))
                    {
                        if (entry.TargetType == TreeEntryTargetType.Tree)
                        {
                            obj = (Tree)entry.Target;
                            break;
                        }

                        if (entry.TargetType == TreeEntryTargetType.Blob)
                        {
                            var blob = (Blob)entry.Target;

                            repositoryBlob.FileName   = entry.Name;
                            repositoryBlob.RawContent = blob.Content;

                            using (var ms = new MemoryStream(blob.Content))
                                using (var reader = new StreamReader(ms, true))
                                {
                                    repositoryBlob.Content = reader.ReadToEnd();
                                }

                            repositoryBlob.FileSize =
                                string.Format(
                                    "{0:0.###} kb",
                                    ((double)blob.Content.LongLength / 1024));

                            return(repositoryBlob);
                        }
                    }
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public static MvcHtmlString RenderViewer(
            this HtmlHelper instance, RepositoryBlob blob)
        {
            Func <Type, IContentViewer> createInstance =
                type => (IContentViewer)Activator.CreateInstance(type);

            Func <string, ExtensionCollection, bool> matchesExtension =
                (fileName, extensions) => {
                fileName = fileName.ToUpper();

                return(extensions
                       .Cast <ExtensionElement>()
                       .Select(element => element.Extension.ToUpper())
                       .Any(extension => fileName.EndsWith(extension)));
            };


            var section = Settings.Section;

            if (matchesExtension(blob.FileName, section.Extensions))
            {
                return(new MvcHtmlString("// NO PREVIEW AVAILABLE"));
            }

            var viewers = section.Viewers;

            var contentViewer =
                viewers
                .Cast <ViewerElement>()
                .Where(viewer => matchesExtension(blob.FileName, viewer.Extensions))
                .Select(viewer => createInstance(viewer.Type))
                .FirstOrDefault() ??
                createInstance(viewers.FallbackViewerType);

            return(contentViewer.Render(blob));
        }
Exemplo n.º 5
0
        public MvcHtmlString Render(RepositoryBlob blob)
        {
            var markdown = new Markdown();

            return(new MvcHtmlString(markdown.Transform(blob.Content)));
        }