summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-swagger/go-swagger/generator/doc.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-swagger/go-swagger/generator/doc.go')
-rw-r--r--vendor/github.com/go-swagger/go-swagger/generator/doc.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/github.com/go-swagger/go-swagger/generator/doc.go b/vendor/github.com/go-swagger/go-swagger/generator/doc.go
new file mode 100644
index 000000000..49cbf3950
--- /dev/null
+++ b/vendor/github.com/go-swagger/go-swagger/generator/doc.go
@@ -0,0 +1,78 @@
+// Copyright 2015 go-swagger maintainers
+//
+// 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.
+
+/*
+Package generator provides the code generation library for go-swagger.
+
+# Generating data types
+
+The general idea is that you should rarely see interface{} in the generated code.
+You get a complete representation of a swagger document in somewhat idiomatic go.
+
+To do so, there is a set of mapping patterns that are applied,
+to map a Swagger specification to go types:
+
+ definition of primitive => type alias/name
+ definition of array => type alias/name
+ definition of map => type alias/name
+
+ definition of object
+ with properties => struct
+ definition of $ref => type alias/name
+
+ object with only
+ additional properties => map[string]T
+
+ object with additional
+ properties and properties => custom serializer
+
+ schema with schema array
+ in items => tuple (struct with properties, custom serializer)
+
+ schema with all of => struct
+
+ * allOf schema with $ref => embedded value
+ * allOf schema with properties => properties are included in struct
+ * adding an allOf schema with just "x-isnullable": true or
+ "x-nullable": true turns the schema into a pointer when
+ there are only other extension properties provided
+
+NOTE: anyOf and oneOf JSON-schema constructs are not supported by Swagger 2.0
+
+A property on a definition is a pointer when any one of the following conditions is met:
+
+ it is an object schema (struct)
+ it has x-nullable or x-isnullable as vendor extension
+ it is a primitive where the zero value is valid but would fail validation
+ otherwise strings minLength > 0 or required results in non-pointer
+ numbers min > 0, max < 0 and min < max
+
+JSONSchema and by extension Swagger allow for items that have a fixed size array,
+with the schema describing the items at each index. This can be combined with additional items
+to form some kind of tuple with varargs.
+
+To map this to go it creates a struct that has fixed names and a custom json serializer.
+
+NOTE: the additionalItems keyword is not supported by Swagger 2.0. However, the generator and validator parts
+in go-swagger do.
+
+# Documenting the generated code
+
+The code that is generated also gets the doc comments that are used by the scanner
+to generate a spec from go code. So that after generation you should be able to reverse
+generate a spec from the code that was generated by your spec.
+
+It should be equivalent to the original spec but might miss some default values and examples.
+*/
+package generator