Separate Blob name and pathname

This commit is contained in:
Joshua Peek
2011-05-13 16:20:15 -05:00
parent 5edd3a02be
commit fcc2bc172f
2 changed files with 18 additions and 9 deletions

View File

@@ -8,19 +8,24 @@ module Linguist
class Blob class Blob
def initialize(blob) def initialize(blob)
@blob = blob @blob = blob
@name = Pathname.new(blob.name || "")
end end
attr_reader :name def name
@blob.name
end
def pathname
Pathname.new(name || "")
end
def mime_type def mime_type
Mime.lookup(name.extname) Mime.lookup(pathname.extname)
end end
def disposition def disposition
case mime_type case mime_type
when 'application/octet-stream', 'application/java-archive' when 'application/octet-stream', 'application/java-archive'
"attachment; filename=#{EscapeUtils.escape_url(name.basename)}" "attachment; filename=#{EscapeUtils.escape_url(pathname.basename)}"
else else
'inline' 'inline'
end end
@@ -61,12 +66,12 @@ module Linguist
def text? def text?
return false if submodule? return false if submodule?
name.media_type == 'text' || pathname.media_type == 'text' ||
name.mime_type == 'application/json' pathname.mime_type == 'application/json'
end end
def image? def image?
['.png', '.jpg', '.jpeg', '.gif'].include?(name.extname) ['.png', '.jpg', '.jpeg', '.gif'].include?(pathname.extname)
end end
MEGABYTE = 1024 * 1024 MEGABYTE = 1024 * 1024
@@ -81,7 +86,7 @@ module Linguist
def language def language
if text? if text?
shebang_language || name.language shebang_language || pathname.language
else else
Language['Text'] Language['Text']
end end

View File

@@ -30,7 +30,11 @@ class TestBlob < Test::Unit::TestCase
end end
def test_name def test_name
assert_equal Pathname.new("foo.rb"), blob("foo.rb").name assert_equal "foo.rb", blob("foo.rb").name
end
def test_pathname
assert_equal Pathname.new("foo.rb"), blob("foo.rb").pathname
end end
def test_mime_type def test_mime_type