mirror of
https://codeberg.org/scip/tablizer.git
synced 2025-12-17 12:31:06 +01:00
fixed alternating highlighting, now looks reasonable
This commit is contained in:
@@ -57,6 +57,8 @@ type Config struct {
|
||||
*/
|
||||
ColorStyle color.Style
|
||||
HighlightStyle color.Style
|
||||
NoHighlightStyle color.Style
|
||||
HighlightHdrStyle color.Style
|
||||
|
||||
NoColor bool
|
||||
|
||||
@@ -114,7 +116,9 @@ func Colors() map[color.Level]map[string]color.Color {
|
||||
color.LevelRgb: {
|
||||
// FIXME: maybe use something nicer
|
||||
"bg": color.BgLightGreen, "fg": color.FgWhite,
|
||||
"hlbg": color.BgBlue, "hlfg": color.FgWhite,
|
||||
"hlbg": color.BgHiGreen, "hlfg": color.FgWhite,
|
||||
"nohlbg": color.BgWhite, "nohlfg": color.FgLightGreen,
|
||||
"hdrbg": color.BgBlue, "hdrfg": color.FgWhite,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -128,6 +132,8 @@ func (c *Config) DetermineColormode() {
|
||||
colors := Colors()
|
||||
c.ColorStyle = color.New(colors[level]["bg"], colors[level]["fg"])
|
||||
c.HighlightStyle = color.New(colors[level]["hlbg"], colors[level]["hlfg"])
|
||||
c.NoHighlightStyle = color.New(colors[level]["nohlbg"], colors[level]["nohlfg"])
|
||||
c.HighlightHdrStyle = color.New(colors[level]["hdrbg"], colors[level]["hdrfg"])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -154,24 +154,42 @@ func trimRow(row []string) []string {
|
||||
}
|
||||
|
||||
func colorizeData(c cfg.Config, output string) string {
|
||||
if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) {
|
||||
r := regexp.MustCompile("(" + c.Pattern + ")")
|
||||
return r.ReplaceAllStringFunc(output, func(in string) string {
|
||||
return c.ColorStyle.Sprint(in)
|
||||
})
|
||||
} else if c.UseHighlight && color.IsConsole(os.Stdout) {
|
||||
if c.UseHighlight && color.IsConsole(os.Stdout) {
|
||||
highlight := true
|
||||
colorized := ""
|
||||
first := true
|
||||
|
||||
for _, line := range strings.Split(output, "\n") {
|
||||
if highlight {
|
||||
if first {
|
||||
// we need to add two spaces to the header line
|
||||
// because tablewriter omits them for some reason
|
||||
// in pprint mode. This doesn't matter as long as
|
||||
// we don't use colorization. But with colors the
|
||||
// missing spaces can be seen.
|
||||
if c.OutputMode == cfg.Ascii {
|
||||
line = line + " "
|
||||
}
|
||||
|
||||
line = c.HighlightHdrStyle.Sprint(line)
|
||||
first = false
|
||||
} else {
|
||||
line = c.HighlightStyle.Sprint(line)
|
||||
}
|
||||
} else {
|
||||
line = c.NoHighlightStyle.Sprint(line)
|
||||
}
|
||||
highlight = !highlight
|
||||
|
||||
colorized += line + "\n"
|
||||
}
|
||||
|
||||
return colorized
|
||||
} else if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) {
|
||||
r := regexp.MustCompile("(" + c.Pattern + ")")
|
||||
return r.ReplaceAllStringFunc(output, func(in string) string {
|
||||
return c.ColorStyle.Sprint(in)
|
||||
})
|
||||
} else {
|
||||
return output
|
||||
}
|
||||
|
||||
@@ -20,15 +20,16 @@ package lib
|
||||
import (
|
||||
"encoding/csv"
|
||||
"fmt"
|
||||
"github.com/gookit/color"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
"github.com/tlinden/tablizer/cfg"
|
||||
"gopkg.in/yaml.v3"
|
||||
"io"
|
||||
"log"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/gookit/color"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
"github.com/tlinden/tablizer/cfg"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func printData(w io.Writer, c cfg.Config, data *Tabdata) {
|
||||
@@ -148,9 +149,15 @@ func printAsciiData(w io.Writer, c cfg.Config, data *Tabdata) {
|
||||
table.SetRowSeparator("")
|
||||
table.SetHeaderLine(false)
|
||||
table.SetBorder(false)
|
||||
table.SetTablePadding("\t") // pad with tabs
|
||||
table.SetNoWhiteSpace(true)
|
||||
|
||||
if !c.UseHighlight {
|
||||
// the tabs destroy the highlighting
|
||||
table.SetTablePadding("\t") // pad with tabs
|
||||
} else {
|
||||
table.SetTablePadding(" ")
|
||||
}
|
||||
|
||||
table.Render()
|
||||
output(w, color.Sprint(colorizeData(c, tableString.String())))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user