UNPKG

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
// 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);