From 1b21b018e01392d2c74e53136f8fa0ca838d7643 Mon Sep 17 00:00:00 2001 From: James Halliday Date: Sun, 14 Apr 2013 20:10:25 -0700 Subject: [PATCH] factor out interpolation --- index.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index 8a71346..c22cc6d 100644 --- a/index.js +++ b/index.js @@ -23,23 +23,21 @@ exports.parse = function (s, env) { ; } else if (/^"/.test(s)) { - return s - .replace(/^"|"$/g, '') - .replace(/\\(["'\\$`(){}!#&*|])/g, '$1') - .replace(/\$(\w+)/g, getVar) - .replace(/\${(\w+)}/g, getVar) - ; - } - else { - return s - .replace(/\\([ "'\\$`(){}!#&*|])/g, '$1') - .replace(/\$(\w+)/g, getVar) - .replace(/\${(\w+)}/g, getVar) - ; + return interpolate(s.replace(/^"|"$/g, '')) } + else return interpolate(s); }) ; + function getVar (_, x) { return String(env[x]) } + + function interpolate (s) { + return s + .replace(/\\([ "'\\$`(){}!#&*|])/g, '$1') + .replace(/\$(\w+)/g, getVar) + .replace(/\${(\w+)}/g, getVar) + ; + } };