Sha256: 63864acd87b4be14b3baa1e59fce45acfd2a9b7b354248a3eee92b340e20a2b1

Contents?: true

Size: 1.13 KB

Versions: 23

Compression:

Stored size: 1.13 KB

Contents

require 'linguist/blob_helper'
require 'linguist/blob'

module Linguist
  # A FileBlob is a wrapper around a File object to make it quack
  # like a Grit::Blob. It provides the basic interface: `name`,
  # `data`, `path` and `size`.
  class FileBlob < Blob
    include BlobHelper

    # Public: Initialize a new FileBlob from a path
    #
    # path      - A path String that exists on the file system.
    # base_path - Optional base to relativize the path
    #
    # Returns a FileBlob.
    def initialize(path, base_path = nil)
      @fullpath = path
      @path = base_path ? path.sub("#{base_path}/", '') : path
    end

    # Public: Read file permissions
    #
    # Returns a String like '100644'
    def mode
      @mode ||= File.stat(@fullpath).mode.to_s(8)
    end

    def symlink?
      return @symlink if defined? @symlink
      @symlink = (File.symlink?(@fullpath) rescue false)
    end

    # Public: Read file contents.
    #
    # Returns a String.
    def data
      @data ||= File.read(@fullpath)
    end

    # Public: Get byte size
    #
    # Returns an Integer.
    def size
      @size ||= File.size(@fullpath)
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
github-linguist-7.8.0 lib/linguist/file_blob.rb
github-linguist-7.7.0 lib/linguist/file_blob.rb
github-linguist-7.6.1 lib/linguist/file_blob.rb
github-linguist-7.6.0 lib/linguist/file_blob.rb
github-linguist-7.5.1 lib/linguist/file_blob.rb
github-linguist-7.5.0 lib/linguist/file_blob.rb
github-linguist-7.4.0 lib/linguist/file_blob.rb
github-linguist-7.3.1 lib/linguist/file_blob.rb
github-linguist-7.3.0 lib/linguist/file_blob.rb
github-linguist-7.2.0 lib/linguist/file_blob.rb
github-linguist-7.1.3 lib/linguist/file_blob.rb
github-linguist-7.1.2 lib/linguist/file_blob.rb
github-linguist-7.1.1 lib/linguist/file_blob.rb
github-linguist-7.1.0 lib/linguist/file_blob.rb
github-linguist-7.0.0 lib/linguist/file_blob.rb
github-linguist-6.4.1 lib/linguist/file_blob.rb
github-linguist-6.4.0 lib/linguist/file_blob.rb
github-linguist-6.3.1 lib/linguist/file_blob.rb
github-linguist-6.3.0 lib/linguist/file_blob.rb
github-linguist-6.2.0 lib/linguist/file_blob.rb