UNPKG

linguist-js

Version:

Analyse the programming languages used in a folder or from raw content, using the same rules that GitHub Linguist does.

33 lines (32 loc) 1.2 kB
import byAttributes from '../classifiers/byAttributes.js'; import byExtension from '../classifiers/byExtension.js'; import byFilename from '../classifiers/byFilename.js'; import byModeline from '../classifiers/byModeline.js'; import byShebang from '../classifiers/byShebang.js'; function dedupeClassifications(classifications) { const seen = new Set(); const ordered = []; for (const classification of classifications) { if (!seen.has(classification)) { seen.add(classification); ordered.push(classification); } } return ordered; } export function classifyFiles(files, langData, opts) { const classifications = {}; for (const file of files) { // Search each language // Note: order here is important; the first match will be the one chosen const candidates = [ ...byAttributes(file, langData), ...byModeline(file, langData, opts), ...byFilename(file, langData), ...byShebang(file, langData, opts), ...byExtension(file, langData), ]; classifications[file.path] = dedupeClassifications(candidates); } return classifications; }