From dd1ed81f6c1b43f2577c80286ae3dbaa2d37e41b Mon Sep 17 00:00:00 2001 From: Marcus Kida Date: Fri, 14 Mar 2014 12:00:31 +0100 Subject: [PATCH 1/2] Replaces dot, dash, comma in json-key by underscore for generating safe object property names --- ObjectiveCCodeGenerator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ObjectiveCCodeGenerator.py b/ObjectiveCCodeGenerator.py index e28d2ca..1f83d81 100755 --- a/ObjectiveCCodeGenerator.py +++ b/ObjectiveCCodeGenerator.py @@ -22,7 +22,7 @@ THE SOFTWARE. ''' -import datetime, time, os +import datetime, time, os, re class ObjectiveCCodeGenerator : @@ -51,7 +51,7 @@ def getSourceDescriptionString(self, name) : return mDescriptionString def makeVarName(self,schemeObj) : - returnName = schemeObj.type_name + returnName = re.sub('[,.-]', '_', schemeObj.type_name) if str(schemeObj.type_name) == "id" or str(schemeObj.type_name) == "description" : titleName = schemeObj.type_name.upper() titleName = titleName[:1] + schemeObj.type_name[1:] From 907a400817bd526d71e3c0c5078f400764542e91 Mon Sep 17 00:00:00 2001 From: Marcus Kida Date: Fri, 14 Mar 2014 13:55:09 +0100 Subject: [PATCH 2/2] Adds possibility to use ISO 8601 formatted date for base-type properties --- ObjectiveCCodeGenerator.py | 2 ++ doc/MetaJSONProtocol.md | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ObjectiveCCodeGenerator.py b/ObjectiveCCodeGenerator.py index 1f83d81..2449410 100755 --- a/ObjectiveCCodeGenerator.py +++ b/ObjectiveCCodeGenerator.py @@ -701,6 +701,8 @@ def getNaturalTypeGetterFromDictionaryCode(self, schemeObj, className, varName, dateObjSubType = schemeObj.getSubType() if len(dateObjSubType) and dateObjSubType[0] == str("ms") : resultString += firstIndent + className + varName + " = [" + self.projectPrefix + "APIParser dateWithMilliSecondsTimeIntervalFromResponseDictionary:" + dicName + " forKey:@\"" + keyName + "\" acceptNil:" + elif len(dateObjSubType) and dateObjSubType[0] == str("iso8601") : + resultString += firstIndent + className + varName + " = [" + self.projectPrefix + "APIParser dateFromResponseDictionary:" + dicName + " forKey:@\"" + keyName + "\" acceptNil:" else : resultString += firstIndent + className + varName + " = [" + self.projectPrefix + "APIParser dateWithTimeIntervalFromResponseDictionary:" + dicName + " forKey:@\"" + keyName + "\" acceptNil:" elif schemeBaseType == "data" : diff --git a/doc/MetaJSONProtocol.md b/doc/MetaJSONProtocol.md index a7a75e9..44c5e47 100644 --- a/doc/MetaJSONProtocol.md +++ b/doc/MetaJSONProtocol.md @@ -60,11 +60,19 @@ You can also use just one of those ("minValue" or "maxValue"). "description" : string "minValue" : UTC time interval since 1970 "maxValue" : UTC time interval since 1970 -} +}, +{ + "name" : "myISO8601Date", + "base-type" : "date", + "subType" : "iso8601", + "description" : string + "minValue" : UTC time interval since 1970 + "maxValue" : UTC time interval since 1970 +}, ``` * The value of myDate should be always UTC time interval since 1970. -* "subType" is optional, to specify wheather it's millisecond based timestamp or second based timestamp. +* "subType" is optional, to specify wheather it's millisecond based timestamp, a second based timestamp or an ISO 8601 timestamp. * If "subType" is specified as "ms", "minValue" and "maxValue" should be used like "1382455623.098" * "minValue" and "maxValue" are optional, to validate this type. * "maxValue" should be always same or later than "minValue".