Skip to content

Commit e57e508

Browse files
committed
Separate AssetsDirectory as a model too
Same logic with pagesDirectory. And add basic checks that verify assets are recognized all well.
1 parent fc3e0f6 commit e57e508

File tree

12 files changed

+112
-8
lines changed

12 files changed

+112
-8
lines changed

src/compiler/contentModel/index.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const models = {
99
PagesDirectory: require('./models/pagesDirectory'),
1010
Subpage: require('./models/subpage'),
1111
Collection: require('./models/collection'),
12+
AssetsDirectory: require('./models/assetsDirectory'),
1213
Asset: require('./models/asset')
1314
}
1415

@@ -308,13 +309,11 @@ class ContentModel extends ContentModelEntryNode {
308309
}
309310

310311
if (this.matchers.assetsDirectory(node)) {
311-
return tree.assets.push(
312-
...node.children.map(childNode => {
313-
return new models.Asset(childNode, this.context, {
314-
assetsDirectory: this.settings.assetsDirectory
315-
})
316-
})
317-
)
312+
tree.assetsDirectory = new models.AssetsDirectory(node, this.context, {
313+
assetsDirectory: this.settings.assetsDirectory
314+
})
315+
tree.assets.push(...tree.assetsDirectory.subtree.assets)
316+
return
318317
}
319318

320319
if (this.matchers.asset(node)) {
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
const ContentModelEntryNode = require('../../../lib/ContentModelEntryNode')
2+
const matcha = require('../../../lib/matcha')
3+
4+
const models = {
5+
Asset: require('./asset')
6+
}
7+
8+
const defaultSettings = {
9+
assetsDirectory: 'assets'
10+
}
11+
class AssetsDirectory extends ContentModelEntryNode {
12+
static serialize(assetsDirectory) {
13+
return {
14+
assets: assetsDirectory.subtree.assets.map(models.Asset.serialize)
15+
}
16+
}
17+
18+
constructor(fsNode, context, settings) {
19+
super(fsNode, context, settings)
20+
this.matchers = this.getSubtreeMatchers()
21+
this.subtree = this.parseSubtree()
22+
this.afterEffects()
23+
}
24+
25+
getSubtreeMatchers() {
26+
return {
27+
asset: matcha.true()
28+
}
29+
}
30+
31+
parseSubtree() {
32+
const tree = {
33+
assets: []
34+
}
35+
36+
this.fsNode.children.forEach(childNode => {
37+
if (this.matchers.asset(childNode)) {
38+
return tree.assets.push(
39+
new models.Asset(childNode, this.context, {
40+
assetsDirectory: this.settings.assetsDirectory
41+
})
42+
)
43+
}
44+
})
45+
return tree
46+
}
47+
}
48+
49+
module.exports = AssetsDirectory
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
yes yes
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
everywhere
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
an mp4

src/e2e-tests/magazine/fixtures/fs/content/pages/a foldered asset in pages directory/some.psd

Whitespace-only changes.

src/e2e-tests/magazine/fixtures/fs/content/pages/an asset in pages directory.png

Loading
Lines changed: 1 addition & 0 deletions
Loading

src/e2e-tests/magazine/fixtures/fs/theme/keep/templates/pages/homepage/default.hbs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,20 @@
2121

2222
{{> @partial-block }}
2323

24-
<h2 data-title>Pages</h2>
24+
<h2>Pages</h2>
2525
<ul>
2626
{{#each subpages as |subpage|}}
2727
<li><a data-subpage-link href="{{subpage.permalink}}">{{subpage.title}}</a></li>
2828
{{/each}}
2929
</ul>
3030

31+
<h2>Assets</h2>
32+
<ul>
33+
{{#each assets as |asset|}}
34+
<li><a data-asset-link href="{{asset.permalink}}">{{asset.title}}</a></li>
35+
{{/each}}
36+
</ul>
37+
3138
<h2>Collections</h2>
3239

3340
{{#each collections as |collection|}}

0 commit comments

Comments
 (0)