"use strict";

var util = require("util");

var NodeGit = require("../");

var Blob = NodeGit.Blob;
var LookupWrapper = NodeGit.Utils.lookupWrapper;
var TreeEntry = NodeGit.TreeEntry;
var _filteredContent = Blob.filteredContent;
/**
* Retrieves the blob pointed to by the oid
* @async
* @param {Repository} repo The repo that the blob lives in
* @param {String|Oid|Blob} id The blob to lookup
* @return {Blob}
*/

Blob.lookup = LookupWrapper(Blob);
/**
 * Retrieve the content of the Blob.
 *
 * @return {Buffer} Contents as a buffer.
 */

Blob.prototype.content = function () {
  return this.rawcontent().toBuffer(this.rawsize());
};
/**
 * Retrieve the Blob's type.
 *
 * @return {Number} The filemode of the blob.
 */


Blob.prototype.filemode = function () {
  var FileMode = TreeEntry.FILEMODE;
  return this.isBinary() ? FileMode.EXECUTABLE : FileMode.BLOB;
};
/**
 * Retrieve the Blob's content as String.
 *
 * @return {String} Contents as a string.
 */


Blob.prototype.toString = function () {
  return this.content().toString();
};

Blob.filteredContent = util.deprecate(_filteredContent, "NodeGit.Blob.filteredContent is deprecated" + " use NodeGit.Blob.prototype.filter instead.");