From 189144dfbfcdf3cbf6c54498a520185fa29162bc Mon Sep 17 00:00:00 2001 From: Alexey Yurchenko Date: Tue, 14 Aug 2018 13:26:09 +0000 Subject: [PATCH 1/2] use reduce to find value --- src/index.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/index.js b/src/index.js index 096281b..911de93 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,9 @@ const RGX = /{{(.*?)}}/g; +const get = (obj, key) => obj && obj[key]; export default function (str, mix) { - return str.replace(RGX, (x, key, y) => { - x = 0; - y = mix; - key = key.trim().split('.'); - while (y && x < key.length) { - y = y[key[x++]]; - } - return y != null ? y : ''; + return str.replace(RGX, (x, key) => { + x = key.trim().split('.').reduce(get, mix); + return x != null ? x : ''; }); } From 6a4b0fa6c2974307c530a3f6fa28b012af3bd13f Mon Sep 17 00:00:00 2001 From: Alexey Yurchenko Date: Tue, 14 Aug 2018 13:36:30 +0000 Subject: [PATCH 2/2] trim key with regexp --- src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 911de93..672c956 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,9 @@ -const RGX = /{{(.*?)}}/g; +const RGX = /{{\s*(.*?)\s*}}/g; const get = (obj, key) => obj && obj[key]; export default function (str, mix) { return str.replace(RGX, (x, key) => { - x = key.trim().split('.').reduce(get, mix); + x = key.split('.').reduce(get, mix); return x != null ? x : ''; }); }