@@ -17,11 +17,26 @@ object Toolbox {
17
17
type Run
18
18
type Show
19
19
20
- implicit def toolbox [T ]: Toolbox [T ] = new Toolbox [T ] {
21
-
22
- def run (expr : Expr [T ]): T = Toolbox .run(expr, Settings .run())
20
+ implicit def toolbox [T ](implicit
21
+ runSettings : Settings [Run ] = Settings .run(),
22
+ showSettings : Settings [Show ] = Settings .show()
23
+ ): Toolbox [T ] = new Toolbox [T ] {
24
+
25
+ def run (expr : Expr [T ]): T = expr match {
26
+ case expr : ValueExpr [T ] => expr.value
27
+ case _ => new QuoteDriver ().run(expr, runSettings)
28
+ }
23
29
24
- def show (expr : Expr [T ]): String = Toolbox .show(expr, Settings .show())
30
+ def show (expr : Expr [T ]): String = expr match {
31
+ case expr : ValueExpr [T ] =>
32
+ implicit val ctx = new QuoteDriver ().initCtx
33
+ if (showSettings.compilerArgs.contains(" -color:never" ))
34
+ ctx.settings.color.update(" never" )
35
+ val printer = new RefinedPrinter (ctx)
36
+ if (expr.value == BoxedUnit .UNIT ) " ()"
37
+ else printer.toText(Literal (Constant (expr.value))).mkString(Int .MaxValue , false )
38
+ case _ => new QuoteDriver ().show(expr, showSettings)
39
+ }
25
40
26
41
def toConstantOpt (expr : Expr [T ]): Option [T ] = {
27
42
def toConstantOpt (tree : Tree ): Option [T ] = tree match {
@@ -38,22 +53,6 @@ object Toolbox {
38
53
39
54
}
40
55
41
- def run [T ](expr : Expr [T ], settings : Settings [Run ]): T = expr match {
42
- case expr : ValueExpr [T ] => expr.value
43
- case _ => new QuoteDriver ().run(expr, settings)
44
- }
45
-
46
- def show [T ](expr : Expr [T ], settings : Settings [Show ]): String = expr match {
47
- case expr : ValueExpr [T ] =>
48
- implicit val ctx = new QuoteDriver ().initCtx
49
- if (settings.compilerArgs.contains(" -color:never" ))
50
- ctx.settings.color.update(" never" )
51
- val printer = new RefinedPrinter (ctx)
52
- if (expr.value == BoxedUnit .UNIT ) " ()"
53
- else printer.toText(Literal (Constant (expr.value))).mkString(Int .MaxValue , false )
54
- case _ => new QuoteDriver ().show(expr, settings)
55
- }
56
-
57
56
class Settings [T ] private (val outDir : Option [String ], val compilerArgs : List [String ])
58
57
59
58
object Settings {
0 commit comments