Move ANSI stripping from filters to Go
This commit is contained in:
parent
e0cadd61a2
commit
0647ea6483
3 changed files with 20 additions and 8 deletions
|
@ -3,13 +3,11 @@ from colorama import Fore, Style
|
|||
import sys
|
||||
import re
|
||||
|
||||
ansi_escape = re.compile(r'\x1B\[[0-?]*[ -/]*[@-~]')
|
||||
stat_re = re.compile(r'(| \d+ )(\+*)(\-*)')
|
||||
lines_re = re.compile(r'@@ (-\d+,\d+ \+\d+,\d+) @@')
|
||||
|
||||
sys.stdin.reconfigure(encoding='utf-8', errors='ignore')
|
||||
patch = sys.stdin.read().replace("\r\n", "\n")
|
||||
patch = ansi_escape.sub('', patch)
|
||||
|
||||
hit_diff = False
|
||||
for line in patch.split("\n"):
|
||||
|
|
|
@ -5,7 +5,6 @@ import re
|
|||
|
||||
# TODO: Wrap text to terminal width?
|
||||
|
||||
ansi_escape = re.compile(r'\x1B\[[0-?]*[ -/]*[@-~]')
|
||||
# TODO: I guess this might vary from MUA to MUA. I've definitely seen localized
|
||||
# versions in the wild
|
||||
quote_prefix_re = re.compile(r"On .*, .* wrote:")
|
||||
|
@ -13,7 +12,6 @@ quote_re = re.compile(r">+")
|
|||
|
||||
sys.stdin.reconfigure(encoding='utf-8', errors='ignore')
|
||||
mail = sys.stdin.read().replace("\r\n", "\n")
|
||||
mail = ansi_escape.sub('', mail)
|
||||
|
||||
for line in mail.split("\n"):
|
||||
if quote_re.match(line) or quote_prefix_re.match(line):
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
package widgets
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/danwakefield/fnmatch"
|
||||
|
@ -22,6 +24,8 @@ import (
|
|||
"git.sr.ht/~sircmpwn/aerc/worker/types"
|
||||
)
|
||||
|
||||
var ansi = regexp.MustCompile("^\x1B\\[[0-?]*[ -/]*[@-~]")
|
||||
|
||||
type MessageViewer struct {
|
||||
ui.Invalidatable
|
||||
acct *AccountView
|
||||
|
@ -221,9 +225,11 @@ func (mv *MessageViewer) SelectedMessage() *types.MessageInfo {
|
|||
|
||||
func (mv *MessageViewer) ToggleHeaders() {
|
||||
switcher := mv.switcher
|
||||
err := createSwitcher(switcher, mv.conf, mv.store, mv.msg, !switcher.showHeaders)
|
||||
err := createSwitcher(
|
||||
switcher, mv.conf, mv.store, mv.msg, !switcher.showHeaders)
|
||||
if err != nil {
|
||||
mv.acct.Logger().Printf("warning: error during create switcher - %v", err)
|
||||
mv.acct.Logger().Printf(
|
||||
"warning: error during create switcher - %v", err)
|
||||
}
|
||||
switcher.Invalidate()
|
||||
}
|
||||
|
@ -468,7 +474,8 @@ func (pv *PartViewer) attemptCopy() {
|
|||
if pv.showHeaders && pv.msg.RFC822Headers != nil {
|
||||
fields := pv.msg.RFC822Headers.Fields()
|
||||
for fields.Next() {
|
||||
field := fmt.Sprintf("%s: %s\n", fields.Key(), fields.Value())
|
||||
field := fmt.Sprintf(
|
||||
"%s: %s\n", fields.Key(), fields.Value())
|
||||
pv.sink.Write([]byte(field))
|
||||
}
|
||||
pv.sink.Write([]byte{'\n'})
|
||||
|
@ -487,7 +494,16 @@ func (pv *PartViewer) attemptCopy() {
|
|||
pv.Invalidate()
|
||||
return
|
||||
}
|
||||
io.Copy(pv.sink, part.Body)
|
||||
if pv.part.MIMEType == "text" {
|
||||
scanner := bufio.NewScanner(part.Body)
|
||||
for scanner.Scan() {
|
||||
text := scanner.Text()
|
||||
text = ansi.ReplaceAllString(text, "")
|
||||
io.WriteString(pv.sink, text+"\n")
|
||||
}
|
||||
} else {
|
||||
io.Copy(pv.sink, part.Body)
|
||||
}
|
||||
pv.sink.Close()
|
||||
}()
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue