go.mod: gopkg.in/yaml.v2 v2.4.0
This updates the package to a version to include the security fixes in v2.2.3. Version 2.3.0 was known introduce a breaking change for some users, so using the latest (v2.4.0) Signed-off-by: Sebastiaan van Stijn <github@gone.nl>master
							parent
							
								
									6891d94832
								
							
						
					
					
						commit
						06c8d441f8
					
				
							
								
								
									
										2
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										2
									
								
								go.mod
								
								
								
								
							|  | @ -43,5 +43,5 @@ require ( | |||
| 	google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8 | ||||
| 	google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a // indirect | ||||
| 	gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789 | ||||
| 	gopkg.in/yaml.v2 v2.2.2 | ||||
| 	gopkg.in/yaml.v2 v2.4.0 | ||||
| ) | ||||
|  |  | |||
							
								
								
									
										5
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										5
									
								
								go.sum
								
								
								
								
							|  | @ -68,7 +68,6 @@ github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeY | |||
| github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||
| github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||
| github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
|  | @ -127,7 +126,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn | |||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= | ||||
| github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||||
|  | @ -174,5 +172,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 | |||
| gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789 h1:NMiUjDZiD6qDVeBOzpImftxXzQHCp2Y2QLdmaqU9MRk= | ||||
| gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | ||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||||
| gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||||
|  |  | |||
|  | @ -1,12 +1,17 @@ | |||
| language: go | ||||
| 
 | ||||
| go: | ||||
|     - 1.4 | ||||
|     - 1.5 | ||||
|     - 1.6 | ||||
|     - 1.7 | ||||
|     - 1.8 | ||||
|     - 1.9 | ||||
|     - tip | ||||
|     - "1.4.x" | ||||
|     - "1.5.x" | ||||
|     - "1.6.x" | ||||
|     - "1.7.x" | ||||
|     - "1.8.x" | ||||
|     - "1.9.x" | ||||
|     - "1.10.x" | ||||
|     - "1.11.x" | ||||
|     - "1.12.x" | ||||
|     - "1.13.x" | ||||
|     - "1.14.x" | ||||
|     - "tip" | ||||
| 
 | ||||
| go_import_path: gopkg.in/yaml.v2 | ||||
|  |  | |||
|  | @ -79,6 +79,8 @@ func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { | |||
| 	parser.encoding = encoding | ||||
| } | ||||
| 
 | ||||
| var disableLineWrapping = false | ||||
| 
 | ||||
| // Create a new emitter object.
 | ||||
| func yaml_emitter_initialize(emitter *yaml_emitter_t) { | ||||
| 	*emitter = yaml_emitter_t{ | ||||
|  | @ -87,6 +89,9 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { | |||
| 		states:     make([]yaml_emitter_state_t, 0, initial_stack_size), | ||||
| 		events:     make([]yaml_event_t, 0, initial_queue_size), | ||||
| 	} | ||||
| 	if disableLineWrapping { | ||||
| 		emitter.best_width = -1 | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Destroy an emitter object.
 | ||||
|  |  | |||
|  | @ -229,6 +229,10 @@ type decoder struct { | |||
| 	mapType reflect.Type | ||||
| 	terrors []string | ||||
| 	strict  bool | ||||
| 
 | ||||
| 	decodeCount int | ||||
| 	aliasCount  int | ||||
| 	aliasDepth  int | ||||
| } | ||||
| 
 | ||||
| var ( | ||||
|  | @ -314,7 +318,43 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm | |||
| 	return out, false, false | ||||
| } | ||||
| 
 | ||||
| const ( | ||||
| 	// 400,000 decode operations is ~500kb of dense object declarations, or
 | ||||
| 	// ~5kb of dense object declarations with 10000% alias expansion
 | ||||
| 	alias_ratio_range_low = 400000 | ||||
| 
 | ||||
| 	// 4,000,000 decode operations is ~5MB of dense object declarations, or
 | ||||
| 	// ~4.5MB of dense object declarations with 10% alias expansion
 | ||||
| 	alias_ratio_range_high = 4000000 | ||||
| 
 | ||||
| 	// alias_ratio_range is the range over which we scale allowed alias ratios
 | ||||
| 	alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) | ||||
| ) | ||||
| 
 | ||||
| func allowedAliasRatio(decodeCount int) float64 { | ||||
| 	switch { | ||||
| 	case decodeCount <= alias_ratio_range_low: | ||||
| 		// allow 99% to come from alias expansion for small-to-medium documents
 | ||||
| 		return 0.99 | ||||
| 	case decodeCount >= alias_ratio_range_high: | ||||
| 		// allow 10% to come from alias expansion for very large documents
 | ||||
| 		return 0.10 | ||||
| 	default: | ||||
| 		// scale smoothly from 99% down to 10% over the range.
 | ||||
| 		// this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.
 | ||||
| 		// 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).
 | ||||
| 		return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { | ||||
| 	d.decodeCount++ | ||||
| 	if d.aliasDepth > 0 { | ||||
| 		d.aliasCount++ | ||||
| 	} | ||||
| 	if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { | ||||
| 		failf("document contains excessive aliasing") | ||||
| 	} | ||||
| 	switch n.kind { | ||||
| 	case documentNode: | ||||
| 		return d.document(n, out) | ||||
|  | @ -353,7 +393,9 @@ func (d *decoder) alias(n *node, out reflect.Value) (good bool) { | |||
| 		failf("anchor '%s' value contains itself", n.value) | ||||
| 	} | ||||
| 	d.aliases[n] = true | ||||
| 	d.aliasDepth++ | ||||
| 	good = d.unmarshal(n.alias, out) | ||||
| 	d.aliasDepth-- | ||||
| 	delete(d.aliases, n) | ||||
| 	return good | ||||
| } | ||||
|  | @ -746,8 +788,7 @@ func (d *decoder) merge(n *node, out reflect.Value) { | |||
| 	case mappingNode: | ||||
| 		d.unmarshal(n, out) | ||||
| 	case aliasNode: | ||||
| 		an, ok := d.doc.anchors[n.value] | ||||
| 		if ok && an.kind != mappingNode { | ||||
| 		if n.alias != nil && n.alias.kind != mappingNode { | ||||
| 			failWantMap() | ||||
| 		} | ||||
| 		d.unmarshal(n, out) | ||||
|  | @ -756,8 +797,7 @@ func (d *decoder) merge(n *node, out reflect.Value) { | |||
| 		for i := len(n.children) - 1; i >= 0; i-- { | ||||
| 			ni := n.children[i] | ||||
| 			if ni.kind == aliasNode { | ||||
| 				an, ok := d.doc.anchors[ni.value] | ||||
| 				if ok && an.kind != mappingNode { | ||||
| 				if ni.alias != nil && ni.alias.kind != mappingNode { | ||||
| 					failWantMap() | ||||
| 				} | ||||
| 			} else if ni.kind != mappingNode { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| module "gopkg.in/yaml.v2" | ||||
| module gopkg.in/yaml.v2 | ||||
| 
 | ||||
| require ( | ||||
| 	"gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 | ||||
| ) | ||||
| go 1.15 | ||||
| 
 | ||||
| require gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ func resolvableTag(tag string) bool { | |||
| 	return false | ||||
| } | ||||
| 
 | ||||
| var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) | ||||
| var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) | ||||
| 
 | ||||
| func resolve(tag string, in string) (rtag string, out interface{}) { | ||||
| 	if !resolvableTag(tag) { | ||||
|  |  | |||
|  | @ -626,30 +626,17 @@ func trace(args ...interface{}) func() { | |||
| func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { | ||||
| 	// While we need more tokens to fetch, do it.
 | ||||
| 	for { | ||||
| 		// Check if we really need to fetch more tokens.
 | ||||
| 		need_more_tokens := false | ||||
| 
 | ||||
| 		if parser.tokens_head == len(parser.tokens) { | ||||
| 			// Queue is empty.
 | ||||
| 			need_more_tokens = true | ||||
| 		} else { | ||||
| 			// Check if any potential simple key may occupy the head position.
 | ||||
| 			if !yaml_parser_stale_simple_keys(parser) { | ||||
| 		if parser.tokens_head != len(parser.tokens) { | ||||
| 			// If queue is non-empty, check if any potential simple key may
 | ||||
| 			// occupy the head position.
 | ||||
| 			head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] | ||||
| 			if !ok { | ||||
| 				break | ||||
| 			} else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { | ||||
| 				return false | ||||
| 			} else if !valid { | ||||
| 				break | ||||
| 			} | ||||
| 
 | ||||
| 			for i := range parser.simple_keys { | ||||
| 				simple_key := &parser.simple_keys[i] | ||||
| 				if simple_key.possible && simple_key.token_number == parser.tokens_parsed { | ||||
| 					need_more_tokens = true | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		// We are finished.
 | ||||
| 		if !need_more_tokens { | ||||
| 			break | ||||
| 		} | ||||
| 		// Fetch the next token.
 | ||||
| 		if !yaml_parser_fetch_next_token(parser) { | ||||
|  | @ -678,11 +665,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	// Remove obsolete potential simple keys.
 | ||||
| 	if !yaml_parser_stale_simple_keys(parser) { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	// Check the indentation level against the current column.
 | ||||
| 	if !yaml_parser_unroll_indent(parser, parser.mark.column) { | ||||
| 		return false | ||||
|  | @ -837,29 +819,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { | |||
| 		"found character that cannot start any token") | ||||
| } | ||||
| 
 | ||||
| // Check the list of potential simple keys and remove the positions that
 | ||||
| // cannot contain simple keys anymore.
 | ||||
| func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { | ||||
| 	// Check for a potential simple key for each flow level.
 | ||||
| 	for i := range parser.simple_keys { | ||||
| 		simple_key := &parser.simple_keys[i] | ||||
| 
 | ||||
| 		// The specification requires that a simple key
 | ||||
| 		//
 | ||||
| 		//  - is limited to a single line,
 | ||||
| 		//  - is shorter than 1024 characters.
 | ||||
| 		if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { | ||||
| 
 | ||||
| 			// Check if the potential simple key to be removed is required.
 | ||||
| 			if simple_key.required { | ||||
| 				return yaml_parser_set_scanner_error(parser, | ||||
| 					"while scanning a simple key", simple_key.mark, | ||||
| 					"could not find expected ':'") | ||||
| 			} | ||||
| 			simple_key.possible = false | ||||
| 		} | ||||
| func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { | ||||
| 	if !simple_key.possible { | ||||
| 		return false, true | ||||
| 	} | ||||
| 	return true | ||||
| 
 | ||||
| 	// The 1.2 specification says:
 | ||||
| 	//
 | ||||
| 	//     "If the ? indicator is omitted, parsing needs to see past the
 | ||||
| 	//     implicit key to recognize it as such. To limit the amount of
 | ||||
| 	//     lookahead required, the “:” indicator must appear at most 1024
 | ||||
| 	//     Unicode characters beyond the start of the key. In addition, the key
 | ||||
| 	//     is restricted to a single line."
 | ||||
| 	//
 | ||||
| 	if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { | ||||
| 		// Check if the potential simple key to be removed is required.
 | ||||
| 		if simple_key.required { | ||||
| 			return false, yaml_parser_set_scanner_error(parser, | ||||
| 				"while scanning a simple key", simple_key.mark, | ||||
| 				"could not find expected ':'") | ||||
| 		} | ||||
| 		simple_key.possible = false | ||||
| 		return false, true | ||||
| 	} | ||||
| 	return true, true | ||||
| } | ||||
| 
 | ||||
| // Check if a simple key may start at the current position and add it if
 | ||||
|  | @ -879,13 +862,14 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { | |||
| 			possible:     true, | ||||
| 			required:     required, | ||||
| 			token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), | ||||
| 			mark:         parser.mark, | ||||
| 		} | ||||
| 		simple_key.mark = parser.mark | ||||
| 
 | ||||
| 		if !yaml_parser_remove_simple_key(parser) { | ||||
| 			return false | ||||
| 		} | ||||
| 		parser.simple_keys[len(parser.simple_keys)-1] = simple_key | ||||
| 		parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | @ -900,19 +884,33 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { | |||
| 				"while scanning a simple key", parser.simple_keys[i].mark, | ||||
| 				"could not find expected ':'") | ||||
| 		} | ||||
| 		// Remove the key from the stack.
 | ||||
| 		parser.simple_keys[i].possible = false | ||||
| 		delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) | ||||
| 	} | ||||
| 	// Remove the key from the stack.
 | ||||
| 	parser.simple_keys[i].possible = false | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| // max_flow_level limits the flow_level
 | ||||
| const max_flow_level = 10000 | ||||
| 
 | ||||
| // Increase the flow level and resize the simple key list if needed.
 | ||||
| func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | ||||
| 	// Reset the simple key on the next level.
 | ||||
| 	parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) | ||||
| 	parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ | ||||
| 		possible:     false, | ||||
| 		required:     false, | ||||
| 		token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), | ||||
| 		mark:         parser.mark, | ||||
| 	}) | ||||
| 
 | ||||
| 	// Increase the flow level.
 | ||||
| 	parser.flow_level++ | ||||
| 	if parser.flow_level > max_flow_level { | ||||
| 		return yaml_parser_set_scanner_error(parser, | ||||
| 			"while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, | ||||
| 			fmt.Sprintf("exceeded max depth of %d", max_flow_level)) | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
|  | @ -920,11 +918,16 @@ func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { | |||
| func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { | ||||
| 	if parser.flow_level > 0 { | ||||
| 		parser.flow_level-- | ||||
| 		parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] | ||||
| 		last := len(parser.simple_keys) - 1 | ||||
| 		delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) | ||||
| 		parser.simple_keys = parser.simple_keys[:last] | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| // max_indents limits the indents stack size
 | ||||
| const max_indents = 10000 | ||||
| 
 | ||||
| // Push the current indentation level to the stack and set the new level
 | ||||
| // the current column is greater than the indentation level.  In this case,
 | ||||
| // append or insert the specified token into the token queue.
 | ||||
|  | @ -939,6 +942,11 @@ func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml | |||
| 		// indentation level.
 | ||||
| 		parser.indents = append(parser.indents, parser.indent) | ||||
| 		parser.indent = column | ||||
| 		if len(parser.indents) > max_indents { | ||||
| 			return yaml_parser_set_scanner_error(parser, | ||||
| 				"while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, | ||||
| 				fmt.Sprintf("exceeded max depth of %d", max_indents)) | ||||
| 		} | ||||
| 
 | ||||
| 		// Create a token and insert it into the queue.
 | ||||
| 		token := yaml_token_t{ | ||||
|  | @ -989,6 +997,8 @@ func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { | |||
| 	// Initialize the simple key stack.
 | ||||
| 	parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) | ||||
| 
 | ||||
| 	parser.simple_keys_by_tok = make(map[int]int) | ||||
| 
 | ||||
| 	// A simple key is allowed at the beginning of the stream.
 | ||||
| 	parser.simple_key_allowed = true | ||||
| 
 | ||||
|  | @ -1270,7 +1280,11 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { | |||
| 	simple_key := &parser.simple_keys[len(parser.simple_keys)-1] | ||||
| 
 | ||||
| 	// Have we found a simple key?
 | ||||
| 	if simple_key.possible { | ||||
| 	if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { | ||||
| 		return false | ||||
| 
 | ||||
| 	} else if valid { | ||||
| 
 | ||||
| 		// Create the KEY token and insert it into the queue.
 | ||||
| 		token := yaml_token_t{ | ||||
| 			typ:        yaml_KEY_TOKEN, | ||||
|  | @ -1288,6 +1302,7 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool { | |||
| 
 | ||||
| 		// Remove the simple key.
 | ||||
| 		simple_key.possible = false | ||||
| 		delete(parser.simple_keys_by_tok, simple_key.token_number) | ||||
| 
 | ||||
| 		// A simple key cannot follow another simple key.
 | ||||
| 		parser.simple_key_allowed = false | ||||
|  |  | |||
|  | @ -89,7 +89,7 @@ func UnmarshalStrict(in []byte, out interface{}) (err error) { | |||
| 	return unmarshal(in, out, true) | ||||
| } | ||||
| 
 | ||||
| // A Decorder reads and decodes YAML values from an input stream.
 | ||||
| // A Decoder reads and decodes YAML values from an input stream.
 | ||||
| type Decoder struct { | ||||
| 	strict bool | ||||
| 	parser *parser | ||||
|  | @ -175,7 +175,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) { | |||
| //                  Zero valued structs will be omitted if all their public
 | ||||
| //                  fields are zero, unless they implement an IsZero
 | ||||
| //                  method (see the IsZeroer interface type), in which
 | ||||
| //                  case the field will be included if that method returns true.
 | ||||
| //                  case the field will be excluded if IsZero returns true.
 | ||||
| //
 | ||||
| //     flow         Marshal using a flow style (useful for structs,
 | ||||
| //                  sequences and maps).
 | ||||
|  | @ -464,3 +464,15 @@ func isZero(v reflect.Value) bool { | |||
| 	} | ||||
| 	return false | ||||
| } | ||||
| 
 | ||||
| // FutureLineWrap globally disables line wrapping when encoding long strings.
 | ||||
| // This is a temporary and thus deprecated method introduced to faciliate
 | ||||
| // migration towards v3, which offers more control of line lengths on
 | ||||
| // individual encodings, and has a default matching the behavior introduced
 | ||||
| // by this function.
 | ||||
| //
 | ||||
| // The default formatting of v2 was erroneously changed in v2.3.0 and reverted
 | ||||
| // in v2.4.0, at which point this function was introduced to help migration.
 | ||||
| func FutureLineWrap() { | ||||
| 	disableLineWrapping = true | ||||
| } | ||||
|  |  | |||
|  | @ -579,6 +579,7 @@ type yaml_parser_t struct { | |||
| 
 | ||||
| 	simple_key_allowed bool                // May a simple key occur at the current position?
 | ||||
| 	simple_keys        []yaml_simple_key_t // The stack of simple keys.
 | ||||
| 	simple_keys_by_tok map[int]int         // possible simple_key indexes indexed by token_number
 | ||||
| 
 | ||||
| 	// Parser stuff
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -242,6 +242,6 @@ google.golang.org/grpc/transport | |||
| # gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789 | ||||
| ## explicit | ||||
| gopkg.in/check.v1 | ||||
| # gopkg.in/yaml.v2 v2.2.2 | ||||
| # gopkg.in/yaml.v2 v2.4.0 | ||||
| ## explicit | ||||
| gopkg.in/yaml.v2 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue