Fork me on GitHub
nodegit by tbranyen & faceleg
var git = require('../'),
    success = require('./utilities').success;

/**
 * Convenience Oid constructor.
 *
 * @constructor
 * @param {git.raw.Oid} [rawOid = new git.rawOid] Raw Oid object.
 */
var Oid = function(rawOid) {
  if(rawOid instanceof git.raw.Oid) {
    this.rawOid = rawOid;
  } else {
    this.rawOid = new git.raw.Oid();
  }
};

/**
 * @return {git.raw.Oid} The wrapped raw Oid object.
 */
Oid.prototype.getRawOid = function() {
  return this.rawOid;
};

/**
 * Create Oid object from string.
 *
 * @param  {String} sha
 * @param  {Oid~fromStringCallback} callback
 */
Oid.prototype.fromString = function(sha, callback) {
  /**
   * @callback Oid~fromStringCallback Callback executed after raw Oid is created.
   * @param {GitError|null} error An Error or null if successful.
   * @param {Oid|null} oid The new Oid object.
   */
  var self = this;
  self.rawOid.fromString(sha, function(error, rawOid) {
    if (success(error, callback)) {
      self.rawOid = rawOid;
      callback(null, self);
    }
  });
};

/**
 * Convert the raw Oid to a SHA
 *
 * @param  {Oid~shaCallback} callback
 */
Oid.prototype.sha = function(callback) {
  /**
   * @callback Oid~shaCallback Callback executed after SHA is retrieved.
   * @param {GitError|null} error An Error or null if successful.
   * @param {String|null} sha The SHA.
   */
  callback(null, this.rawOid.sha());
};

exports.oid = Oid;