Sha256: e3a1361e97516731c81accb5abbda7a186cc912ba115868c343d55ac921f3ba7
Contents?: true
Size: 1.61 KB
Versions: 3
Compression:
Stored size: 1.61 KB
Contents
require 'linguist/blob_helper' require 'linguist/language' require 'rugged' module Linguist class LazyBlob GIT_ATTR = ['linguist-documentation', 'linguist-language', 'linguist-vendored'] GIT_ATTR_OPTS = { :priority => [:index], :skip_system => true } GIT_ATTR_FLAGS = Rugged::Repository::Attributes.parse_opts(GIT_ATTR_OPTS) include BlobHelper MAX_SIZE = 128 * 1024 attr_reader :repository attr_reader :oid attr_reader :name attr_reader :mode def initialize(repo, oid, name, mode = nil) @repository = repo @oid = oid @name = name @mode = mode end def git_attributes @git_attributes ||= repository.fetch_attributes( name, GIT_ATTR, GIT_ATTR_FLAGS) end def vendored? if attr = git_attributes['linguist-vendored'] return boolean_attribute(attr) else return super end end def documentation? if attr = git_attributes['linguist-documentation'] boolean_attribute(attr) else super end end def language return @language if defined?(@language) @language = if lang = git_attributes['linguist-language'] Language.find_by_name(lang) else super end end def data load_blob! @data end def size load_blob! @size end protected # Returns true if the attribute is present and not the string "false". def boolean_attribute(attr) attr != "false" end def load_blob! @data, @size = Rugged::Blob.to_buffer(repository, oid, MAX_SIZE) if @data.nil? end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
github-linguist-4.4.2 | lib/linguist/lazy_blob.rb |
github-linguist-4.4.1 | lib/linguist/lazy_blob.rb |
github-linguist-4.4.0 | lib/linguist/lazy_blob.rb |