blob.rb 672 Bytes
module Gitlab
  module Git
    class Blob
      include Linguist::BlobHelper

      attr_accessor :raw_blob

      delegate :name, to: :raw_blob

      def initialize(repository, sha, ref, path)
        @repository, @sha, @ref = repository, sha, ref

        @commit = @repository.commit(sha)
        @raw_blob = @repository.tree(@commit, path)
      end

      def data
        if raw_blob
          raw_blob.data
        else
          nil
        end
      end

      def exists?
        raw_blob
      end

      def empty?
        data.blank?
      end

      def mode
        raw_blob.mode
      end

      def size
        raw_blob.size
      end
    end
  end
end