lib to iterate over metalsmith data
npm install metalsmith-loopermetalsmith-looper
======
A small plugin to iterate over metalsmith data.
Quick example
------
``js
const Metalsmith = require('metalsmith');
const looper = require('metalsmith-looper');
Metalsmith(__dirname)
.metadata({})
.source('./content')
.destination('./docs')
.use(looper(function({ loopContent }) {
// Loop through HTML files
loopContent(function(file, { move }) {
// Move file and associated assets to another subfolder
move('/root/' + file.$name);
});
}));
``
Looper API
------
Loop through every HTML files.
Loop through every HTML files from a specific subfolder of the sources.
Create a new index to reference content file.
Create a new item in the files loop.
Loop API
------
#### move( newName )
Move the current file, and associated assets, to another destination.
#### copy( newName, data = {} )
Copy the current file to another destination and override some data.
#### remove( )
Remove the current from the sources to treat.
#### setType( newType )
Define the type of document, by default, the type of document is the source subfolder.
#### getAssetName( name ): string
Return asset full name, prefixed by the current file name.
#### getAssetExists( name ): bool
Return if an asset exists or not.
#### createAsset( name: string, data, contents: string|Buffer )
Move an associated asset to another destination.
#### moveAsset( oldName, newName )
Move an associated asset to another destination.
#### copyAsset( name, copyName )
Copy an associated asset to another destination.
#### removeAsset( name )
Remove an associated asset.
#### registerOnePromise( promise )
Register one build promise to wait before creating the file system.
#### registerSeveralPromises( promiseList )
Register several promises to wait before creating the file system.
#### required( propName, defaultValue )
Throw an error if the current file doesn't have a specific property.
#### shouldBeInteger( propName )
Throw an error if the current file has a specific property, and it is not an integer.
#### shouldBeURL( propName )
Throw an error if the current file has a specific property, and it is not an URL.
#### oneOf( propName, values )
Throw an error if the current file property do not match any the given values.
#### unique( propName )
Throw an error if the current file has the same property value than another file.
#### addReference( propName, referencedType )
Link another file according to a property value.
#### addIndex( indexName, key )
Add the current file to a spacific index under a specific key.
#### getIndex( indexName )
Retrieve a specific index of files.
#### debug( )
Dump current file.
#### debugAll( )
Dump all files in the loop.
Template API
------
The relative path of the current file destination path.
The type of the current file.
An array that contains all indexes.
An object containing the current file.