From 0200054dddb6089c77e446865c21dc1c4fee8a42 Mon Sep 17 00:00:00 2001 From: Dima Granetchi Date: Sun, 30 Nov 2014 13:54:52 +0200 Subject: [PATCH] string interpolation support! --- src/bindx/BindxExt.hx | 10 ++++++++++ test/ExprBindTest.hx | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/bindx/BindxExt.hx b/src/bindx/BindxExt.hx index 55c2f78..d8e5570 100644 --- a/src/bindx/BindxExt.hx +++ b/src/bindx/BindxExt.hx @@ -4,6 +4,7 @@ package bindx; import bindx.Error; import haxe.macro.Expr; +import haxe.macro.MacroStringTools; import haxe.macro.Type; import haxe.macro.Context; import haxe.macro.Printer; @@ -74,6 +75,15 @@ class BindExt { var prefix = 0; function findChain(expr:Expr) { var isChain; + + if (MacroStringTools.isFormatExpr(expr)) { + var f = switch (expr.expr) { + case EConst(CString(s)): s; + case _: null; + } + if (f != null) + expr = MacroStringTools.formatString(f, expr.pos); + } var e = expr; var ecall = false; do switch (e.expr) { diff --git a/test/ExprBindTest.hx b/test/ExprBindTest.hx index d88cf4a..84d7b5f 100644 --- a/test/ExprBindTest.hx +++ b/test/ExprBindTest.hx @@ -27,10 +27,10 @@ class ExprBindTest extends BuddySuite { var b = new BaseTest.Bindable1(); a.str = "a1"; b.str = "b1"; - inline function val() return b.str + "ab".charAt(a.str.length - 2) + Std.string(1); + inline function val() return b.str + '${"ab".charAt(a.str.length - 2)}${Std.string(1)}'; - BindExt.exprTo(b.str + "ab".charAt(a.str.length - 2) + Std.string(1), target.a); - BindExt.expr(b.str + "ab".charAt(a.str.length - 2) + Std.string(1), function (f, to:String) { + BindExt.exprTo(b.str + '${"ab".charAt(a.str.length - 2)}${Std.string(1)}', target.a); + BindExt.expr(b.str + '${"ab".charAt(a.str.length - 2)}${Std.string(1)}', function (f, to:String) { f.should.be(from); from = to; to.should.be(val());