-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathidentifyLanguage.js
35 lines (33 loc) · 1.11 KB
/
identifyLanguage.js
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
var filterExtensions = filename => {
var possibleExtensions = [];
var prevIndex = -1;
while(true) {
var index = filename.indexOf('.', prevIndex + 1);
if(index != -1) {
possibleExtensions.push(filename.slice(index));
prevIndex = index;
} else break;
}
return possibleExtensions;
};
var filterLanguages = (linguistObject, filename) => {
var possibleExtensions = filterExtensions(filename);
var possibleLanguages = [];
if(possibleExtensions.length == 0)
possibleLanguages.push("Shell Script");
for(var i = 0; i < possibleExtensions.length; i++)
if(linguistObject[possibleExtensions[i]])
possibleLanguages = linguistObject[possibleExtensions[i]];
return possibleLanguages;
};
var detectLanguage = (possibleLanguages, content) => {
if(possibleLanguages[0] == "Shell Script") {
if(content.startsWith("#!/bin/bash") || content.startsWith("#!/bin/sh") || content.startsWith("#!/bin/zsh"))
return "Shell"
return "";
} else if(possibleLanguages[1] == "PHP")
return possibleLanguages[1];
else if(possibleLanguages.length != 1)
return "";
return possibleLanguages[0]; // Change required. Possibly ML.
};