1
0
mirror of https://github.com/makew0rld/amfora.git synced 2024-06-19 19:25:24 +00:00

Strip ANSI codes from page based on config - fixes #79 (#86)

This commit is contained in:
Jansen Price 2020-09-04 11:42:01 -05:00 committed by GitHub
parent 3e27338881
commit 7b27bd02dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 2 deletions

View File

@ -206,6 +206,7 @@ func Init() error {
viper.SetDefault("a-general.http", "default")
viper.SetDefault("a-general.search", "gus.guru/search")
viper.SetDefault("a-general.color", true)
viper.SetDefault("a-general.ansi", true)
viper.SetDefault("a-general.bullets", true)
viper.SetDefault("a-general.left_margin", 0.15)
viper.SetDefault("a-general.max_width", 100)

View File

@ -33,6 +33,9 @@ search = "gemini://gus.guru/search"
# Whether colors will be used in the terminal
color = true
# Whether ANSI codes from the page content should be rendered
ansi = true
# Whether to replace list asterisks with unicode bullets
bullets = true

View File

@ -30,6 +30,9 @@ search = "gemini://gus.guru/search"
# Whether colors will be used in the terminal
color = true
# Whether ANSI codes from the page content should be rendered
ansi = true
# Whether to replace list asterisks with unicode bullets
bullets = true

View File

@ -7,6 +7,7 @@ package renderer
import (
"fmt"
urlPkg "net/url"
"regexp"
"strconv"
"strings"
@ -15,12 +16,17 @@ import (
"gitlab.com/tslocum/cview"
)
// Regex for identifying ANSI color codes
var ansiRegex = regexp.MustCompile(`\x1b\[[0-9;]*m`)
// RenderANSI renders plain text pages containing ANSI codes.
// Practically, it is used for the text/x-ansi.
func RenderANSI(s string, leftMargin int) string {
s = cview.Escape(s)
if viper.GetBool("a-general.color") {
if viper.GetBool("a-general.color") && viper.GetBool("a-general.ansi") {
s = cview.TranslateANSI(s)
} else {
s = ansiRegex.ReplaceAllString(s, "")
}
var shifted string
lines := strings.Split(s, "\n")
@ -277,9 +283,12 @@ func convertRegularGemini(s string, numLinks, width int, proxied bool) (string,
// If it's not a gemini:// page, set this to true.
func RenderGemini(s string, width, leftMargin int, proxied bool) (string, []string) {
s = cview.Escape(s)
if viper.GetBool("a-general.color") {
if viper.GetBool("a-general.color") && viper.GetBool("a-general.ansi") {
s = cview.TranslateANSI(s)
} else {
s = ansiRegex.ReplaceAllString(s, "")
}
lines := strings.Split(s, "\n")
links := make([]string, 0)