mirror of
https://github.com/php/frankenphp.git
synced 2026-03-24 00:52:11 +01:00
44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package extgen
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"unicode"
|
|
)
|
|
|
|
func writeFile(filename, content string) error {
|
|
return os.WriteFile(filename, []byte(content), 0644)
|
|
}
|
|
|
|
func readFile(filename string) (string, error) {
|
|
content, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(content), nil
|
|
}
|
|
|
|
// NamespacedName converts a namespace and name to a C-compatible format.
|
|
// E.g., namespace "Go\Extension" and name "MyClass" become "Go_Extension_MyClass".
|
|
// This symbol remains exported, so it's usable in templates.
|
|
func NamespacedName(namespace, name string) string {
|
|
if namespace == "" {
|
|
return name
|
|
}
|
|
namespacePart := strings.ReplaceAll(namespace, `\`, "_")
|
|
return namespacePart + "_" + name
|
|
}
|
|
|
|
// EXPERIMENTAL
|
|
func SanitizePackageName(name string) string {
|
|
sanitized := strings.ReplaceAll(name, "-", "_")
|
|
sanitized = strings.ReplaceAll(sanitized, ".", "_")
|
|
|
|
if len(sanitized) > 0 && !unicode.IsLetter(rune(sanitized[0])) && sanitized[0] != '_' {
|
|
sanitized = "_" + sanitized
|
|
}
|
|
|
|
return sanitized
|
|
}
|