diff --git a/main.go b/main.go index 7115dbc..4382ed8 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + lua "github.com/yuin/gopher-lua" "io" "log" "os" @@ -10,8 +11,7 @@ import ( "regexp" "strconv" "strings" - - lua "github.com/yuin/gopher-lua" + "sync" ) var Error *log.Logger @@ -127,18 +127,24 @@ func main() { return } + var wg sync.WaitGroup // Process each file for _, file := range files { - Info.Printf("🔄 Processing file: %s", file) - err := processFile(file, pattern, luaExpr, originalLuaExpr) - if err != nil { - Error.Printf("❌ Failed to process file %s: %v", file, err) - stats.FailedFiles++ - } else { - Info.Printf("✅ Successfully processed file: %s", file) - stats.ProcessedFiles++ - } + wg.Add(1) + go func(file string) { + defer wg.Done() + Info.Printf("🔄 Processing file: %s", file) + err := processFile(file, pattern, luaExpr, originalLuaExpr) + if err != nil { + Error.Printf("❌ Failed to process file %s: %v", file, err) + stats.FailedFiles++ + } else { + Info.Printf("✅ Successfully processed file: %s", file) + stats.ProcessedFiles++ + } + }(file) } + wg.Wait() // Print summary of all modifications printSummary(originalLuaExpr) diff --git a/main_test.go b/main_test.go index 62f145f..92aee22 100644 --- a/main_test.go +++ b/main_test.go @@ -80,6 +80,38 @@ func TestShorthandNotation(t *testing.T) { } } +func TestShorthandNotationFloats(t *testing.T) { + fileContents := ` + + + 132.671327 + + + ` + expected := ` + + + 176.01681007940928 + + + ` + + regex := regexp.MustCompile(`(?s)(\d*\.?\d+)`) + luaExpr := `v1 * 1.32671327` // Use direct assignment syntax + luaScript := buildLuaScript(luaExpr) + + modifiedContent, _, _, err := process(fileContents, regex, luaScript, "test.xml", luaExpr ) + if err != nil { + t.Fatalf("Error processing file: %v", err) + } + + normalizedModified := normalizeWhitespace(modifiedContent) + normalizedExpected := normalizeWhitespace(expected) + if normalizedModified != normalizedExpected { + t.Fatalf("Expected modified content to be %q, but got %q", normalizedExpected, normalizedModified) + } +} + func TestArrayNotation(t *testing.T) { fileContents := `