fix: preserve blank lines while removing comments

- Remove comment-only lines completely
- Strip inline comments but preserve the line
- Keep original blank lines intact
- Maintain file structure and spacing
- Update version to 0.1.1
This commit is contained in:
carraes
2025-07-03 14:30:30 -03:00
parent 406dc32879
commit 8fdfbc7f06
3 changed files with 11 additions and 5 deletions
+4 -1
View File
@@ -18,7 +18,10 @@
"Bash(gh run view:*)", "Bash(gh run view:*)",
"Bash(gemini:*)", "Bash(gemini:*)",
"Bash(gh release delete:*)", "Bash(gh release delete:*)",
"Bash(git reset:*)" "Bash(git reset:*)",
"Bash(ls:*)",
"Bash(cp:*)",
"Bash(cat:*)"
], ],
"deny": [] "deny": []
} }
+1 -1
View File
@@ -9,7 +9,7 @@ import (
"github.com/carlosarraes/shush/internal/types" "github.com/carlosarraes/shush/internal/types"
) )
var version = "0.1.0" var version = "0.1.1"
func main() { func main() {
var cli types.CLI var cli types.CLI
+6 -3
View File
@@ -145,18 +145,22 @@ func (p *Processor) buildSedCommand(language types.Language) string {
if !p.cli.Block && language.LineComment != "" { if !p.cli.Block && language.LineComment != "" {
escaped := escapeForSed(language.LineComment) escaped := escapeForSed(language.LineComment)
// Delete lines that are only comments (optionally with whitespace)
commands = append(commands, fmt.Sprintf("/^[[:space:]]*%s/d", escaped)) commands = append(commands, fmt.Sprintf("/^[[:space:]]*%s/d", escaped))
// Remove inline comments but keep the line
commands = append(commands, fmt.Sprintf("s/%s.*//g", escaped)) commands = append(commands, fmt.Sprintf("s/%s.*//g", escaped))
} }
if !p.cli.Inline && language.BlockComment != nil { if !p.cli.Inline && language.BlockComment != nil {
startEscaped := escapeForSed(language.BlockComment.Start) startEscaped := escapeForSed(language.BlockComment.Start)
endEscaped := escapeForSed(language.BlockComment.End) endEscaped := escapeForSed(language.BlockComment.End)
// Remove block comments on same line
commands = append(commands, fmt.Sprintf("s/%s.*%s//g", startEscaped, endEscaped)) commands = append(commands, fmt.Sprintf("s/%s.*%s//g", startEscaped, endEscaped))
// Remove multi-line block comments
commands = append(commands, fmt.Sprintf("/%s/,/%s/d", startEscaped, endEscaped)) commands = append(commands, fmt.Sprintf("/%s/,/%s/d", startEscaped, endEscaped))
} }
commands = append(commands, "/^[[:space:]]*$/d") // Don't remove empty lines - preserve original file structure
return strings.Join(commands, "; ") return strings.Join(commands, "; ")
} }
@@ -257,9 +261,8 @@ func (p *Processor) showPreview(filename string, language types.Language) error
} }
} else if lineRegex != nil && lineRegex.MatchString(line) { } else if lineRegex != nil && lineRegex.MatchString(line) {
shouldDelete = true shouldDelete = true
} else if strings.TrimSpace(line) == "" {
shouldDelete = true
} }
// Don't delete empty lines - preserve original file structure
// Print the line with appropriate formatting // Print the line with appropriate formatting
lineNumStr := gray.Sprintf("%4d", lineNum) lineNumStr := gray.Sprintf("%4d", lineNum)