Commit eb83f87f authored by Mark Chao's avatar Mark Chao

Add access to Blob's language from gitattributes

Ported from Highlight class since it as a concept is more related to
blob, and this allows more flexibility.
parent abb24ab3
......@@ -186,6 +186,13 @@ class Blob < SimpleDelegator
Gitlab::FileDetector.type_of(path) || Gitlab::FileDetector.type_of(name)
end
def language_from_gitattributes
return nil unless project
repository = project.repository
repository.gitattribute(path, 'gitlab-language')
end
def video?
UploaderHelper::VIDEO_EXT.include?(extension)
end
......
......@@ -25,6 +25,12 @@ module Gitlab
def no_highlighting?
false
end
# Since search results often contain many items,
# not triggering lookup can avoid n+1 queries.
def language_from_gitattributes
nil
end
end
attr_reader :current_user, :query, :per_page
......
......@@ -224,6 +224,22 @@ describe Blob do
end
end
describe '#language_from_gitattributes' do
subject(:blob) { fake_blob(path: 'file.md') }
it 'returns return value from gitattribute' do
expect(blob.project.repository).to receive(:gitattribute).with(blob.path, 'gitlab-language').and_return('erb?parent=json')
expect(blob.language_from_gitattributes).to eq('erb?parent=json')
end
it 'returns nil if project is absent' do
allow(blob).to receive(:project).and_return(nil)
expect(blob.language_from_gitattributes).to eq(nil)
end
end
describe '#simple_viewer' do
context 'when the blob is empty' do
it 'returns an empty viewer' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment