This repository has been archived on 2022-06-22. You can view files and clone it, but cannot push or open issues or pull requests.
usaco-guide/gatsby-node.esm.js
2020-06-17 19:49:21 -07:00

51 lines
1.4 KiB
JavaScript

import ModuleOrdering, { divisions } from "./content/ordering";
exports.createPages = async ({ actions, graphql, reporter }) => {
const { createPage } = actions;
// Generate Module Pages //
const moduleTemplate = require.resolve(`./src/templates/moduleTemplate.js`);
Object.keys(ModuleOrdering).forEach(division => {
const processItem = item => {
if (typeof item === "object") {
// this is a nested module
item.items.forEach(x => processItem(x));
} else {
createPage({
path: `/${division}/${item}`,
component: moduleTemplate,
context: {
// additional data can be passed via context
id: item,
division: division,
},
});
}
};
ModuleOrdering[division].forEach(item => processItem(item));
});
// End Generate Module Pages //
// Generate Syllabus Pages //
const syllabusTemplate = require.resolve(`./src/templates/syllabusTemplate.js`);
divisions.forEach(division => {
createPage({
path: `/${division}`,
component: syllabusTemplate,
context: {
division: division
},
});
});
// End Generate Syllabus Pages //
};
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type MarkdownRemarkFrontmatter implements Node {
prerequisites: [[String]]
}
`;
createTypes(typeDefs)
};