mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Use mime binary
This commit is contained in:
		@@ -62,18 +62,25 @@ module Linguist
 | 
				
			|||||||
    #
 | 
					    #
 | 
				
			||||||
    # Returns a content disposition String.
 | 
					    # Returns a content disposition String.
 | 
				
			||||||
    def disposition
 | 
					    def disposition
 | 
				
			||||||
      if viewable?
 | 
					      if image? || viewable?
 | 
				
			||||||
        'inline'
 | 
					        'inline'
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        "attachment; filename=#{EscapeUtils.escape_url(pathname.basename)}"
 | 
					        "attachment; filename=#{EscapeUtils.escape_url(pathname.basename)}"
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Public: Is the blob binary?
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # Return true or false
 | 
				
			||||||
 | 
					    def binary?
 | 
				
			||||||
 | 
					      pathname.binary?
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Public: Is the blob text?
 | 
					    # Public: Is the blob text?
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
    # Return true or false
 | 
					    # Return true or false
 | 
				
			||||||
    def text?
 | 
					    def text?
 | 
				
			||||||
      content_type[/(text|json)/]
 | 
					      !binary?
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Public: Is the blob a supported image format?
 | 
					    # Public: Is the blob a supported image format?
 | 
				
			||||||
@@ -83,13 +90,6 @@ module Linguist
 | 
				
			|||||||
      ['.png', '.jpg', '.jpeg', '.gif'].include?(extname)
 | 
					      ['.png', '.jpg', '.jpeg', '.gif'].include?(extname)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Public: Is the blob binary?
 | 
					 | 
				
			||||||
    #
 | 
					 | 
				
			||||||
    # Return true or false
 | 
					 | 
				
			||||||
    def binary?
 | 
					 | 
				
			||||||
      content_type.include?('octet') || !(text? || image?)
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    MEGABYTE = 1024 * 1024
 | 
					    MEGABYTE = 1024 * 1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Public: Is the blob too big to load?
 | 
					    # Public: Is the blob too big to load?
 | 
				
			||||||
@@ -105,7 +105,7 @@ module Linguist
 | 
				
			|||||||
    #
 | 
					    #
 | 
				
			||||||
    # Return true or false
 | 
					    # Return true or false
 | 
				
			||||||
    def viewable?
 | 
					    def viewable?
 | 
				
			||||||
      !image? && !binary? && !large?
 | 
					      text? && !large?
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    vendored_paths = YAML.load_file(File.expand_path("../vendor.yml", __FILE__))
 | 
					    vendored_paths = YAML.load_file(File.expand_path("../vendor.yml", __FILE__))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -110,6 +110,13 @@ module Linguist
 | 
				
			|||||||
      @content_type ||= Mime.content_type_for(extname)
 | 
					      @content_type ||= Mime.content_type_for(extname)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Public: Is the path binary?
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # Return true or false
 | 
				
			||||||
 | 
					    def binary?
 | 
				
			||||||
 | 
					      @binary ||= Mime.binary?(extname)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def to_s
 | 
					    def to_s
 | 
				
			||||||
      @path.dup
 | 
					      @path.dup
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,9 +43,10 @@ class TestBlob < Test::Unit::TestCase
 | 
				
			|||||||
    assert_equal "attachment; filename=foo.bin", blob("foo.bin").disposition
 | 
					    assert_equal "attachment; filename=foo.bin", blob("foo.bin").disposition
 | 
				
			||||||
    assert_equal "attachment; filename=linguist.gem", blob("pkg/linguist.gem").disposition
 | 
					    assert_equal "attachment; filename=linguist.gem", blob("pkg/linguist.gem").disposition
 | 
				
			||||||
    assert_equal "attachment; filename=foo+bar.jar", blob("foo bar.jar").disposition
 | 
					    assert_equal "attachment; filename=foo+bar.jar", blob("foo bar.jar").disposition
 | 
				
			||||||
 | 
					    assert_equal "inline", blob("README").disposition
 | 
				
			||||||
    assert_equal "inline", blob("foo.txt").disposition
 | 
					    assert_equal "inline", blob("foo.txt").disposition
 | 
				
			||||||
    assert_equal "inline", blob("grit.rb").disposition
 | 
					    assert_equal "inline", blob("grit.rb").disposition
 | 
				
			||||||
    assert_equal "inline", blob("README").disposition
 | 
					    assert_equal "inline", blob("octocat.png").disposition
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def test_data
 | 
					  def test_data
 | 
				
			||||||
@@ -72,10 +73,10 @@ class TestBlob < Test::Unit::TestCase
 | 
				
			|||||||
    assert blob("linguist.gem").binary?
 | 
					    assert blob("linguist.gem").binary?
 | 
				
			||||||
    assert blob("git.deb").binary?
 | 
					    assert blob("git.deb").binary?
 | 
				
			||||||
    assert blob("git.exe").binary?
 | 
					    assert blob("git.exe").binary?
 | 
				
			||||||
 | 
					    assert blob("octocat.png").binary?
 | 
				
			||||||
    assert !blob("README").binary?
 | 
					    assert !blob("README").binary?
 | 
				
			||||||
    assert !blob("file.txt").binary?
 | 
					    assert !blob("file.txt").binary?
 | 
				
			||||||
    assert !blob("foo.rb").binary?
 | 
					    assert !blob("foo.rb").binary?
 | 
				
			||||||
    assert !blob("octocat.png").binary?
 | 
					 | 
				
			||||||
    assert !blob("script.pl").binary?
 | 
					    assert !blob("script.pl").binary?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user