42 lines
		
	
	
		
			952 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			952 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const path = require('path');
 | 
						|
const select = require('unist-util-select');
 | 
						|
const { head } = require('lodash');
 | 
						|
 | 
						|
const { isAStubRE } = require('../regEx');
 | 
						|
 | 
						|
const guideArticle = path.resolve(
 | 
						|
  __dirname,
 | 
						|
  '../../src/templates/Guide/GuideArticle.js'
 | 
						|
);
 | 
						|
 | 
						|
exports.createGuideArticlePages = createPage => ({
 | 
						|
  node: {
 | 
						|
    htmlAst,
 | 
						|
    excerpt,
 | 
						|
    fields: { slug },
 | 
						|
    id
 | 
						|
  }
 | 
						|
}) => {
 | 
						|
  let meta = {};
 | 
						|
 | 
						|
  if (!isAStubRE.test(excerpt)) {
 | 
						|
    const featureImage = head(select(htmlAst, 'element[tagName=img]'));
 | 
						|
    meta.featureImage = featureImage
 | 
						|
      ? featureImage.properties.src
 | 
						|
      : 'https://s3.amazonaws.com/freecodecamp' +
 | 
						|
        '/reecodecamp-square-logo-large.jpg';
 | 
						|
 | 
						|
    const description = head(select(htmlAst, 'element[tagName=p]'));
 | 
						|
    meta.description = description ? description.children[0].value : '';
 | 
						|
  }
 | 
						|
 | 
						|
  return createPage({
 | 
						|
    path: `/guide${slug}`,
 | 
						|
    component: guideArticle,
 | 
						|
    context: {
 | 
						|
      id,
 | 
						|
      meta
 | 
						|
    }
 | 
						|
  });
 | 
						|
};
 |