Skip to content

Commit 48eb114

Browse files
committed
[CM2] Build with CM2 + rendering2
- Turn compiler into a class - Inject dependencies into compiler based on the temporary compilerVersion setting - Create a FileSystemParser class and put it under a /lib folder alongside a fileSystemHelpers module and delete the compiler/fileSystem. The FileSystemParser's settings and debugLog dependencies are also injected (tryin something...) - Update fileSystem's tests to reflect the changes - Fix forgotten category assumption in attachment permalink - Fix various small mistakes - Bring back support for foldered subpages - Partial preferences when rendering pages should be contemplated more - Should try a single rendering that works for all kinds of contentModels
1 parent df0dd10 commit 48eb114

File tree

15 files changed

+204
-153
lines changed

15 files changed

+204
-153
lines changed

src/compiler/contentModel2/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const root = (fsTree) => {
5050

5151
if (isPagesDirectory(node)) {
5252
node.children.forEach(childNode => {
53-
if (isTemplateFile(childNode) || childNode.children) {
53+
if (isTemplateFile(childNode) || childNode.children?.find(isTemplateFile)) {
5454
contentModel.subpages.push(
5555
models.subpage(childNode)
5656
)

src/compiler/contentModel2/models/attachment.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function attachment(node, context) {
88
settings.permalinkPrefix +
99
[
1010
context.collection?.slug,
11-
context.category?.isDefaultCategory ? '' : context.category.slug,
11+
context.category?.isDefaultCategory ? '' : context.category?.slug,
1212
context.post?.slug,
1313
context.page?.slug,
1414
node.name

src/compiler/fileSystem.js

Lines changed: 0 additions & 90 deletions
This file was deleted.

src/compiler/index.js

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,21 @@
11
const Debug = require('../debug')
2-
const Settings = require('../settings').getSettings()
3-
const FileSystem = require('./fileSystem')
4-
const ContentModel = require('./contentModel')
5-
const Rendering = require('./rendering')
62

7-
const compile2 = async () => {
8-
const ContentModel2 = require('./contentModel2')
9-
const Rendering2 = require('./rendering2')
10-
11-
const fileSystemTree = await FileSystem.exploreTree()
12-
const contentModel = ContentModel2.create(fileSystemTree)
13-
14-
return {}
15-
16-
await Rendering2.render(contentModel)
17-
Debug.timeEnd('compiler')
18-
return {
19-
fileSystemTree,
20-
contentModel
3+
module.exports = class Compiler {
4+
constructor({ fileSystemParser, contentModel, renderer }) {
5+
this.fileSystemParser = fileSystemParser
6+
this.contentModel = contentModel
7+
this.renderer = renderer
218
}
22-
}
239

24-
const compile = async () => {
25-
Debug.timeStart('compiler')
26-
if (Settings.compilerVersion === 2) {
27-
return compile2()
10+
async compile() {
11+
Debug.timeStart('compiler')
12+
const fileSystemTree = await this.fileSystemParser.parse()
13+
const contentModel = this.contentModel.create(fileSystemTree)
14+
await this.renderer.render(contentModel)
15+
Debug.timeEnd('compiler')
16+
return {
17+
fileSystemTree,
18+
contentModel
19+
}
2820
}
29-
const fileSystemTree = await FileSystem.exploreTree()
30-
const contentModel = await ContentModel.create(fileSystemTree)
31-
await Rendering.render(contentModel)
32-
Debug.timeEnd('compiler')
33-
return {
34-
fileSystemTree,
35-
contentModel
36-
}
37-
}
38-
39-
module.exports = {
40-
compile
4121
}

src/compiler/rendering/index.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,21 @@ const Views = {
1212
}
1313

1414
module.exports = {
15-
async render(contentModel) {
15+
async render(contentModelPromise) {
1616
await Renderer.init()
17-
return Promise.all([
18-
Views.renderHomepage(Renderer, contentModel),
19-
Views.renderTags(Renderer, contentModel),
20-
Views.renderSubpages(Renderer, contentModel),
21-
Views.renderPostsJSON(contentModel),
22-
Views.copyLocalAssets(contentModel),
23-
Views.renderCategoryPages(Renderer, contentModel)
24-
.then(() => Promise.all([
25-
Views.renderPosts(Renderer, contentModel),
26-
Views.renderFeeds(Renderer, contentModel)
27-
]))
28-
])
17+
return contentModelPromise.then(contentModel => {
18+
return Promise.all([
19+
Views.renderHomepage(Renderer, contentModel),
20+
Views.renderTags(Renderer, contentModel),
21+
Views.renderSubpages(Renderer, contentModel),
22+
Views.renderPostsJSON(contentModel),
23+
Views.copyLocalAssets(contentModel),
24+
Views.renderCategoryPages(Renderer, contentModel)
25+
.then(() => Promise.all([
26+
Views.renderPosts(Renderer, contentModel),
27+
Views.renderFeeds(Renderer, contentModel)
28+
]))
29+
])
30+
})
2931
}
3032
}

src/compiler/rendering2/views/collection/category.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const renderCategories = (Renderer, contentModel, collection) => {
2020
return Renderer.render({
2121
templates: [
2222
`pages/${category.template}`,
23-
`pages/${category.contentType}`,
23+
`pages/category/${category.contentType}`,
2424
`pages/category`
2525
],
2626
outputPath,

src/compiler/rendering2/views/collection/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ const renderCollections = async (Renderer, contentModel) => {
1717
page: collection,
1818
posts: collection.posts,
1919
postsPerPage: collection.postsPerPage || settings.postsPerPage,
20-
outputDir: join(settings.out, collection.lug),
20+
outputDir: join(settings.out, collection.slug),
2121
render: async ({ outputPath, pageOfPosts, paginationData }) => {
2222
return Renderer.render({
2323
templates: [
2424
`pages/${collection.template}`,
25-
`pages/${collection.contentType}`,
25+
`pages/collection/${collection.contentType}`,
2626
`pages/collection`
2727
],
2828
outputPath,

src/compiler/rendering2/views/collection/post.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const renderPosts = (Renderer, contentModel, collection) => {
66
const renderPage = Renderer.render({
77
templates: [
88
`pages/${post.template}`,
9-
`pages/${post.contentType}`,
9+
`pages/post/${post.contentType}`,
1010
`pages/post`
1111
],
1212
outputPath: post.outputPath,

src/compiler/rendering2/views/collection/tags.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ const renderTagsPage = (Renderer, contentModel, collection) => {
2323
}
2424

2525
const renderTagIndices = (Renderer, contentModel, collection) => {
26-
const { tags } = collection.tags
2726
const settings = Settings.getSettings()
28-
const compilation = tags.map(tag => {
27+
const compilation = collection.tags.map(tag => {
2928
return paginate({
3029
page: tag,
3130
posts: tag.posts,

src/compiler/rendering2/views/homepage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const renderHomepage = async (Renderer, contentModel) => {
77
const renderPage = Renderer.render({
88
templates: [
99
`pages/${homepage.template}`,
10-
`pages/${homepage.contentType}`,
10+
`pages/homepage/${homepage.contentType}`,
1111
`pages/homepage`
1212
],
1313
outputPath: homepage.outputPath,

0 commit comments

Comments
 (0)