Metalsmith.prototype.readFile = unyield(function*(file){ var src = this.source() var ret = {} if (!path.isAbsolute(file)) file = path.resolve(src, file) try { var frontmatter = this.frontmatter() var stats = yield fs.stat(file) var buffer = yield fs.readFile(file) var parsed if (frontmatter && utf8(buffer)) { try { parsed = matter(buffer.toString()) } catch (e) { var err = new Error('Invalid frontmatter in the file at: ' + file) err.code = 'invalid_frontmatter' throw err } // Use `Buffer.from` if possible. // // See: // - https://nodejs.org/api/buffer.html#buffer_new_buffer_string_encoding // - https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_string_encoding // ret = parsed.data ret.contents = (Buffer.hasOwnProperty('from')) ? Buffer.from(parsed.content) : new Buffer(parsed.content) } else { ret.contents = buffer } ret.mode = Mode(stats).toOctal() ret.stats = stats } catch (e) { if (e.code == 'invalid_frontmatter') throw e e.message = 'Failed to read the file at: ' + file + '\n\n' + e.message e.code = 'failed_read' throw e } return ret })
Metalsmith.prototype.readFile = unyield(function*(path){ var frontmatter = this.frontmatter(); var stats = yield fs.stat(path); var buffer = yield fs.readFile(path); var file = {}; if (frontmatter && utf8(buffer)) { var parsed = front(buffer.toString()); file = parsed.attributes; file.contents = new Buffer(parsed.body); } else { file.contents = buffer; } file.mode = Mode(stats).toOctal(); file.stats = stats; return file; });
Metalsmith.prototype.readFile = unyield(function*(file){ var src = this.source(); var ret = {}; if (!absolute(file)) file = path.resolve(src, file); try { var frontmatter = this.frontmatter(); var stats = yield fs.stat(file); var buffer = yield fs.readFile(file); var parsed; if (frontmatter && utf8(buffer)) { try { parsed = matter(buffer.toString()); } catch (e) { var err = new Error('Invalid frontmatter in the file at: ' + file); err.code = 'invalid_frontmatter'; throw err; } ret = parsed.data; ret.contents = new Buffer(parsed.content); } else { ret.contents = buffer; } ret.mode = Mode(stats).toOctal(); ret.stats = stats; } catch (e) { if (e.code == 'invalid_frontmatter') throw e; e.message = 'Failed to read the file at: ' + file + '\n\n' + e.message; e.code = 'failed_read'; throw e; } return ret; });
Metalsmith.prototype.readFile = unyield(function*(path){ try { var frontmatter = this.frontmatter(); var stats = yield fs.stat(path); var buffer = yield fs.readFile(path); var file = {}; if (frontmatter && utf8(buffer)) { var parsed = front(buffer.toString()); file = parsed.attributes; file.contents = new Buffer(parsed.body); } else { file.contents = buffer; } file.mode = Mode(stats).toOctal(); file.stats = stats; } catch (e) { e.message = 'Failed to read the file at: ' + path + '\n\n' + e.message; throw e; } return file; });