Exemple #1
0
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
})
Exemple #2
0
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;
});
Exemple #3
0
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;
});
Exemple #4
0
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;
});