From a1798d9b974854f1053ca4d3793f0b4ba100b2c2 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 31 Jan 2026 17:30:32 +0000 Subject: refactor: Extract line pattern detection to patterns.go --- patterns.go | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 patterns.go (limited to 'patterns.go') diff --git a/patterns.go b/patterns.go new file mode 100644 index 0000000..5cd35ca --- /dev/null +++ b/patterns.go @@ -0,0 +1,83 @@ +package main + +import "regexp" + +var ( + closingBracePattern = regexp.MustCompile(`^\s*[\}\)]`) + openingBracePattern = regexp.MustCompile(`[\{\(]\s*$`) + caseLabelPattern = regexp.MustCompile(`^\s*(case\s|default\s*:)|(^\s+.*:\s*$)`) +) + +func isCommentOnly(sourceLine string) bool { + for characterIndex := range len(sourceLine) { + character := sourceLine[characterIndex] + + if character == ' ' || character == '\t' { + continue + } + + return len(sourceLine) > characterIndex+1 && sourceLine[characterIndex] == '/' && sourceLine[characterIndex+1] == '/' + } + + return false +} + +func isPackageLine(trimmedLine string) bool { + return len(trimmedLine) > 8 && trimmedLine[:8] == "package " +} + +func countRawStringDelimiters(sourceLine string) int { + delimiterCount := 0 + insideDoubleQuotedString := false + insideCharacterLiteral := false + + for characterIndex := 0; characterIndex < len(sourceLine); characterIndex++ { + character := sourceLine[characterIndex] + + if insideCharacterLiteral { + if character == '\\' && characterIndex+1 < len(sourceLine) { + characterIndex++ + + continue + } + + if character == '\'' { + insideCharacterLiteral = false + } + + continue + } + + if insideDoubleQuotedString { + if character == '\\' && characterIndex+1 < len(sourceLine) { + characterIndex++ + + continue + } + + if character == '"' { + insideDoubleQuotedString = false + } + + continue + } + + if character == '\'' { + insideCharacterLiteral = true + + continue + } + + if character == '"' { + insideDoubleQuotedString = true + + continue + } + + if character == '`' { + delimiterCount++ + } + } + + return delimiterCount +} -- cgit v1.2.3