Rev 5064 | Blame | Compare with Previous | Last modification | View Log | RSS feed
'=====================================================' DictDump' Pretty display of a Dictionary Item'=====================================================Private DICToutput_levelPublic Function DICToutput(data)DICToutput_level = 1DICToutput = "{" & Chr(13) & Chr(10) & GetDict(data) & "}"End FunctionPrivate Function GetDict(objDict)dim aj_item, aj_keyvals, aj_label, aj_dicttypeFor Each aj_item In objDictSelect Case TypeName(objDict.Item(aj_item))Case "Dictionary"GetDict = GetDict & Space(DICToutput_level * 4)aj_dicttype = "[]"For Each aj_label In objDict.Item(aj_item).KeysIf Not IsInt(aj_label) Then aj_dicttype = "{}"NextIf IsInt(aj_item) ThenGetDict = GetDict & Left(aj_dicttype,1) & Chr(13) & Chr(10)ElseGetDict = GetDict & """" & aj_DICTEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10)End IfDICToutput_level = DICToutput_level + 1aj_keyvals = objDict.KeysGetDict = GetDict & GetSubDict(objDict.Item(aj_item)) & Space(DICToutput_level * 4) & Right(aj_dicttype,1) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10)Case Elseaj_keyvals = objDict.KeysGetDict = GetDict & Space(DICToutput_level * 4) & aj_InlineIf(IsInt(aj_item), "", """" & aj_DICTEncode(aj_item) & """: ") & WriteValue(objDict.Item(aj_item)) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10)End SelectNextEnd FunctionPrivate Function IsInt(val)IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long")End FunctionPrivate Function GetSubDict(objSubDict)GetSubDict = GetDict(objSubDict)DICToutput_level= DICToutput_level -1End FunctionPrivate Function WriteValue(ByVal val)Select Case TypeName(val)Case "Double", "Integer", "Long": WriteValue = valCase "Null" : WriteValue = "null"Case "Boolean" : WriteValue = aj_InlineIf(val, "true", "false")Case Else : WriteValue = """" & aj_DICTEncode(val) & """"End SelectEnd FunctionPrivate Function aj_DICTEncode(ByVal val)val = Replace(val, "\", "\\")val = Replace(val, """", "\""")'val = Replace(val, "/", "\/")val = Replace(val, Chr(8), "\b")val = Replace(val, Chr(12), "\f")val = Replace(val, Chr(10), "\n")val = Replace(val, Chr(13), "\r")val = Replace(val, Chr(9), "\t")aj_DICTEncode = Trim(val)End FunctionPrivate Function aj_InlineIf(condition, returntrue, returnfalse)If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalseEnd Function