@@ -50,20 +50,15 @@ final case class JString(value: String) extends JValue {
50
50
}
51
51
52
52
object JNumber {
53
- def apply (value : Int ): JNumber =
54
- new JNumber (value.toString)(NumberFlags .intConstructed)
53
+ def apply (value : Int ): JNumber = new JNumber (value.toString)
55
54
56
- def apply (value : Integer ): JNumber =
57
- new JNumber (value.toString)(NumberFlags .intConstructed)
55
+ def apply (value : Integer ): JNumber = new JNumber (value.toString)
58
56
59
- def apply (value : Long ): JNumber =
60
- new JNumber (value.toString)(NumberFlags .longConstructed)
57
+ def apply (value : Long ): JNumber = new JNumber (value.toString)
61
58
62
- def apply (value : BigInt ): JNumber =
63
- new JNumber (value.toString())(NumberFlags .bigIntConstructed)
59
+ def apply (value : BigInt ): JNumber = new JNumber (value.toString())
64
60
65
- def apply (value : BigDecimal ): JNumber =
66
- new JNumber (value.toString())(NumberFlags .bigDecimalConstructed)
61
+ def apply (value : BigDecimal ): JNumber = new JNumber (value.toString())
67
62
68
63
/**
69
64
* @param value
@@ -72,7 +67,7 @@ object JNumber {
72
67
def apply (value : Double ): JValue = value match {
73
68
case n if n.isNaN => JNull
74
69
case n if n.isInfinity => JNull
75
- case _ => new JNumber (value.toString)( NumberFlags .doubleConstructed)
70
+ case _ => new JNumber (value.toString)
76
71
}
77
72
78
73
/**
@@ -82,12 +77,12 @@ object JNumber {
82
77
def apply (value : Float ): JValue = value match {
83
78
case n if java.lang.Float .isNaN(n) => JNull
84
79
case n if n.isInfinity => JNull
85
- case _ => new JNumber (value.toString)( NumberFlags .floatConstructed)
80
+ case _ => new JNumber (value.toString)
86
81
}
87
82
88
83
def fromString (value : String ): Option [JNumber ] =
89
84
value match {
90
- case jNumberRegex(_ * ) => Some (new JNumber (value)( 0 ) )
85
+ case jNumberRegex(_ * ) => Some (new JNumber (value))
91
86
case _ => None
92
87
}
93
88
@@ -102,9 +97,7 @@ object JNumber {
102
97
*/
103
98
// Due to a restriction in Scala 2.10, we cant override/replace the default apply method
104
99
// generated by the compiler even when the constructor itself is marked private
105
- final class JNumber private [ast] (val value : String )(
106
- private [ast] val constructedFlag : Int )
107
- extends JValue {
100
+ final class JNumber private [ast] (val value : String ) extends JValue {
108
101
override def toUnsafe : unsafe.JValue = unsafe.JNumber (value)
109
102
110
103
override def toJsAny : js.Any = value.toDouble match {
@@ -142,85 +135,19 @@ final class JNumber private[ast] (val value: String)(
142
135
143
136
def copy (value : String ): JNumber =
144
137
value match {
145
- case jNumberRegex(_ * ) => new JNumber (value)( 0 )
138
+ case jNumberRegex(_ * ) => new JNumber (value)
146
139
case _ => throw new NumberFormatException (value)
147
140
}
148
141
149
- def toInt : Option [Long ] = {
150
- if ((constructedFlag & NumberFlags .int) == NumberFlags .int)
151
- Some (value.toInt)
152
- else {
153
- try {
154
- val asInt = value.toInt
155
- if (BigInt (value) == BigInt (asInt))
156
- Some (asInt)
157
- else
158
- None
159
- } catch {
160
- case _ : NumberFormatException => None
161
- }
162
- }
163
- }
142
+ def toInt : Option [Int ] = scalajson.ast.toInt(value)
164
143
165
- def toLong : Option [Long ] = {
166
- if ((constructedFlag & NumberFlags .long) == NumberFlags .long)
167
- Some (value.toLong)
168
- else {
169
- try {
170
- val asLong = value.toLong
171
- if (BigInt (value) == BigInt (asLong))
172
- Some (asLong)
173
- else
174
- None
175
- } catch {
176
- case _ : NumberFormatException => None
177
- }
178
- }
179
- }
144
+ def toBigInt : Option [BigInt ] = scalajson.ast.toBigInt(value)
180
145
181
- def toBigInt : Option [BigInt ] = {
182
- if ((constructedFlag & NumberFlags .bigInt) == NumberFlags .bigInt)
183
- Some (BigInt (value))
184
- else {
185
- try {
186
- Some (BigInt (value))
187
- } catch {
188
- case _ : NumberFormatException => None
189
- }
190
- }
191
- }
192
-
193
- def toBigDecimal : Option [BigDecimal ] = {
194
- try {
195
- Some (BigDecimal (value))
196
- } catch {
197
- case _ : NumberFormatException => None
198
- }
199
- }
146
+ def toLong : Option [Long ] = scalajson.ast.toLong(value)
200
147
201
- def toFloat : Option [Float ] = {
202
- if ((constructedFlag & NumberFlags .float) == NumberFlags .float)
203
- Some (value.toFloat)
204
- else {
205
- val asFloat = value.toFloat
206
- if (BigDecimal (value) == BigDecimal (asFloat.toDouble))
207
- Some (asFloat)
208
- else
209
- None
210
- }
211
- }
148
+ def toDouble : Option [Double ] = scalajson.ast.toDouble(value)
212
149
213
- def toDouble : Option [Double ] = {
214
- if ((constructedFlag & NumberFlags .double) == NumberFlags .double)
215
- Some (value.toDouble)
216
- else {
217
- val asDouble = value.toDouble
218
- if (BigDecimal (value) == BigDecimal (asDouble))
219
- Some (asDouble)
220
- else
221
- None
222
- }
223
- }
150
+ def toBigDecimal : Option [BigDecimal ] = scalajson.ast.toBigDecimal(value)
224
151
}
225
152
226
153
/** Represents a JSON Boolean value, which can either be a
0 commit comments