Example #1
0
 public static RestApiItemViewModel BuildItem(IHostService host, RestApiItemViewModel item, FileModel model, Func <string, bool> filter = null)
 {
     item.Summary     = Markup(host, item.Summary, model, filter);
     item.Description = Markup(host, item.Description, model, filter);
     item.Conceptual  = Markup(host, item.Conceptual, model, filter);
     return(item);
 }
        public override FileModel Load(FileAndType file, ImmutableDictionary <string, object> metadata)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                var filePath       = Path.Combine(file.BaseDir, file.File);
                var swaggerContent = File.ReadAllText(filePath);
                var swagger        = SwaggerJsonParser.Parse(swaggerContent);
                swagger.Metadata[DocumentTypeKey] = RestApiDocumentType;
                swagger.Raw = swaggerContent;
                var repoInfo = GitUtility.GetGitDetail(filePath);
                if (repoInfo != null)
                {
                    swagger.Metadata["source"] = new SourceDetail()
                    {
                        Remote = repoInfo
                    };
                }

                swagger.Metadata = MergeMetadata(swagger.Metadata, metadata);
                var vm = RestApiItemViewModel.FromSwaggerModel(swagger);
                var displayLocalPath = repoInfo?.RelativePath ?? Path.Combine(file.BaseDir, file.File).ToDisplayPath();
                return(new FileModel(file, vm, serializer: new BinaryFormatter())
                {
                    Uids = new UidDefinition[] { new UidDefinition(vm.Uid, displayLocalPath) }.Concat(from item in vm.Children select new UidDefinition(item.Uid, displayLocalPath)).ToImmutableArray(),
                    LocalPathFromRepoRoot = displayLocalPath,
                    Properties =
                    {
                        LinkToFiles = new HashSet <string>(),
                        LinkToUids  = new HashSet <string>(),
                    },
                });

            case DocumentType.Overwrite:
                // TODO: Refactor current behavior that overwrite file is read multiple times by multiple processors
                return(OverwriteDocumentReader.Read(file));

            default:
                throw new NotSupportedException();
            }
        }
Example #3
0
 private void BuildItem(IHostService host, RestApiItemViewModel item, FileModel model)
 {
     item.Summary     = Markup(host, item.Summary, model);
     item.Description = Markup(host, item.Description, model);
     item.Conceptual  = Markup(host, item.Conceptual, model);
 }
Example #4
0
        public override FileModel Load(FileAndType file, ImmutableDictionary <string, object> metadata)
        {
            switch (file.Type)
            {
            case DocumentType.Article:
                var filePath       = Path.Combine(file.BaseDir, file.File);
                var swaggerContent = File.ReadAllText(filePath);
                var swagger        = GetModelWithoutRef <SwaggerModel>(swaggerContent);
                swagger.Metadata[DocumentTypeKey] = RestApiDocumentType;
                swagger.Raw = swaggerContent;
                var repoInfo = GitUtility.GetGitDetail(filePath);
                if (repoInfo != null)
                {
                    swagger.Metadata["source"] = new SourceDetail()
                    {
                        Remote = repoInfo
                    };
                }

                swagger.Metadata = MergeMetadata(swagger.Metadata, metadata);
                var vm = RestApiItemViewModel.FromSwaggerModel(swagger);
                var displayLocalPath = repoInfo?.RelativePath ?? Path.Combine(file.BaseDir, file.File).ToDisplayPath();
                return(new FileModel(file, vm, serializer: new BinaryFormatter())
                {
                    Uids = new UidDefinition[] { new UidDefinition(vm.Uid, displayLocalPath) }.Concat(from item in vm.Children select new UidDefinition(item.Uid, displayLocalPath)).ToImmutableArray(),
                    LocalPathFromRepoRoot = displayLocalPath,
                    Properties =
                    {
                        LinkToFiles = new HashSet <string>(),
                        LinkToUids  = new HashSet <string>(),
                    },
                });

            case DocumentType.Override:
                var overrides = MarkdownReader.ReadMarkdownAsOverride <RestApiItemViewModel>(file.BaseDir, file.File);
                if (overrides == null || overrides.Count == 0)
                {
                    return(null);
                }

                displayLocalPath = overrides[0].Documentation?.Remote?.RelativePath ?? Path.Combine(file.BaseDir, file.File).ToDisplayPath();
                return(new FileModel(file, overrides, serializer: new BinaryFormatter())
                {
                    Uids = (from item in overrides
                            select new UidDefinition(
                                item.Uid,
                                displayLocalPath,
                                item.Documentation.StartLine + 1
                                )).ToImmutableArray(),
                    Properties =
                    {
                        LinkToFiles = new HashSet <string>(),
                        LinkToUids  = new HashSet <string>(),
                    },
                    LocalPathFromRepoRoot = displayLocalPath,
                });

            default:
                throw new NotSupportedException();
            }
        }