All Downloads are FREE. Search and download functionalities are using the official Maven repository.

swift4.model.mustache Maven / Gradle / Ivy

There is a newer version: 3.0.0-rc1
Show newest version
{{#models}}{{#model}}//
// {{classname}}.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//

import Foundation

{{#description}}

/** {{description}} */{{/description}}
{{#isArrayModel}}
public typealias {{classname}} = {{parent}}
{{/isArrayModel}}
{{^isArrayModel}}
{{#isEnum}}
public enum {{classname}}: {{dataType}}, Codable {
{{#allowableValues}}{{#enumVars}}    case {{name}} = "{{{value}}}"
{{/enumVars}}{{/allowableValues}}
}
{{/isEnum}}
{{^isEnum}}

open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}Codable{{/parent}} {

{{#vars}}
{{#isEnum}}
    public enum {{enumName}}: {{^isContainer}}{{datatype}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Codable { {{#allowableValues}}{{#enumVars}}
        case {{name}} = {{#isContainer}}"{{/isContainer}}{{#isString}}"{{/isString}}{{{value}}}{{#isString}}"{{/isString}}{{#isContainer}}"{{/isContainer}}{{/enumVars}}{{/allowableValues}}
    }
{{/isEnum}}
{{/vars}}
{{#vars}}
{{#isEnum}}
    {{#description}}/** {{description}} */
    {{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{^isEnum}}
    {{#description}}/** {{description}} */
    {{/description}}public var {{name}}: {{{datatype}}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#objcCompatible}}{{#vendorExtensions.x-swift-optional-scalar}}
    public var {{name}}Num: NSNumber? {
        get {
            return {{name}}.map({ return NSNumber(value: $0) })
        }
    }{{/vendorExtensions.x-swift-optional-scalar}}{{/objcCompatible}}
{{/isEnum}}
{{/vars}}

{{#additionalPropertiesType}}
    public var additionalProperties: [String:{{{additionalPropertiesType}}}] = [:]

    public subscript(key: String) -> {{{additionalPropertiesType}}}? {
        get {
            if let value = additionalProperties[key] {
                return value
            }
            return nil
        }

        set {
            additionalProperties[key] = newValue
        }
    }
{{/additionalPropertiesType}}

    {{^parent}}{{#hasVars}}
    public init({{#vars}}{{name}}: {{{datatypeWithEnum}}}{{^required}}?{{/required}}{{#hasMore}}, {{/hasMore}}{{/vars}}) {
        {{#vars}}
        self.{{name}} = {{name}}
        {{/vars}}
    }
    {{/hasVars}}{{/parent}}

    // Encodable protocol methods

    public {{#parent}}override {{/parent}}func encode(to encoder: Encoder) throws {

        var container = encoder.container(keyedBy: String.self)

        {{#vars}}
        try container.encode{{^required}}IfPresent{{/required}}({{{name}}}, forKey: "{{{baseName}}}")
        {{/vars}}
        {{#additionalPropertiesType}}
        try container.encodeMap(additionalProperties)
        {{/additionalPropertiesType}}
    }

    // Decodable protocol methods

    public required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: String.self)

        {{#vars}}
        {{name}} = try container.decode{{^required}}IfPresent{{/required}}({{{datatypeWithEnum}}}.self, forKey: "{{{baseName}}}")
        {{/vars}}
        {{#additionalPropertiesType}}
        var nonAdditionalPropertyKeys = Set()
        {{#vars}}
        nonAdditionalPropertyKeys.insert("{{{baseName}}}")
        {{/vars}}
        additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys)
        {{/additionalPropertiesType}}
        {{#parent}}
        try super.init(from: decoder)
        {{/parent}}
    }
}

{{/isEnum}}
{{/isArrayModel}}
{{/model}}
{{/models}}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy