| 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
|