parent
d452b2a10e
commit
4f61bbfede
|
@ -17,15 +17,15 @@ import (
|
||||||
|
|
||||||
const Name = "ansi"
|
const Name = "ansi"
|
||||||
|
|
||||||
const DefaultAnsiHighlight = bgYellow
|
const DefaultAnsiHighlight = BgYellow
|
||||||
|
|
||||||
type FragmentFormatter struct {
|
type FragmentFormatter struct {
|
||||||
color string
|
color string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFragmentFormatter() *FragmentFormatter {
|
func NewFragmentFormatter(color string) *FragmentFormatter {
|
||||||
return &FragmentFormatter{
|
return &FragmentFormatter{
|
||||||
color: DefaultAnsiHighlight,
|
color: color,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ func (a *FragmentFormatter) Format(f *highlight.Fragment, tlm search.TermLocatio
|
||||||
// add the term itself
|
// add the term itself
|
||||||
rv += string(f.Orig[termLocation.Start:termLocation.End])
|
rv += string(f.Orig[termLocation.Start:termLocation.End])
|
||||||
// reset the color
|
// reset the color
|
||||||
rv += reset
|
rv += Reset
|
||||||
// update current
|
// update current
|
||||||
curr = termLocation.End
|
curr = termLocation.End
|
||||||
}
|
}
|
||||||
|
@ -60,33 +60,38 @@ func (a *FragmentFormatter) Format(f *highlight.Fragment, tlm search.TermLocatio
|
||||||
// ANSI color control escape sequences.
|
// ANSI color control escape sequences.
|
||||||
// Shamelessly copied from https://github.com/sqp/godock/blob/master/libs/log/colors.go
|
// Shamelessly copied from https://github.com/sqp/godock/blob/master/libs/log/colors.go
|
||||||
const (
|
const (
|
||||||
reset = "\x1b[0m"
|
Reset = "\x1b[0m"
|
||||||
bright = "\x1b[1m"
|
Bright = "\x1b[1m"
|
||||||
dim = "\x1b[2m"
|
Dim = "\x1b[2m"
|
||||||
underscore = "\x1b[4m"
|
Underscore = "\x1b[4m"
|
||||||
blink = "\x1b[5m"
|
Blink = "\x1b[5m"
|
||||||
reverse = "\x1b[7m"
|
Reverse = "\x1b[7m"
|
||||||
hidden = "\x1b[8m"
|
Hidden = "\x1b[8m"
|
||||||
fgBlack = "\x1b[30m"
|
FgBlack = "\x1b[30m"
|
||||||
fgRed = "\x1b[31m"
|
FgRed = "\x1b[31m"
|
||||||
fgGreen = "\x1b[32m"
|
FgGreen = "\x1b[32m"
|
||||||
fgYellow = "\x1b[33m"
|
FgYellow = "\x1b[33m"
|
||||||
fgBlue = "\x1b[34m"
|
FgBlue = "\x1b[34m"
|
||||||
fgMagenta = "\x1b[35m"
|
FgMagenta = "\x1b[35m"
|
||||||
fgCyan = "\x1b[36m"
|
FgCyan = "\x1b[36m"
|
||||||
fgWhite = "\x1b[37m"
|
FgWhite = "\x1b[37m"
|
||||||
bgBlack = "\x1b[40m"
|
BgBlack = "\x1b[40m"
|
||||||
bgRed = "\x1b[41m"
|
BgRed = "\x1b[41m"
|
||||||
bgGreen = "\x1b[42m"
|
BgGreen = "\x1b[42m"
|
||||||
bgYellow = "\x1b[43m"
|
BgYellow = "\x1b[43m"
|
||||||
bgBlue = "\x1b[44m"
|
BgBlue = "\x1b[44m"
|
||||||
bgMagenta = "\x1b[45m"
|
BgMagenta = "\x1b[45m"
|
||||||
bgCyan = "\x1b[46m"
|
BgCyan = "\x1b[46m"
|
||||||
bgWhite = "\x1b[47m"
|
BgWhite = "\x1b[47m"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Constructor(config map[string]interface{}, cache *registry.Cache) (highlight.FragmentFormatter, error) {
|
func Constructor(config map[string]interface{}, cache *registry.Cache) (highlight.FragmentFormatter, error) {
|
||||||
return NewFragmentFormatter(), nil
|
color := DefaultAnsiHighlight
|
||||||
|
colorVal, ok := config["color"].(string)
|
||||||
|
if ok {
|
||||||
|
color = colorVal
|
||||||
|
}
|
||||||
|
return NewFragmentFormatter(color), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
|
@ -26,7 +26,7 @@ const (
|
||||||
|
|
||||||
func TestSimpleHighlighter(t *testing.T) {
|
func TestSimpleHighlighter(t *testing.T) {
|
||||||
fragmenter := sfrag.NewFragmenter(100)
|
fragmenter := sfrag.NewFragmenter(100)
|
||||||
formatter := ansi.NewFragmentFormatter()
|
formatter := ansi.NewFragmentFormatter(ansi.DefaultAnsiHighlight)
|
||||||
highlighter := NewHighlighter(fragmenter, formatter, defaultSeparator)
|
highlighter := NewHighlighter(fragmenter, formatter, defaultSeparator)
|
||||||
|
|
||||||
docMatch := search.DocumentMatch{
|
docMatch := search.DocumentMatch{
|
||||||
|
@ -153,7 +153,7 @@ Etiam vel augue vel nisl commodo suscipit et ac nisl. Quisque eros diam, porttit
|
||||||
}
|
}
|
||||||
|
|
||||||
fragmenter := sfrag.NewFragmenter(100)
|
fragmenter := sfrag.NewFragmenter(100)
|
||||||
formatter := ansi.NewFragmentFormatter()
|
formatter := ansi.NewFragmentFormatter(ansi.DefaultAnsiHighlight)
|
||||||
highlighter := NewHighlighter(fragmenter, formatter, defaultSeparator)
|
highlighter := NewHighlighter(fragmenter, formatter, defaultSeparator)
|
||||||
fragments := highlighter.BestFragmentsInField(&docMatch, doc, "full", 5)
|
fragments := highlighter.BestFragmentsInField(&docMatch, doc, "full", 5)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user