private object BuildOverwriteWithSchema(FileModel owModel, OverwriteDocumentModel overwrite, IHostService host, BaseSchema schema) { dynamic overwriteObject = ConvertToObjectHelper.ConvertToDynamic(overwrite.Metadata); overwriteObject.uid = overwrite.Uid; var overwriteModel = new FileModel(owModel.FileAndType, overwriteObject, owModel.OriginalFileAndType); var context = new ProcessContext(host, overwriteModel) { ContentAnchorParser = new ContentAnchorParser(overwrite.Conceptual) }; var transformed = _overwriteProcessor.Process(overwriteObject, schema, context) as IDictionary <string, object>; if (!context.ContentAnchorParser.ContainsAnchor) { transformed["conceptual"] = context.ContentAnchorParser.Content; } // add SouceDetail back to transformed, in week type transformed[Constants.PropertyName.Documentation] = new Dictionary <string, object> { ["remote"] = overwrite.Documentation.Remote == null ? null : new Dictionary <string, object> { ["path"] = overwrite.Documentation.Remote.RelativePath, ["branch"] = overwrite.Documentation.Remote.RemoteBranch, ["repo"] = overwrite.Documentation.Remote.RemoteRepositoryUrl, } ["path"] = overwrite.Documentation?.Path, ["startLine"] = overwrite.Documentation?.StartLine ?? 0, ["endLine"] = overwrite.Documentation?.EndLine ?? 0, }; owModel.LinkToUids = owModel.LinkToUids.Union((context.UidLinkSources).Keys); owModel.LinkToFiles = owModel.LinkToFiles.Union((context.FileLinkSources).Keys); owModel.FileLinkSources = owModel.FileLinkSources.Merge(context.FileLinkSources); owModel.UidLinkSources = owModel.UidLinkSources.Merge(context.UidLinkSources); owModel.Uids = owModel.Uids.AddRange(context.Uids); owModel.Properties.XRefSpecs = context.XRefSpecs; owModel.Properties.ExternalXRefSpecs = context.ExternalXRefSpecs; foreach (var d in context.Dependency) { host.ReportDependencyTo(owModel, d, DependencyTypeName.Include); } return(transformed); }
public object BuildOverwriteWithSchema(FileModel owModel, OverwriteDocumentModel overwrite, BaseSchema schema) { if (overwrite == null || owModel == null) { return(null); } if (schema == null) { throw new ArgumentNullException(nameof(schema)); } dynamic overwriteObject = ConvertToObjectHelper.ConvertToDynamic(overwrite.Metadata); overwriteObject.uid = overwrite.Uid; var overwriteModel = new FileModel(owModel.FileAndType, overwriteObject, owModel.OriginalFileAndType); var context = (((IDictionary <string, object>)(owModel.Properties)).TryGetValue("MarkdigMarkdownService", out var service)) ? new ProcessContext(_host, overwriteModel, null, (MarkdigMarkdownService)service) : new ProcessContext(_host, overwriteModel); if (_overwriteModelType == OverwriteModelType.Classic) { context.ContentAnchorParser = new ContentAnchorParser(overwrite.Conceptual); } var transformed = _overwriteProcessor.Process(overwriteObject, schema, context) as IDictionary <string, object>; if (_overwriteModelType == OverwriteModelType.Classic && !context.ContentAnchorParser.ContainsAnchor) { transformed["conceptual"] = context.ContentAnchorParser.Content; } // add SouceDetail back to transformed, in week type if (overwrite.Documentation != null) { transformed[Constants.PropertyName.Documentation] = new Dictionary <string, object> { ["remote"] = overwrite.Documentation.Remote == null ? null : new Dictionary <string, object> { ["path"] = overwrite.Documentation.Remote.RelativePath, ["branch"] = overwrite.Documentation.Remote.RemoteBranch, ["repo"] = overwrite.Documentation.Remote.RemoteRepositoryUrl, } ["path"] = overwrite.Documentation?.Path, ["startLine"] = overwrite.Documentation?.StartLine ?? 0, ["endLine"] = overwrite.Documentation?.EndLine ?? 0, }; } owModel.LinkToUids = owModel.LinkToUids.Union((context.UidLinkSources).Keys); owModel.LinkToFiles = owModel.LinkToFiles.Union((context.FileLinkSources).Keys); owModel.FileLinkSources = owModel.FileLinkSources.Merge(context.FileLinkSources); owModel.UidLinkSources = owModel.UidLinkSources.Merge(context.UidLinkSources); owModel.Uids = owModel.Uids.AddRange(context.Uids); owModel.Properties.XRefSpecs = context.XRefSpecs; owModel.Properties.ExternalXRefSpecs = context.ExternalXRefSpecs; foreach (var d in context.Dependency) { _host.ReportDependencyTo(owModel, d, DependencyTypeName.Include); } return(transformed); }