| 5064 |
dpurdie |
1 |
'=====================================================
|
|
|
2 |
' DictDump
|
|
|
3 |
' Pretty display of a Dictionary Item
|
|
|
4 |
'=====================================================
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
Private DICToutput_level
|
|
|
8 |
Public Function DICToutput(data)
|
|
|
9 |
DICToutput_level = 1
|
|
|
10 |
DICToutput = "{" & Chr(13) & Chr(10) & GetDict(data) & "}"
|
|
|
11 |
End Function
|
|
|
12 |
|
|
|
13 |
Private Function GetDict(objDict)
|
|
|
14 |
dim aj_item, aj_keyvals, aj_label, aj_dicttype
|
|
|
15 |
For Each aj_item In objDict
|
|
|
16 |
Select Case TypeName(objDict.Item(aj_item))
|
|
|
17 |
Case "Dictionary"
|
|
|
18 |
GetDict = GetDict & Space(DICToutput_level * 4)
|
|
|
19 |
|
|
|
20 |
aj_dicttype = "[]"
|
|
|
21 |
For Each aj_label In objDict.Item(aj_item).Keys
|
|
|
22 |
If Not IsInt(aj_label) Then aj_dicttype = "{}"
|
|
|
23 |
Next
|
|
|
24 |
|
|
|
25 |
If IsInt(aj_item) Then
|
|
|
26 |
GetDict = GetDict & Left(aj_dicttype,1) & Chr(13) & Chr(10)
|
|
|
27 |
Else
|
|
|
28 |
GetDict = GetDict & """" & aj_DICTEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10)
|
|
|
29 |
End If
|
|
|
30 |
DICToutput_level = DICToutput_level + 1
|
|
|
31 |
|
|
|
32 |
aj_keyvals = objDict.Keys
|
|
|
33 |
GetDict = 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)
|
|
|
34 |
Case Else
|
|
|
35 |
aj_keyvals = objDict.Keys
|
|
|
36 |
GetDict = 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)
|
|
|
37 |
End Select
|
|
|
38 |
Next
|
|
|
39 |
End Function
|
|
|
40 |
|
|
|
41 |
Private Function IsInt(val)
|
|
|
42 |
IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long")
|
|
|
43 |
End Function
|
|
|
44 |
|
|
|
45 |
Private Function GetSubDict(objSubDict)
|
|
|
46 |
GetSubDict = GetDict(objSubDict)
|
|
|
47 |
DICToutput_level= DICToutput_level -1
|
|
|
48 |
End Function
|
|
|
49 |
|
|
|
50 |
Private Function WriteValue(ByVal val)
|
|
|
51 |
Select Case TypeName(val)
|
|
|
52 |
Case "Double", "Integer", "Long": WriteValue = val
|
|
|
53 |
Case "Null" : WriteValue = "null"
|
|
|
54 |
Case "Boolean" : WriteValue = aj_InlineIf(val, "true", "false")
|
|
|
55 |
Case Else : WriteValue = """" & aj_DICTEncode(val) & """"
|
|
|
56 |
End Select
|
|
|
57 |
End Function
|
|
|
58 |
|
|
|
59 |
Private Function aj_DICTEncode(ByVal val)
|
|
|
60 |
val = Replace(val, "\", "\\")
|
|
|
61 |
val = Replace(val, """", "\""")
|
|
|
62 |
'val = Replace(val, "/", "\/")
|
|
|
63 |
val = Replace(val, Chr(8), "\b")
|
|
|
64 |
val = Replace(val, Chr(12), "\f")
|
|
|
65 |
val = Replace(val, Chr(10), "\n")
|
|
|
66 |
val = Replace(val, Chr(13), "\r")
|
|
|
67 |
val = Replace(val, Chr(9), "\t")
|
|
|
68 |
aj_DICTEncode = Trim(val)
|
|
|
69 |
End Function
|
|
|
70 |
|
|
|
71 |
Private Function aj_InlineIf(condition, returntrue, returnfalse)
|
|
|
72 |
If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalse
|
|
|
73 |
End Function
|