Enchantrix/docs/standalone_sigils.md
2025-11-25 00:00:24 +00:00

74 lines
2 KiB
Markdown

# Standalone Sigils
This example demonstrates how to use sigils independently to transform data.
## Available Sigils
The `enchantrix` package provides a wide variety of sigils for data transformation and hashing.
| Category | Sigils |
| :--- | :--- |
| **Encoding** | `hex`, `base64`, `reverse` |
| **Compression** | `gzip` |
| **Formatting** | `json`, `json-indent` |
| **Standard Hashes** | `md4`, `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512` |
| **Extended Hashes** | `ripemd160`, `sha3-224`, `sha3-256`, `sha3-384`, `sha3-512`, `sha512-224`, `sha512-256` |
| **Blake Hashes** | `blake2s-256`, `blake2b-256`, `blake2b-384`, `blake2b-512` |
## Usage Example
```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()
}
```