Skip to content
This repository was archived by the owner on Aug 17, 2019. It is now read-only.

Commit a5edf6a

Browse files
committed
Make decision-oriented code re-usable
1 parent 2188908 commit a5edf6a

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

src/main/scala/com/ckkloverdos/convert/SourceTargetConverter.scala

+30-9
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,21 @@ class SourceTargetConverter[SS, TT](
4040
}
4141

4242
private[this] def canConvertStrictSource(sm: Manifest[_], tm: Manifest[_]) = {
43-
val from = sm.erasure
44-
val to = tm.erasure
45-
46-
sourceType.erasure.equals(from) && targetType.erasure.equals(to)
43+
SourceTargetConverter.canConvertWithStrictSource(
44+
sourceType,
45+
targetType,
46+
sm,
47+
tm
48+
)
4749
}
4850

4951
private[this] def canConvertNonStrictSource(sm: Manifest[_], tm: Manifest[_]) = {
50-
val from = sm.erasure
51-
val to = tm.erasure
52-
53-
sourceType.erasure.isAssignableFrom(from) && targetType.erasure.equals(to)
52+
SourceTargetConverter.canConvertWithNonStrictSource(
53+
sourceType,
54+
targetType,
55+
sm,
56+
tm
57+
)
5458
}
5559

5660

@@ -70,7 +74,24 @@ class SourceTargetConverter[SS, TT](
7074
}
7175
}
7276

73-
7477
override def toString() =
7578
"STConverter(" + List(sourceType, targetType, isStrictSource, function).mkString(",") + ")"
7679
}
80+
81+
object SourceTargetConverter {
82+
def canConvertWithStrictSource(sourceType: Manifest[_],
83+
targetType: Manifest[_],
84+
givenSourceType: Manifest[_],
85+
givenTargetType: Manifest[_]): Boolean = {
86+
87+
sourceType.erasure.equals(givenSourceType.erasure) && targetType.erasure.equals(givenTargetType.erasure)
88+
}
89+
90+
def canConvertWithNonStrictSource(sourceType: Manifest[_],
91+
targetType: Manifest[_],
92+
givenSourceType: Manifest[_],
93+
givenTargetType: Manifest[_]): Boolean = {
94+
95+
sourceType.erasure.isAssignableFrom(givenSourceType.erasure) && targetType.erasure.equals(givenTargetType.erasure)
96+
}
97+
}

0 commit comments

Comments
 (0)