src/utils/files.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { startsWith } from 'lodash/fp';
import { getFileExtension } from 'utils/string';

import { IFile } from 'types/Interfaces.d';

export const isMarkDown = (file: IFile) => {
  return (
    file.language === 'Markdown' ||
    getFileExtension(file.filename) === 'md' ||
    getFileExtension(file.filename) === 'markdown' ||
    getFileExtension(file.name) === 'md' ||
    getFileExtension(file.name) === 'markdown'
  );
};

export const isAsciiDoc = (file: IFile) => {
  return (
    file.language === 'AsciiDoc' ||
    getFileExtension(file.filename) === 'adoc' ||
    getFileExtension(file.filename) === 'asciidoc' ||
    getFileExtension(file.name) === 'adoc' ||
    getFileExtension(file.name) === 'asciidoc'
  );
};

export const isLaTex = (file: Partial<IFile>): boolean => file.language === 'TeX';

export const isCSV = (file: Partial<IFile>): boolean => file.language === 'CSV';

export const isTSV = (file: Partial<IFile>): boolean => file.type === 'text/tab-separated-values';

export const isImage = (file: Partial<IFile>): boolean => startsWith('image/', file.type);

export const isGeoJson = (file: IFile): boolean => {
  return (
    file.language === 'JSON' &&
    (getFileExtension(file.filename) === 'geojson' || getFileExtension(file.name) === 'geojson')
  );
};

export const isPDF = (file: IFile): boolean =>
  file.type === 'application/pdf' &&
  (getFileExtension(file.filename) === 'pdf' || getFileExtension(file.name) === 'pdf');

export const isHTML = (file: Partial<IFile>): boolean => file.language === 'HTML';

export const getFileLanguage = (file: IFile) => {
  if (isImage(file)) {
    return 'Image';
  }

  if (isPDF(file)) {
    return 'PDF';
  }

  if (isTSV(file)) {
    return 'TSV';
  }

  return file.language;
};