1
0
mirror of https://github.com/TomWright/dasel.git synced 2022-05-22 02:32:45 +03:00

Node.Write and Node.WriteToFile now accept write options as a slice.

This removes the possibility of never ending API changes as we want to support additional write options.
This commit is contained in:
Tom Wright
2022-03-18 15:20:13 +00:00
parent 2817c9b6ca
commit cab9596e21
2 changed files with 9 additions and 14 deletions

18
node.go
View File

@@ -162,8 +162,8 @@ func NewFromReader(reader io.Reader, parser string) (*Node, error) {
return New(data), nil
}
// Write writes data to file using specified write parser and options.
func (n *Node) WriteToFile(filename, parser string, compact, escapeHTML bool) error {
// WriteToFile writes data to the given file with the specified options.
func (n *Node) WriteToFile(filename, parser string, writeOptions []storage.ReadWriteOption) error {
f, err := os.Create(filename)
if err != nil {
@@ -171,8 +171,8 @@ func (n *Node) WriteToFile(filename, parser string, compact, escapeHTML bool) er
}
// https://www.joeshaw.org/dont-defer-close-on-writable-files/
if err = n.Write(f, parser, compact, escapeHTML); err != nil {
f.Close()
if err = n.Write(f, parser, writeOptions); err != nil {
_ = f.Close()
return err
}
@@ -180,20 +180,12 @@ func (n *Node) WriteToFile(filename, parser string, compact, escapeHTML bool) er
}
// Write writes data to Writer using specified write parser and options.
func (n *Node) Write(writer io.Writer, parser string, compact, escapeHTML bool) error {
func (n *Node) Write(writer io.Writer, parser string, writeOptions []storage.ReadWriteOption) error {
writeParser, err := storage.NewWriteParserFromString(parser)
if err != nil {
return err
}
writeOptions := []storage.ReadWriteOption{
storage.EscapeHTMLOption(escapeHTML),
}
if compact {
writeOptions = append(writeOptions, storage.PrettyPrintOption(false))
}
value := n.InterfaceValue()
originalValue := n.OriginalValue

View File

@@ -1650,7 +1650,10 @@ func TestNode_Write(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
writer := &bytes.Buffer{}
node := dasel.New(tt.data)
if err := node.Write(writer, tt.args.parser, tt.args.compact, tt.args.escapeHTML); (err != nil) != tt.wantErr {
if err := node.Write(writer, tt.args.parser, []storage.ReadWriteOption{
storage.EscapeHTMLOption(tt.args.escapeHTML),
storage.PrettyPrintOption(!tt.args.compact),
}); (err != nil) != tt.wantErr {
t.Errorf("Node.Write() error = %v, wantErr %v", err, tt.wantErr)
return
}