diff --git a/class.go b/class.go index 789f922..6d19242 100644 --- a/class.go +++ b/class.go @@ -167,13 +167,40 @@ func ParseClass(file string) (*Class, error) { } className := strings.TrimSpace(class.Text()) // Clean up class name to be a valid Lua identifier - // Replace spaces and special characters with underscores - className = strings.ReplaceAll(className, " ", "_") + // Handle [Client], [Server] patterns as affixes + // Replace "Class [Client]" with "Class_Client" + // Replace "Class [Client] [Client] : Parent" with "Class_Client_Client_Parent" + + // First, handle the inheritance part (after ":") + if strings.Contains(className, " : ") { + parts := strings.Split(className, " : ") + if len(parts) == 2 { + className = parts[0] + "_" + parts[1] + } + } + + // Handle [Client] and [Server] patterns + // Replace "[Client]" with "_Client" + className = strings.ReplaceAll(className, "[Client]", "_Client") + className = strings.ReplaceAll(className, "[Server]", "_Server") + + // Remove any remaining brackets and clean up className = strings.ReplaceAll(className, "[", "") className = strings.ReplaceAll(className, "]", "") - className = strings.ReplaceAll(className, ":", "_") className = strings.ReplaceAll(className, "-", "_") className = strings.ReplaceAll(className, ",", "") + + // Replace spaces with underscores + className = strings.ReplaceAll(className, " ", "_") + + // Clean up multiple underscores + for strings.Contains(className, "__") { + className = strings.ReplaceAll(className, "__", "_") + } + + // Remove leading/trailing underscores + className = strings.Trim(className, "_") + res.ClassName = className log.Info("Found class: %s (cleaned from: %s)", res.ClassName, strings.TrimSpace(class.Text()))