-
Notifications
You must be signed in to change notification settings - Fork 145
/
albino_filetype.rb
53 lines (53 loc) · 1.62 KB
/
albino_filetype.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class AlbinoFiletype
EXTENSION_TO_FILETYPE = {
".as" => :actionscript,
".aspx" => :"aspx-cs",
".c" => :c,
".cc" => :cpp,
".clj" => :clojure,
".cljs" => :clojure,
".coffee" => :coffeescript,
".cpp" => :cpp,
".cs" => :csharp,
".css" => :css,
".erb" => :rhtml,
".feature" => :cucumber,
".go" => :go,
".god" => :ruby,
".h" => :cpp,
".hpp" => :cpp,
".html" => :html,
".inl" => :cpp,
".java" => :java,
".js" => :javascript,
".json" => :json,
".jsp" => :jsp,
".less" => :scss,
".po" => :po,
".py" => :python,
".rake" => :ruby,
".rb" => :ruby,
".rst" => :rst,
".sass" => :sass,
".sbt" => :scala,
".scala" => :scala,
".scss" => :scss,
".sh" => :bash,
".vb" => :vbnet,
".xml" => :xml,
"Cakefile" => :coffeescript,
"Capfile" => :ruby,
"Gemfile" => :ruby,
"Makefile" => :make,
"Rakefile" => :ruby,
"Vagrantfile" => :ruby
}
def self.detect_filetype(filename)
# if path, separate file from path
filename = filename.include?("/") ? filename[(filename.index(%r{/[^/]+$}) + 1)..-1] : filename
extension_index = filename.index(/\.[^\.]+$/)
extension = extension_index ? filename[extension_index..-1] : nil
filetype = extension ? EXTENSION_TO_FILETYPE[extension] : EXTENSION_TO_FILETYPE[filename]
filetype || :text
end
end