mirror of
https://github.com/goccy/go-yaml.git
synced 2025-11-01 05:41:14 +00:00
Add EncodeToNode(interface{}) (ast.Node, error)
This commit is contained in:
parent
c6273cdf6e
commit
41c7fbad9f
1 changed files with 16 additions and 7 deletions
23
encode.go
23
encode.go
|
|
@ -68,20 +68,29 @@ func (e *Encoder) Close() error {
|
|||
//
|
||||
// See the documentation for Marshal for details about the conversion of Go values to YAML.
|
||||
func (e *Encoder) Encode(v interface{}) error {
|
||||
for _, opt := range e.opts {
|
||||
if err := opt(e); err != nil {
|
||||
return errors.Wrapf(err, "failed to run option for encoder")
|
||||
}
|
||||
}
|
||||
node, err := e.encodeValue(reflect.ValueOf(v), 1)
|
||||
node, err := e.EncodeToNode(v)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to encode value")
|
||||
return errors.Wrapf(err, "failed to encode to node")
|
||||
}
|
||||
var p printer.Printer
|
||||
e.writer.Write(p.PrintNode(node))
|
||||
return nil
|
||||
}
|
||||
|
||||
// EncodeToNode convert v to ast.Node.
|
||||
func (e *Encoder) EncodeToNode(v interface{}) (ast.Node, error) {
|
||||
for _, opt := range e.opts {
|
||||
if err := opt(e); err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to run option for encoder")
|
||||
}
|
||||
}
|
||||
node, err := e.encodeValue(reflect.ValueOf(v), 1)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to encode value")
|
||||
}
|
||||
return node, nil
|
||||
}
|
||||
|
||||
func (e *Encoder) encodeDocument(doc []byte) (ast.Node, error) {
|
||||
f, err := parser.ParseBytes(doc, 0)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue