// generated file, do not modify! // {{ dateTime }} {% for t in dataAndType %} {% case t.value | constType %} {% when "DataDef" %} enum {{ t.value.dataName }} { {% for c in t.value.constructors %} {% if c.value.fields | hasFieldNames %} case {{ c.value.name }}({{ c.value.name }}_Data) struct {{ c.value.name }}_Data { {% for f in c.value.fields %} var {{ f.value.fieldName }} : {{ f.value.fieldType | swiftType }} {% endfor %} } {% else %} case {{ c.value.name }}{% if !(c.value.fields | empty) %}({% for f in c.value.fields %}{{ f.value.fieldType | swiftType }}{% if !f.last %},{% endif %}{% endfor %}){% endif %} {% endif %} {% endfor %} } {% when "TypeAlias" %} typealias {{ t.value.aliasName }} = {{ t.value.aliasType | swiftType }} {% endcase %} {% endfor %} {# protocol ToJSON { func toJSON(item: ItemType) -> [String: AnyObject] } #} extension Int { var toJSON : [String: AnyObject] { return ["":""] } } extension Int32 { var toJSON : [String: AnyObject] { return ["":""] } } extension UInt { var toJSON : [String: AnyObject] { return ["":""] } } extension UInt32 { var toJSON : [String: AnyObject] { return ["":""] } } extension Float { var toJSON : [String: AnyObject] { return ["":""] } } extension Bool { var toJSON : [String: AnyObject] { return ["":""] } } extension String { var toJSON : [String: AnyObject] { return ["":""] } } extension Array { var toJSON : [String: AnyObject] { return ["":""] } } extension Dictionary { var toJSON : [String: AnyObject] { return ["":""] } } extension Maybe { var toJSON : [String: AnyObject] { return ["":""] } } {% for t in definitions %} extension {{ t.value.dataName }} { var toJSON : [String: AnyObject] { switch self { {% for c in t.value.constructors %} {% if c.value.fields | hasFieldNames %} case .{{ c.value.name }}(let v): return [ "tag" : "{{ c.value.name }}"{% for f in c.value.fields %} , "{{ f.value.fieldName }}" : v.{{ f.value.fieldName }}.toJSON{% endfor %} ] {% else %} case .{{ c.value.name }}{% if !(c.value.fields | empty) %}({% for f in c.value.fields %}let arg{{ f.index0 }}{% if !f.last %}, {% endif %}{% endfor %}){% endif %}: return [ "tag" : "{{ c.value.name }}"{% for f in c.value.fields %}, "arg{{ f.index0 }}" : arg{{ f.index0 }}.toJSON{% endfor %}] {% endif %} {% endfor %} } } } {% endfor %} enum Maybe { case Nothing case Just(T) } enum Type { case Int case Int32 case Word case Word32 case Float case Bool case String case Array(Type) case List(Type) case Maybe(Type) case Map(Type,Type) {% for t in definitions %} case {{ t.value.dataName }} {% endfor %} } func fromJSON(type: Type, personName: String) -> Any { switch type { case .Int: return 0 case .Int32: return 0 case .Word: return 0 case .Word32: return 0 case .Float: return 0.0 case .Bool: return false case .String: return "" case .Array(let a): return fromJSON(a,personName) case .List(let a): return fromJSON(a,personName) case .Maybe(let a): return fromJSON(a,personName) } return 0; }