package sudoku import ( "strings" "github.com/saba-futai/sudoku/pkg/obfs/sudoku" ) // NewTablesWithCustomPatterns builds one or more obfuscation tables from x/v/p custom patterns. // When customTables is non-empty it overrides customTable (matching upstream Sudoku behavior). func NewTablesWithCustomPatterns(key string, tableType string, customTable string, customTables []string) ([]*sudoku.Table, error) { patterns := customTables if len(patterns) == 0 && strings.TrimSpace(customTable) != "" { patterns = []string{customTable} } if len(patterns) == 0 { patterns = []string{""} } tables := make([]*sudoku.Table, 0, len(patterns)) for _, pattern := range patterns { pattern = strings.TrimSpace(pattern) t, err := NewTableWithCustom(key, tableType, pattern) if err != nil { return nil, err } tables = append(tables, t) } return tables, nil }