From d4d58e0cce9d78a503f230936959456164428000 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Fri, 13 May 2011 14:15:45 -0500 Subject: [PATCH] Add Blob#disposition --- lib/linguist/blob.rb | 11 +++++++++++ test/test_blob.rb | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/lib/linguist/blob.rb b/lib/linguist/blob.rb index df1f7429..d8393112 100644 --- a/lib/linguist/blob.rb +++ b/lib/linguist/blob.rb @@ -1,6 +1,8 @@ require 'linguist/mime' require 'linguist/pathname' +require 'escape_utils' + module Linguist class Blob def initialize(blob) @@ -18,6 +20,15 @@ module Linguist Mime.lookup(name.extname) end + def disposition + case mime_type + when 'application/octet-stream', 'application/java-archive' + "attachment; filename=#{EscapeUtils.escape_url(name.to_s)}" + else + 'inline' + end + end + def size @blob.size end diff --git a/test/test_blob.rb b/test/test_blob.rb index ca403da8..ddc8cb74 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -39,6 +39,13 @@ class TestBlob < Test::Unit::TestCase assert_equal "application/octet-stream", blob("dog.o").mime_type end + def test_disposition + assert_equal "attachment; filename=foo.bin", blob("foo.bin").disposition + assert_equal "attachment; filename=foo+bar.jar", blob("foo bar.jar").disposition + assert_equal "inline", blob("foo.txt").disposition + assert_equal "inline", blob("grit.rb").disposition + end + def test_data assert_equal "module Foo\nend\n", blob("foo.rb").data end