Skip to content

You can specify the path of Utilities. #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions ObjectiveCCodeGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
THE SOFTWARE.
'''

import datetime, time, os
import datetime, time, os, re

class ObjectiveCCodeGenerator :

Expand Down Expand Up @@ -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:]
Expand Down Expand Up @@ -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" :
Expand Down Expand Up @@ -1015,14 +1017,14 @@ def writeAPIParser(self) :
finally :
implDstFile.close()

def writeTemplates(self) :
def writeTemplates(self, templatePath) :

if self.dirPath.endswith("/") :
self.dirPath = self.dirPath[:-1]
baseDirPath = self.dirPath
self.dirPath = baseDirPath + "/Utilities/NSString"
if templatePath.endswith("/") :
templatePath = templatePath[:-1]

self.dirPath = templatePath + "/NSString"
self.writeNSStringCategory()
self.dirPath = baseDirPath + "/Utilities/APIParser"
self.dirPath = templatePath + "/APIParser"
self.writeAPIParser()


Expand Down
12 changes: 10 additions & 2 deletions doc/MetaJSONProtocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -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".
Expand Down
24 changes: 20 additions & 4 deletions readJSON.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,23 @@
projectPrefix = ''
target = 'iOS'
dirPathToSaveCodes = './src'
dirPathToSaveUtility = ''
objectSuffix = "JSONObject"

usageString = '\nreadJSON.py [ -p | -t | -o | -s ] [-i]\n'
usageString = '\nreadJSON.py [ -p | -t | -o | -s | -u ] [-i]\n'
usageString += 'Options:\n'
usageString += ' -h, --help shows help\n'
usageString += ' -p, --prefix= project prefix (default: S2M)\n'
usageString += ' -s, --suffix= classname suffix (default: JSONObject). Use "-s false" for no suffix\n'
usageString += ' -t, --target= target platform iOS or Android (default: iOS)\n'
usageString += ' -i, --input= meta-JSON file to read\n'
usageString += ' -o, --output= ouput path of generated source codes\n'
usageString += ' -u, --utility= ouput path of generated Utility codes. Use "-u false" for no utility\n'
usageString += ' -i, --input= meta-JSON file to read\n'

if __name__ == "__main__":
argv = sys.argv[1:]
try:
opts, args = getopt.getopt(argv,"ho:p:s:t:i:",["prefix=","suffix=","target=","input=","output="])
opts, args = getopt.getopt(argv,"ho:p:s:t:i:u:",["prefix=","suffix=","target=","input=","output=","utility="])
except getopt.GetoptError:
print usageString
sys.exit(2)
Expand All @@ -74,7 +76,20 @@
objectSuffix = arg
if objectSuffix == "false":
objectSuffix = ""
elif opt in ("-u", "--utility"):
dirPathToSaveUtility = arg



if dirPathToSaveUtility == "":
tmpSourcePath = dirPathToSaveCodes
if tmpSourcePath.endswith("/") :
tmpSourcePath = tmpSourcePath[:-1]
dirPathToSaveUtility = tmpSourcePath + "/Utility"

elif dirPathToSaveUtility == "false":
dirPathToSaveUtility = "";

addFiles = False
for arg in argv :
if arg.endswith(inputfile) :
Expand Down Expand Up @@ -142,7 +157,8 @@ def openFileAndParseJSON(filePath):
templateCodeGen.templatePath = templatePath
templateCodeGen.projectPrefix = projectPrefix
templateCodeGen.dirPath = dirPathToSaveCodes
templateCodeGen.writeTemplates()
if len(dirPathToSaveUtility) != 0 :
templateCodeGen.writeTemplates(dirPathToSaveUtility)

JSONScheme.projectPrefix = projectPrefix
JSONScheme.objectSuffix = objectSuffix
Expand Down