jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C languages
94 lines (82 loc) • 3.12 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var TokenizerCodeMirror, TokenizerFactory,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
TokenizerCodeMirror = require('./TokenizerCodeMirror');
TokenizerFactory = (function() {
function TokenizerFactory() {}
TokenizerFactory.prototype.tokenizers = {};
TokenizerFactory.prototype.LANGUAGES = {
javascript: ['js', 'es', 'es6'],
typescript: ['ts'],
jsx: ['jsx'],
haxe: ['hx', 'hxml'],
coffeescript: ['coffee'],
ruby: ['rb'],
php: ['php', 'phtml'],
python: ['py'],
css: ['less', 'css', 'scss'],
java: ['java'],
csharp: ['cs'],
go: ['go'],
clike: ['cpp', 'c'],
htmlmixed: ['html', 'htm'],
yaml: ['yaml', 'yml']
};
TokenizerFactory.prototype.getLanguageByExtension = function(extension) {
var language;
for (language in TokenizerFactory.prototype.LANGUAGES) {
if (indexOf.call(TokenizerFactory.prototype.LANGUAGES[language], extension) >= 0) {
return language;
}
}
return false;
};
TokenizerFactory.prototype.getExtensionsByLanguages = function(languages) {
var language, result;
if (typeof languages === 'string') {
languages = [languages];
}
result = [];
for (language in TokenizerFactory.prototype.LANGUAGES) {
if (indexOf.call(languages, language) >= 0) {
result.push.apply(result, TokenizerFactory.prototype.LANGUAGES[language]);
}
}
return result;
};
TokenizerFactory.prototype.makeTokenizer = function(filename, supportedLanguages) {
var extension, language, matches, ref;
extension = '';
matches = filename.match(/\.(\w*)$/);
if (matches) {
extension = (ref = matches[1]) != null ? ref.toLowerCase() : void 0;
}
language = TokenizerFactory.prototype.getLanguageByExtension(extension);
if (indexOf.call(supportedLanguages, language) < 0) {
return false;
}
if (!(language in TokenizerFactory.prototype.tokenizers)) {
switch (language) {
case "csharp":
case "java":
case "csrc":
TokenizerFactory.prototype.tokenizers[language] = new TokenizerCodeMirror();
TokenizerFactory.prototype.tokenizers[language].setType("text/x-" + language);
break;
case "typescript":
case 'jsx':
TokenizerFactory.prototype.tokenizers[language] = new TokenizerCodeMirror();
TokenizerFactory.prototype.tokenizers[language].setType("javascript");
break;
default:
TokenizerFactory.prototype.tokenizers[language] = new TokenizerCodeMirror();
TokenizerFactory.prototype.tokenizers[language].setType(language);
}
}
return TokenizerFactory.prototype.tokenizers[language];
};
return TokenizerFactory;
})();
module.exports = TokenizerFactory;
}).call(this);