UNPKG

node-sketch

Version:

Javascript library to manipulate sketch files

61 lines (55 loc) 1.67 kB
const Node = require('./Node'); const path = require('path'); const fs = require('fs'); /** * Represents a file, for example an image * * @extends {Node} * * @property {string|undefined} file - The path to the saved file in the sketch */ class FileReference extends Node { get file() { if (this._ref_class === 'MSImageData') { return this._ref; } } /** * Exports the file to other location * * @param {string} dir - The directory path of the exported file. * @param {string} [name] - New name for the exported file. * * @example * //Export all images to a directory * sketch.pages.forEach(page => { * page.getAll('MSJSONFileReference').forEach(ref => { * ref.export('/path/to/export'); * }) * }) */ export(dir, name) { return new Promise((fulfill, reject) => { const sketch = this.getParent('sketch'); const file = sketch.repo .filter(f => { return f.startsWith(this.file); }) .pop(); if (file) { const dest = path.join(dir, name ? `${name}${path.extname(file.name)}` : file.name); file.nodeStream() .pipe(fs.createWriteStream(dest)) .on('finish', () => { fulfill(dest); }) .on('error', err => { reject(err); }); } else { reject('No file found'); } }); } } module.exports = FileReference;