59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
# Standalone Sigils
|
|
|
|
This example demonstrates how to use sigils independently to transform data.
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/Snider/Enchantrix/pkg/enchantrix"
|
|
)
|
|
|
|
func demoSigils() {
|
|
fmt.Println("--- Standalone Sigil Demo ---")
|
|
data := []byte(`{"message": "hello world"}`)
|
|
fmt.Printf("Original data: %s\n", data)
|
|
|
|
// A chain of sigils to apply
|
|
sigils := []string{"gzip", "base64"}
|
|
fmt.Printf("Applying sigil chain: %v\n", sigils)
|
|
|
|
var transformedData = data
|
|
for _, name := range sigils {
|
|
s, err := enchantrix.NewSigil(name)
|
|
if err != nil {
|
|
log.Fatalf("Failed to create sigil %s: %v", name, err)
|
|
}
|
|
transformedData, err = s.In(transformedData)
|
|
if err != nil {
|
|
log.Fatalf("Failed to apply sigil %s 'In': %v", name, err)
|
|
}
|
|
fmt.Printf(" -> After '%s': %s\n", name, transformedData)
|
|
}
|
|
|
|
fmt.Println("\nReversing sigil chain...")
|
|
// Reverse the transformations
|
|
for i := len(sigils) - 1; i >= 0; i-- {
|
|
name := sigils[i]
|
|
s, err := enchantrix.NewSigil(name)
|
|
if err != nil {
|
|
log.Fatalf("Failed to create sigil %s: %v", name, err)
|
|
}
|
|
transformedData, err = s.Out(transformedData)
|
|
if err != nil {
|
|
log.Fatalf("Failed to apply sigil %s 'Out': %v", name, err)
|
|
}
|
|
fmt.Printf(" -> After '%s' Out: %s\n", name, transformedData)
|
|
}
|
|
|
|
if string(data) == string(transformedData) {
|
|
fmt.Println("Success! Data returned to original state.")
|
|
} else {
|
|
fmt.Println("Failure! Data did not return to original state.")
|
|
}
|
|
fmt.Println()
|
|
}
|
|
```
|