linguist-js
Version:
Analyse the programming languages used in a folder or from raw content, using the same rules that GitHub Linguist does.
20 lines (19 loc) • 720 B
JavaScript
import { getFileExtension } from '../program/fs/normalisedPath.js';
export default function fromRawContent(contents, vendorPaths = []) {
return Object.entries(contents).map(([path, content]) => {
const extension = getFileExtension(path);
const metadata = {};
if (vendorPaths.some((pathPtn) => RegExp(pathPtn, 'i').test(path))) {
metadata.vendored = true;
}
return {
path,
content,
firstLine: content.split(/\r?\n/)[0] ?? '',
size: Buffer.byteLength(content, 'utf-8'),
extension,
isBinary: false,
metadata: Object.keys(metadata).length ? metadata : undefined,
};
});
}