@@ -20,7 +20,7 @@ import (
2020 "github.com/compose-spec/compose-go/v2/tree"
2121)
2222
23- type transformFunc func (data any , p tree.Path ) (any , error )
23+ type transformFunc func (data any , p tree.Path , ignoreParseError bool ) (any , error )
2424
2525var transformers = map [tree.Path ]transformFunc {}
2626
@@ -48,18 +48,18 @@ func init() {
4848}
4949
5050// Canonical transforms a compose model into canonical syntax
51- func Canonical (yaml map [string ]any ) (map [string ]any , error ) {
52- canonical , err := transform (yaml , tree .NewPath ())
51+ func Canonical (yaml map [string ]any , ignoreParseError bool ) (map [string ]any , error ) {
52+ canonical , err := transform (yaml , tree .NewPath (), ignoreParseError )
5353 if err != nil {
5454 return nil , err
5555 }
5656 return canonical .(map [string ]any ), nil
5757}
5858
59- func transform (data any , p tree.Path ) (any , error ) {
59+ func transform (data any , p tree.Path , ignoreParseError bool ) (any , error ) {
6060 for pattern , transformer := range transformers {
6161 if p .Matches (pattern ) {
62- t , err := transformer (data , p )
62+ t , err := transformer (data , p , ignoreParseError )
6363 if err != nil {
6464 return nil , err
6565 }
@@ -68,13 +68,13 @@ func transform(data any, p tree.Path) (any, error) {
6868 }
6969 switch v := data .(type ) {
7070 case map [string ]any :
71- a , err := transformMapping (v , p )
71+ a , err := transformMapping (v , p , ignoreParseError )
7272 if err != nil {
7373 return a , err
7474 }
7575 return v , nil
7676 case []any :
77- a , err := transformSequence (v , p )
77+ a , err := transformSequence (v , p , ignoreParseError )
7878 if err != nil {
7979 return a , err
8080 }
@@ -84,9 +84,9 @@ func transform(data any, p tree.Path) (any, error) {
8484 }
8585}
8686
87- func transformSequence (v []any , p tree.Path ) ([]any , error ) {
87+ func transformSequence (v []any , p tree.Path , ignoreParseError bool ) ([]any , error ) {
8888 for i , e := range v {
89- t , err := transform (e , p .Next ("[]" ))
89+ t , err := transform (e , p .Next ("[]" ), ignoreParseError )
9090 if err != nil {
9191 return nil , err
9292 }
@@ -95,9 +95,9 @@ func transformSequence(v []any, p tree.Path) ([]any, error) {
9595 return v , nil
9696}
9797
98- func transformMapping (v map [string ]any , p tree.Path ) (map [string ]any , error ) {
98+ func transformMapping (v map [string ]any , p tree.Path , ignoreParseError bool ) (map [string ]any , error ) {
9999 for k , e := range v {
100- t , err := transform (e , p .Next (k ))
100+ t , err := transform (e , p .Next (k ), ignoreParseError )
101101 if err != nil {
102102 return nil , err
103103 }
0 commit comments