in gulpfile.js [734:792]
function htmlDetail () {
return gulp.src('./tmp/data/datasets/*.json')
.pipe(flatmap(function (stream, file) {
var templateData = JSON.parse(file.contents.toString('utf8'));
// If we have no DataAtWork, remove it
if (!templateData.DataAtWork || (templateData.DataAtWork && _.compact(_.flatMap(templateData.DataAtWork)).length === 0)) {
delete templateData.DataAtWork;
}
// Sort DataAtWork entries by alpha and handle naming
if (templateData.DataAtWork) {
sortDataAtWork(templateData.DataAtWork);
// Handle pretty name for data at work field
if (templateData.DataAtWork['Tools & Applications']) {
templateData.DataAtWork.Tools = templateData.DataAtWork['Tools & Applications'];
delete templateData.DataAtWork['Tools & Applications'];
}
}
// Sort Tags
if (templateData.Tags) {
templateData.Tags.sort((a, b) => a.localeCompare(b))
}
// Generate slug
const slug = generateSlug(file.path);
// Add link to other datasets managed by dataset owner, default to search
if (templateData.ManagedBy) {
let managedByName = templateData.ManagedBy;
// Check if ManagedBy is using Markdown
if (/\[(.*)\]\((.*)\)/.test(templateData.ManagedBy)) {
managedByName = /\[(.*)\]/.exec(templateData.ManagedBy)[1];
}
templateData.managedByLink = `${process.env.BASE_URL}?search=managedBy:${managedByName.toLowerCase()}`;
templateData.managedByName = managedByName;
// Check to see if we have a collab page for this dataset
fs.readdirSync('./src/collabs').forEach((c) => {
const file = fs.readFileSync(`./src/collabs/${c}`, 'utf8')
const json = jsyaml.parse(file);
if (json.Datasets.includes(slug)) {
templateData.managedByLink = `${process.env.BASE_URL}/collab/${path.basename(c, '.yaml')}`;
}
});
}
// Add BASE_URL for citation
templateData.baseURL = process.env.BASE_URL;
// Render
return gulp.src('./src/detail.hbs')
.pipe(hb({data: templateData, helpers: hbsHelpers, partials: ['./src/partials/*'], handlebars: handlebars}))
.pipe(rename(`${slug}/index.html`))
.pipe(gulp.dest('./dist/'));
}));
};