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

52 lines
1.4 KiB
JavaScript
Raw Normal View History

2020-06-15 23:19:07 +00:00
import { getModule } from "./src/utils";
2020-06-17 01:39:47 +00:00
import ModuleOrdering, { divisions } from "./content/ordering";
2020-06-15 23:19:07 +00:00
exports.createPages = async ({ actions, graphql, reporter }) => {
const { createPage } = actions;
2020-06-17 01:39:47 +00:00
// 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 {
2020-06-15 23:19:07 +00:00
createPage({
2020-06-17 01:39:47 +00:00
path: `/${division}/${item}`,
2020-06-15 23:19:07 +00:00
component: moduleTemplate,
context: {
// additional data can be passed via context
2020-06-17 01:39:47 +00:00
id: item,
division: division,
2020-06-15 23:19:07 +00:00
},
});
2020-06-17 01:39:47 +00:00
}
};
ModuleOrdering[division].forEach(item => processItem(item));
});
// End Generate Module Pages //
// Generate Syllabus Pages //
const syllabusTemplate = require.resolve(`./src/templates/syllabusTemplate.js`);
divisions.forEach(division => {
2020-06-15 23:19:07 +00:00
createPage({
2020-06-17 01:39:47 +00:00
path: `/${division}`,
component: syllabusTemplate,
2020-06-15 23:19:07 +00:00
context: {
2020-06-17 01:39:47 +00:00
division: division
2020-06-15 23:19:07 +00:00
},
});
});
2020-06-17 01:39:47 +00:00
// End Generate Syllabus Pages //
2020-06-15 23:19:07 +00:00
};
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type MarkdownRemarkFrontmatter implements Node {
prerequisites: [[String]]
}
`;
createTypes(typeDefs)
};