MCPcopy Create free account
hub / github.com/freeCodeCamp/freeCodeCamp / createChallenge

Method createChallenge

curriculum/src/build-superblock.ts:314–343  ·  view source on GitHub ↗

* Creates a challenge from a markdown file * @param {object} options - Options object * @param {string} options.filename - Name of the challenge file * @param {string} options.block - Name of the block * @param {object} options.meta - Meta information for the block * @param {boolean}

(
    {
      filename,
      block,
      meta,
      isAudited
    }: { filename: string; block: string; meta: Meta; isAudited: boolean },
    parser = parseMD
  )

Source from the content-addressed store, hash-verified

312 * @returns {Promise<object>} The finalized challenge object
313 */
314 async createChallenge(
315 {
316 filename,
317 block,
318 meta,
319 isAudited
320 }: { filename: string; block: string; meta: Meta; isAudited: boolean },
321 parser = parseMD
322 ) {
323 log(
324 `Creating challenge from file: ${filename} in block: ${block}, using lang: ${this.lang}`
325 );
326
327 const englishPath = resolve(this.blockContentDir, block, filename);
328 const i18nPath = resolve(this.i18nBlockContentDir, block, filename);
329
330 const langUsed = isAudited && existsSync(i18nPath) ? this.lang : 'english';
331
332 const challengePath = langUsed === 'english' ? englishPath : i18nPath;
333
334 const challenge = translateCommentsInChallenge(
335 await parser(challengePath),
336 langUsed,
337 this.commentTranslations
338 );
339
340 challenge.translationPending = this.lang !== 'english' && !isAudited;
341
342 return finalizeChallenge(challenge, meta);
343 }
344
345 /**
346 * Reads and builds all challenges from a block directory

Callers 2

readBlockChallengesMethod · 0.95

Calls 1

finalizeChallengeFunction · 0.85

Tested by

no test coverage detected