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:
		
							
								
								
									
										18
									
								
								node.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								node.go
									
									
									
									
									
								
							| @@ -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 | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tom Wright
					Tom Wright