2023-01-23 00:37:18 +00:00
package yqlib
import (
"fmt"
"io"
"net/url"
)
type uriEncoder struct {
}
func NewUriEncoder ( ) Encoder {
return & uriEncoder { }
}
func ( e * uriEncoder ) CanHandleAliases ( ) bool {
return false
}
func ( e * uriEncoder ) PrintDocumentSeparator ( writer io . Writer ) error {
return nil
}
func ( e * uriEncoder ) PrintLeadingContent ( writer io . Writer , content string ) error {
return nil
}
2023-06-07 17:45:42 +00:00
func ( e * uriEncoder ) Encode ( writer io . Writer , node * CandidateNode ) error {
2023-04-08 09:56:35 +00:00
if node . guessTagFromCustomType ( ) != "!!str" {
2023-01-25 00:18:48 +00:00
return fmt . Errorf ( "cannot encode %v as URI, can only operate on strings. Please first pipe through another encoding operator to convert the value to a string" , node . Tag )
2023-01-23 00:37:18 +00:00
}
2023-06-07 17:45:42 +00:00
_ , err := writer . Write ( [ ] byte ( url . QueryEscape ( node . Value ) ) )
2023-01-23 00:37:18 +00:00
return err
}