example_basic.go
package main
import (
"fmt"
testmark "github.com/warpfork/go-testmark/v2"
)
func main() {
// Example of the clean v2 API
data := `# My Configuration
[testmark]:# (database/host)
` + "```\nlocalhost\n```" + `
[testmark]:# (database/port)
` + "```\n5432\n```" + `
[testmark]:# (api/endpoint)
` + "```\nhttps://api.example.com\n```" + `
`
// Parse document - directory indexing happens automatically!
doc, err := testmark.Parse([]byte(data))
if err != nil {
panic(err)
}
fmt.Printf("Loaded %d hunks\n", doc.Count())
// Access hunks by name
host := doc.HunkByName("database/host")
fmt.Printf("Database host: %s", host.String())
// Navigate like a filesystem
dbConfig := doc.Root().Child("database")
for iter := dbConfig.Children(); iter.Next(); {
entry := iter.Entry()
fmt.Printf("DB %s: %s", entry.Name(), entry.Hunk().String())
}
// Iterate over all hunks
fmt.Println("All configuration:")
for iter := doc.Hunks(); iter.Next(); {
hunk := iter.Hunk()
fmt.Printf(" %s: %s", hunk.Name(), hunk.String())
}
// Patch a value
newPort := testmark.NewHunkString("database/port", "", "5433\n")
updated := doc.Patch(newPort)
fmt.Println("\nAfter updating port:")
fmt.Printf("Original port: %s", doc.HunkByName("database/port").String())
fmt.Printf("Updated port: %s", updated.HunkByName("database/port").String())
}
v2/example_basic.go · 1.3 KiB · 402420e892