Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Build a Simple Dynamic Site with Node.js Creating a Basic Template Engine in Node.js A Simple Merge Utility

hector alvarado
hector alvarado
15,796 Points

I didn't understand this challange, any help?

Didn't understand the following instruction, im kinda lost in how to follow this:

"Complete the implementation of the merge method in utilities.js file. You should be able to pass in a string with placeholders with percent signs (%) surrounding them. The second parameter should be an object with values to be inserted in to the placeholders. Look at index.js to see how it should work."

index.js
var utilities = require("./utilities");

var mailValues = {};

mailValues.first_name = "Janet";

var emailTemplate = "Hi %first_name%! Thanks for completing this code challenge :)";

var mergedContent = utilities.merge(emailTemplate, mailValues);

//mergedContent === "Hi Janet! Thanks for completing this code challenge :)";
utilities.js
function merge(content, values) {

  return content;
}


module.exports.merge = merge;

3 Answers

Mark Warren
Mark Warren
19,251 Points

It's pretty similar to the function in renderer.js, except in this case the value you're replacing is wrapped with %..% instead of {{...}}

function merge(content, values) {
  for (let key in values) {
    content = content.replace("%" + key + "%", values[key]);
  }
  return content;
}

module.exports.merge = merge;
Les Campbell
Les Campbell
26,071 Points

Thank you for posting this. 5 years later.

Why would they give us a question that is so poorly worded, and also just different enough from the course videos? No idea. I feel tricked on this one, not taught.

Tim Slack
Tim Slack
6,654 Points

I looked back through the course material and saw that the mergeValues function in the renderer.js file is essentially the same. Not 100% learning but I'd found the last part of this module fairly tricky to follow and the question is terribly worded.

The preview button does nothing in the editor, maybe me being stupid thinking I'd see the merged text output in the preview but when it didn't and just said "Bummer: No preview available, recheck your code." I spent a little while trying to work out why it didn't work only to chance it by hitting the check work button and success, my solution below worked:

function merge(content, values) { for (var key in values){ content = content.replace(%${key}%, values[key]); } return content; }

module.exports.merge = merge;