74 lines
2 KiB
Markdown
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()
|
|
}
|
|
```
|