-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJsonArray.cls
More file actions
134 lines (107 loc) · 3.71 KB
/
JsonArray.cls
File metadata and controls
134 lines (107 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "JsonArray"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'@Folder("JSON.Core")
Option Explicit
Implements IJson
Private Const ModuleName As String = "JsonArray"
Private Type TData
Items As Collection
End Type
Private This As TData
Private Sub Class_Initialize()
Const FunctionName As String = "Class_Initialize"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Set This.Items = New Collection
End Sub
Friend Sub Create(ByVal Stream As StringStream)
Const FunctionName As String = "Create"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Parse Stream
End Sub
Private Function IJson_DataType() As JsonDataTypeEnum
Const FunctionName As String = "IJson_DataType"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
IJson_DataType = jsondatatypeArray
End Function
Public Function DataType() As JsonDataTypeEnum
Const FunctionName As String = "DataType"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
DataType = IJson_DataType
End Function
Private Function IJson_ToString() As String
Const FunctionName As String = "IJson_ToString"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Dim Output As String
Dim Item As IJson
For Each Item In This.Items
If (Output <> vbNullString) Then
Output = Output & ","
End If
Output = Output & Item.ToString
Next
IJson_ToString = "[" & Output & "]"
End Function
Public Function ToString() As String
Const FunctionName As String = "ToString"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
ToString = IJson_ToString
End Function
Public Function Value() As String
Const FunctionName As String = "Value"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Value = "[Array]"
End Function
Public Function Count() As Long
Const FunctionName As String = "Count"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Count = This.Items.Count
End Function
'@DefaultMember
Public Function Items(ByVal Index As Long) As IJson
Attribute Items.VB_UserMemId = 0
Const FunctionName As String = "Item"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Debug.Assert Index >= 0
Debug.Assert Index < This.Items.Count
Set Items = This.Items(Index + 1)
End Function
'@Enumerator
Public Function NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Const FunctionName As String = "NewEnum"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Set NewEnum = This.Items.[_NewEnum]
End Function
Private Sub Parse(ByVal Stream As StringStream)
Const FunctionName As String = "Parse"
Dim ErrorLogger As ErrorLogger
Set ErrorLogger = Factory.CreateErrorLogger(ModuleName, FunctionName)
Stream.EatCharacter "["
Stream.EatSpaces
Do While Stream.PeekCharacter <> "]"
This.Items.Add Service.ParseValue(Stream)
Stream.EatSpaces
If (Stream.PeekCharacter = ",") Then
Stream.EatCharacter ","
Stream.EatSpaces
End If
Loop
Stream.EatCharacter "]"
End Sub