Convert test_str into a rune slice for better unicode compatibility, it also fixed the bug where all unicode characters wouldn't be colored
This commit is contained in:
12
cmd/main.go
12
cmd/main.go
@@ -129,6 +129,8 @@ func main() {
|
|||||||
matchIndices = regComp.FindAllSubmatch(test_str)
|
matchIndices = regComp.FindAllSubmatch(test_str)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_str_runes := []rune(test_str) // Converting to runes preserves unicode characters
|
||||||
|
|
||||||
if *printMatchesFlag {
|
if *printMatchesFlag {
|
||||||
// if we are in single line mode, print the line on which
|
// if we are in single line mode, print the line on which
|
||||||
// the matches occur
|
// the matches occur
|
||||||
@@ -158,10 +160,10 @@ func main() {
|
|||||||
oldIndices := indicesToPrint.values()
|
oldIndices := indicesToPrint.values()
|
||||||
indicesToPrint = new_uniq_arr[int]()
|
indicesToPrint = new_uniq_arr[int]()
|
||||||
// Explanation:
|
// Explanation:
|
||||||
// Find all numbers from 0 to len(test_str) that are NOT in oldIndices.
|
// Find all numbers from 0 to len(test_str_runes) that are NOT in oldIndices.
|
||||||
// These are the values we want to print, now that we have inverted the match.
|
// These are the values we want to print, now that we have inverted the match.
|
||||||
// Re-initialize indicesToPrint and add all of these values to it.
|
// Re-initialize indicesToPrint and add all of these values to it.
|
||||||
indicesToPrint.add(setDifference(genRange(0, len(test_str)), oldIndices)...)
|
indicesToPrint.add(setDifference(genRange(0, len(test_str_runes)), oldIndices)...)
|
||||||
|
|
||||||
}
|
}
|
||||||
// If lineFlag is enabled, we should only print something if:
|
// If lineFlag is enabled, we should only print something if:
|
||||||
@@ -182,7 +184,7 @@ func main() {
|
|||||||
// the corresponding end index.
|
// the corresponding end index.
|
||||||
// 3. If not, just print the character.
|
// 3. If not, just print the character.
|
||||||
if substituteFlagEnabled {
|
if substituteFlagEnabled {
|
||||||
for i := range test_str {
|
for i := range test_str_runes {
|
||||||
inMatchIndex := false
|
inMatchIndex := false
|
||||||
for _, m := range matchIndices {
|
for _, m := range matchIndices {
|
||||||
if i == m[0].StartIdx {
|
if i == m[0].StartIdx {
|
||||||
@@ -193,11 +195,11 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !inMatchIndex {
|
if !inMatchIndex {
|
||||||
fmt.Fprintf(out, "%c", test_str[i])
|
fmt.Fprintf(out, "%c", test_str_runes[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for i, c := range test_str {
|
for i, c := range test_str_runes {
|
||||||
if indicesToPrint.contains(i) {
|
if indicesToPrint.contains(i) {
|
||||||
color.New(color.FgRed).Fprintf(out, "%c", c)
|
color.New(color.FgRed).Fprintf(out, "%c", c)
|
||||||
// Newline after every match - only if -o is enabled and -v is disabled.
|
// Newline after every match - only if -o is enabled and -v is disabled.
|
||||||
|
Reference in New Issue
Block a user