1 |
#Region "Microsoft.VisualBasic::679ab956575a21dcdfd03a3f0259dc34, Microsoft.VisualBasic.Core\Language\Value\DefaultValue\DefaultString.vb"
|
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 |
#End Region
|
46 |
|
47 |
Imports System.Runtime.CompilerServices
|
48 |
Imports Microsoft.VisualBasic.Serialization.JSON
|
49 |
Imports CLI = Microsoft.VisualBasic.CommandLine.CommandLine
|
50 |
|
51 |
Namespace Language.Default
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
Public Structure DefaultString : Implements IDefaultValue(Of String)
|
57 |
Implements IsEmpty
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
Public ReadOnly Property DefaultValue As String Implements IDefaultValue(Of String).DefaultValue
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
Public ReadOnly Property IsEmpty As Boolean Implements IsEmpty.IsEmpty
|
70 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
71 |
Get
|
72 |
Return DefaultValue.StringEmpty
|
73 |
End Get
|
74 |
End Property
|
75 |
|
76 |
Sub New([string] As String)
|
77 |
DefaultValue = [string]
|
78 |
End Sub
|
79 |
|
80 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
81 |
Public Function LoadXml(Of T)() As T
|
82 |
Return DefaultValue.LoadXml(Of T)
|
83 |
End Function
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
91 |
Public Function LoadJson(Of T)() As T
|
92 |
If DefaultValue.FileExists Then
|
93 |
Return DefaultValue.ReadAllText.LoadJSON(Of T)
|
94 |
ElseIf DefaultValue.StringEmpty Then
|
95 |
Return Nothing
|
96 |
Else
|
97 |
Return DefaultValue.LoadJSON(Of T)
|
98 |
End If
|
99 |
End Function
|
100 |
|
101 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
102 |
Public Function ReadAllLines() As String()
|
103 |
Return DefaultValue.ReadAllLines
|
104 |
End Function
|
105 |
|
106 |
Public Overrides Function ToString() As String
|
107 |
Return DefaultValue
|
108 |
End Function
|
109 |
|
110 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
111 |
Private Shared Function assertIsNothing(s As String) As Boolean
|
112 |
Return s Is Nothing OrElse String.IsNullOrEmpty(s)
|
113 |
End Function
|
114 |
|
115 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
116 |
Public Shared Narrowing Operator CType(str As DefaultString) As Boolean
|
117 |
Return str.DefaultValue.ParseBoolean
|
118 |
End Operator
|
119 |
|
120 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
121 |
Public Shared Narrowing Operator CType(str As DefaultString) As Integer
|
122 |
Return str.DefaultValue.ParseDouble
|
123 |
End Operator
|
124 |
|
125 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
126 |
Public Shared Narrowing Operator CType(str As DefaultString) As Double
|
127 |
Return str.DefaultValue.ParseDouble
|
128 |
End Operator
|
129 |
|
130 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
131 |
Public Shared Narrowing Operator CType(str As DefaultString) As Long
|
132 |
Return str.DefaultValue.ParseDouble
|
133 |
End Operator
|
134 |
|
135 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
136 |
Public Shared Narrowing Operator CType(str As DefaultString) As Single
|
137 |
Return str.DefaultValue.ParseDouble
|
138 |
End Operator
|
139 |
|
140 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
141 |
Public Shared Narrowing Operator CType(str As DefaultString) As Short
|
142 |
Return str.DefaultValue.ParseDouble
|
143 |
End Operator
|
144 |
|
145 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
146 |
Public Shared Widening Operator CType(str As String) As DefaultString
|
147 |
Return New DefaultString(str)
|
148 |
End Operator
|
149 |
|
150 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
151 |
Public Shared Operator IsTrue(str As DefaultString) As Boolean
|
152 |
Return CType(str, Boolean)
|
153 |
End Operator
|
154 |
|
155 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
156 |
Public Shared Operator IsFalse(str As DefaultString) As Boolean
|
157 |
Return False = CType(str, Boolean)
|
158 |
End Operator
|
159 |
|
160 |
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 |
Public Shared Operator Or(value As DefaultString, default$) As String
|
168 |
If assertIsNothing(value.DefaultValue) Then
|
169 |
Return [default]
|
170 |
Else
|
171 |
Return value.DefaultValue
|
172 |
End If
|
173 |
End Operator
|
174 |
|
175 |
|
176 |
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
Public Shared Operator Or(value As DefaultString, x%) As Integer
|
182 |
Return CInt(value Or CDbl(x))
|
183 |
End Operator
|
184 |
|
185 |
Public Shared Operator Or(value As DefaultString, x#) As Double
|
186 |
If assertIsNothing(value.DefaultValue) Then
|
187 |
Return x
|
188 |
Else
|
189 |
Return Val(value.DefaultValue)
|
190 |
End If
|
191 |
End Operator
|
192 |
|
193 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
194 |
Public Shared Operator Or(arg As DefaultString, [default] As DefaultValue(Of String)) As String
|
195 |
Return arg.DefaultValue Or [default]
|
196 |
End Operator
|
197 |
|
198 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
199 |
Public Shared Narrowing Operator CType(value As DefaultString) As String
|
200 |
Return value.DefaultValue
|
201 |
End Operator
|
202 |
|
203 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
204 |
Public Shared Operator &(s1 As DefaultString, s2$) As String
|
205 |
Return s1.DefaultValue & s2
|
206 |
End Operator
|
207 |
|
208 |
<MethodImpl(MethodImplOptions.AggressiveInlining)>
|
209 |
Public Shared Operator &(s1$, s2 As DefaultString) As String
|
210 |
Return s1 & s2.DefaultValue
|
211 |
End Operator
|
212 |
End Structure
|
213 |
End Namespace
|