MCPcopy Create free account
hub / github.com/openclaw/gogcli / PlanMarkdownWrite

Function PlanMarkdownWrite

internal/docsedit/markdown.go:52–107  ·  view source on GitHub ↗
(options MarkdownWriteOptions)

Source from the content-addressed store, hash-verified

50}
51
52func PlanMarkdownWrite(options MarkdownWriteOptions) (MarkdownWritePlan, error) {
53 if options.Append && options.Replace {
54 return MarkdownWritePlan{}, invalid("--append cannot be combined with --replace")
55 }
56
57 if options.CheckOrphans && (!options.Replace || options.Append) {
58 return MarkdownWritePlan{}, invalid("--check-orphans requires --replace --markdown")
59 }
60
61 if options.ImageCount < 0 {
62 return MarkdownWritePlan{}, invalid("image count must be >= 0")
63 }
64
65 tab := strings.TrimSpace(options.Tab)
66
67 mode, reason, err := planMarkdownWriteMode(options.Append, options.Replace, tab, options.Markdown)
68 if err != nil {
69 return MarkdownWritePlan{}, err
70 }
71
72 markdown := options.Markdown
73 var anchors []docsmarkdown.ExplicitHeadingAnchor
74
75 if mode == MarkdownWriteDriveReplace {
76 markdown = docsmarkdown.NormalizeTablesForDriveImport(markdown)
77 anchors = docsmarkdown.ImportExplicitHeadingAnchors(markdown)
78 markdown = docsmarkdown.StripHeadingAnchors(markdown)
79 } else {
80 anchors = docsmarkdown.ExplicitHeadingAnchors(markdown)
81 }
82
83 rewriteHeadingLinks := strings.Contains(markdown, "](#")
84 insertImages := options.ImageCount > 0
85 requiresDrive := mode == MarkdownWriteDriveReplace || options.CheckOrphans
86 requiresDocuments := mode != MarkdownWriteDriveReplace ||
87 options.CheckOrphans ||
88 rewriteHeadingLinks ||
89 insertImages ||
90 options.ApplyDocumentStyle
91
92 return MarkdownWritePlan{
93 Mode: mode,
94 Reason: reason,
95 Markdown: markdown,
96 Tab: tab,
97 ImageCount: options.ImageCount,
98 ExplicitHeadingAnchors: anchors,
99 CheckOrphans: options.CheckOrphans,
100 OrphanScopeWholeDocument: options.CheckOrphans && mode == MarkdownWriteDriveReplace,
101 RewriteHeadingLinks: rewriteHeadingLinks,
102 InsertImages: insertImages,
103 ApplyDocumentStyle: options.ApplyDocumentStyle,
104 RequiresDriveService: requiresDrive,
105 RequiresDocumentsService: requiresDocuments,
106 }, nil
107}
108
109func planMarkdownWriteMode(appendMode, replaceMode bool, tab, markdown string) (MarkdownWriteMode, MarkdownWriteReason, error) {

Calls 6

StripHeadingAnchorsFunction · 0.92
ExplicitHeadingAnchorsFunction · 0.92
planMarkdownWriteModeFunction · 0.85
invalidFunction · 0.70