Giter VIP home page Giter VIP logo

Comments (3)

benpolinsky avatar benpolinsky commented on July 22, 2024

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.

woodyrew avatar woodyrew commented on July 22, 2024

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.

webketje avatar webketje commented on July 22, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.