Comments (3)
I'll be honest, I'm pretty stumped on this one. Fiddling with the tests:
it('should add the collection property to a file', function(done){
var metalsmith = Metalsmith('test/fixtures/pattern');
metalsmith
.use(collections({
articles: '*.md'
}))
.build(function(err, files){
if (err) return done(err);
console.log(typeof files['three.md']['collection'])
assert.equal(files['three.md'].collection, ['articles']);
done();
});
});
typeof files['three.md']['collection'] === object
So it is definitely an array.
However the test only passes when asserting that collection is a string...
EDIT:
The tests are passing because assert.equal, which tests "shallow, coercive equality", is being used. It would be very nice to have some clarity here: if the authors of the plugin intended for the collection property on each file to be an array of collection names, an array of collections with files, one string collection name, or, an array of one element - a string containing the collection name...
from collections.
It's from when it was originally written. I think the thought process was that the plugin handles collections and each one is a collection.
from collections.
@benpolinsky @woodyrew There is actually a very, very compelling reason to do this that I accidentally stumbled upon.
When using only a plugin like layouts, the global metadata keys are overwritten by the file-specific metadata keys. To allow access to both (one being all the collections, and the other a string or an array of strings) the local "collection" key cannot match the global metadata "collections" key.
Furthermore looking into this made me realize collection is not guaranteed to be an array, in fact if a single collection is added, it will be a string
from collections.
Related Issues (20)
- Roadmap 2.0 HOT 1
- Proposal: more declarative/condensed sort options
- Use metalsmith.match instead of multimatch
- Next/previous links not set HOT 2
- Update changelog HOT 1
- Absence of metadata in output in non-empty collections HOT 2
- Multiple builds break the plugin HOT 2
- Open to other maintainers? HOT 3
- data.path would be more useful with an html extension than a markdown one HOT 1
- storyblok and metalsmithJs (how to create a collection of blog-posts)
- Path not being set properly when using metalsmith-in-place HOT 5
- Metadata for documents contains markdown HOT 1
- Organizing posts into mutiple collections? HOT 1
- How to generate URLs using path variable? HOT 2
- please update npm repo HOT 4
- How to ungroup the grouped .hbs templates in .yaml file in metalsmith pattern collection HOT 4
- Transfer ownership to metalsmith org
- Feature: add 'first' and 'last' references
- Fix ambiguous mapping of metadata vs pattern collections
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from collections.