[#1223] lens/tui: Add raw data handling
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
This commit is contained in:
parent
358083a539
commit
8ddea4b8b2
2 changed files with 12 additions and 40 deletions
|
@ -2,56 +2,28 @@ package common
|
|||
|
||||
import (
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/mr-tron/base58"
|
||||
)
|
||||
|
||||
type Raw struct {
|
||||
type RawEntry struct {
|
||||
key, value []byte
|
||||
}
|
||||
|
||||
var RawParser Parser = rawParser
|
||||
|
||||
func rawParser(key, value []byte) (SchemaEntry, Parser, error) {
|
||||
return &Raw{key: key, value: value}, rawParser, nil
|
||||
return &RawEntry{key: key, value: value}, rawParser, nil
|
||||
}
|
||||
|
||||
func (r *Raw) String() string {
|
||||
return "[red]can't parse[white]"
|
||||
func (r *RawEntry) String() string {
|
||||
return FormatSimple(base58.Encode(r.key), tcell.ColorRed)
|
||||
}
|
||||
|
||||
func (r *Raw) DetailedString() string {
|
||||
func (r *RawEntry) DetailedString() string {
|
||||
return spew.Sdump(r)
|
||||
}
|
||||
|
||||
func (r *Raw) Filter(string, any) FilterResult {
|
||||
func (r *RawEntry) Filter(string, any) FilterResult {
|
||||
return No
|
||||
}
|
||||
|
||||
// TODO: enhance unparsed data display
|
||||
// func WithErrorHandling(parser Parser) Parser {
|
||||
// if parser == nil {
|
||||
// return rawParser
|
||||
// }
|
||||
// return func(key, value []byte) (SchemaEntry, Parser, error) {
|
||||
// entry, next, err := parser(key, value)
|
||||
// if err != nil {
|
||||
// return &Error{err: err}, rawParser, nil
|
||||
// }
|
||||
// return entry, WithErrorHandling(next), err
|
||||
// }
|
||||
// }
|
||||
|
||||
// type Error struct {
|
||||
// err error
|
||||
// }
|
||||
|
||||
// func (e *Error) String() string {
|
||||
// return e.err.Error()
|
||||
// }
|
||||
|
||||
// func (e *Error) DetailedString() string {
|
||||
// return e.err.Error()
|
||||
// }
|
||||
|
||||
// func (e *Error) Filter(string, any) FilterResult {
|
||||
// return No
|
||||
// }
|
||||
|
|
|
@ -36,15 +36,15 @@ type (
|
|||
|
||||
func Any(parsers ...Parser) Parser {
|
||||
return func(key, value []byte) (SchemaEntry, Parser, error) {
|
||||
errs := fmt.Errorf("try parse %v %v", key, value)
|
||||
for _, p := range parsers {
|
||||
ret, next, err := p(key, value)
|
||||
var errs error
|
||||
for _, parser := range parsers {
|
||||
ret, next, err := parser(key, value)
|
||||
if err == nil {
|
||||
return ret, next, nil
|
||||
}
|
||||
errs = errors.Join(errs, err)
|
||||
}
|
||||
return nil, nil, fmt.Errorf("no parser succeeded:\n%w", errs)
|
||||
return nil, nil, fmt.Errorf("no parser succeeded: %w", errs)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue