mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 06:07:49 +00:00 
			
		
		
		
	
							
								
								
									
										72
									
								
								vendor/github.com/xeipuuv/gojsonschema/jsonContext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								vendor/github.com/xeipuuv/gojsonschema/jsonContext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| // Copyright 2013 MongoDB, Inc. | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //   http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| // author           tolsen | ||||
| // author-github    https://github.com/tolsen | ||||
| // | ||||
| // repository-name  gojsonschema | ||||
| // repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language. | ||||
| // | ||||
| // description      Implements a persistent (immutable w/ shared structure) singly-linked list of strings for the purpose of storing a json context | ||||
| // | ||||
| // created          04-09-2013 | ||||
|  | ||||
| package gojsonschema | ||||
|  | ||||
| import "bytes" | ||||
|  | ||||
| // jsonContext implements a persistent linked-list of strings | ||||
| type jsonContext struct { | ||||
| 	head string | ||||
| 	tail *jsonContext | ||||
| } | ||||
|  | ||||
| func newJsonContext(head string, tail *jsonContext) *jsonContext { | ||||
| 	return &jsonContext{head, tail} | ||||
| } | ||||
|  | ||||
| // String displays the context in reverse. | ||||
| // This plays well with the data structure's persistent nature with | ||||
| // Cons and a json document's tree structure. | ||||
| func (c *jsonContext) String(del ...string) string { | ||||
| 	byteArr := make([]byte, 0, c.stringLen()) | ||||
| 	buf := bytes.NewBuffer(byteArr) | ||||
| 	c.writeStringToBuffer(buf, del) | ||||
|  | ||||
| 	return buf.String() | ||||
| } | ||||
|  | ||||
| func (c *jsonContext) stringLen() int { | ||||
| 	length := 0 | ||||
| 	if c.tail != nil { | ||||
| 		length = c.tail.stringLen() + 1 // add 1 for "." | ||||
| 	} | ||||
|  | ||||
| 	length += len(c.head) | ||||
| 	return length | ||||
| } | ||||
|  | ||||
| func (c *jsonContext) writeStringToBuffer(buf *bytes.Buffer, del []string) { | ||||
| 	if c.tail != nil { | ||||
| 		c.tail.writeStringToBuffer(buf, del) | ||||
|  | ||||
| 		if len(del) > 0 { | ||||
| 			buf.WriteString(del[0]) | ||||
| 		} else { | ||||
| 			buf.WriteString(".") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	buf.WriteString(c.head) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user