blob: 7298905ab87cd56e97b814aff9545021b421ec44 (
plain) (
blame)
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
|
package com.rockymadden.stringmetric.cli
import scala.language.implicitConversions
sealed abstract class OptionMapType[T](protected[this] val stringSelf: String) {
def parse: T
}
final case class OptionMapArray(arrayString: String) extends OptionMapType[Array[String]](arrayString) {
private[this] lazy val self = if (stringSelf.length == 0) Array.empty[String] else stringSelf.split(" ")
override def parse = self
}
final case class OptionMapBigDecimal(bigDecimalString: String) extends OptionMapType[BigDecimal](bigDecimalString) {
private[this] lazy val self = BigDecimal(stringSelf)
override def parse = self
}
final case class OptionMapBigInt(bigIntString: String) extends OptionMapType[BigInt](bigIntString) {
private[this] lazy val self = BigInt(stringSelf)
override def parse = self
}
final case class OptionMapDouble(doubleString: String) extends OptionMapType[Double](doubleString) {
private[this] lazy val self = stringSelf.toDouble
override def parse = self
}
final case class OptionMapFloat(floatString: String) extends OptionMapType[Float](floatString) {
private[this] lazy val self = stringSelf.toFloat
override def parse = self
}
final case class OptionMapInt(intString: String) extends OptionMapType[Int](intString) {
private[this] lazy val self = stringSelf.toInt
override def parse = self
}
final case class OptionMapList(listString: String) extends OptionMapType[List[String]](listString) {
private[this] lazy val self = if (stringSelf.length == 0) List.empty[String] else stringSelf.split(" ").toList
override def parse = self
}
final case class OptionMapLong(longString: String) extends OptionMapType[Long](longString) {
private[this] lazy val self = stringSelf.toLong
override def parse = self
}
final case class OptionMapShort(shortString: String) extends OptionMapType[Short](shortString) {
private[this] lazy val self = stringSelf.toShort
override def parse = self
}
object OptionMapType {
implicit def OptionMapTypeToT[T](optionMapType: OptionMapType[T]): T = optionMapType.parse
implicit def StringToOptionMapArray(string: String): OptionMapArray = new OptionMapArray(string)
implicit def StringToOptionMapBigDecimal(string: String): OptionMapBigDecimal = new OptionMapBigDecimal(string)
implicit def StringToOptionMapBigInt(string: String): OptionMapBigInt = new OptionMapBigInt(string)
implicit def StringToOptionMapDouble(string: String): OptionMapDouble = new OptionMapDouble(string)
implicit def StringToOptionMapFloat(string: String): OptionMapFloat = new OptionMapFloat(string)
implicit def StringToOptionMapInt(string: String): OptionMapInt = new OptionMapInt(string)
implicit def StringToOptionMapList(string: String): OptionMapList = new OptionMapList(string)
implicit def StringToOptionMapLong(string: String): OptionMapLong = new OptionMapLong(string)
implicit def StringToOptionMapShort(string: String): OptionMapShort = new OptionMapShort(string)
}
|