30 lines
793 B
Go
30 lines
793 B
Go
package nextcloud
|
|
|
|
import "strings"
|
|
|
|
// SidecarPathForSource maps a source document to its TipTap sidecar path,
|
|
// e.g. /docs/report.docx → /docs/report.ultidoc.json.
|
|
func SidecarPathForSource(sourcePath string) string {
|
|
sourcePath = NormalizeClientPath(sourcePath)
|
|
dir := "/"
|
|
name := strings.TrimPrefix(sourcePath, "/")
|
|
if i := strings.LastIndex(name, "/"); i >= 0 {
|
|
dir = "/" + name[:i]
|
|
name = name[i+1:]
|
|
}
|
|
base := name
|
|
if dot := strings.LastIndex(name, "."); dot > 0 {
|
|
base = name[:dot]
|
|
}
|
|
sidecar := base + ultidocSidecarSuffix
|
|
if dir == "/" {
|
|
return "/" + sidecar
|
|
}
|
|
return dir + "/" + sidecar
|
|
}
|
|
|
|
// IsUltidocSidecarPath reports whether path ends with .ultidoc.json.
|
|
func IsUltidocSidecarPath(path string) bool {
|
|
return IsUltidocSidecarName(fileNameFromPath(path))
|
|
}
|