yarle-evernote-to-md
Version:
Yet Another Rope Ladder from Evernote
101 lines (83 loc) • 3.6 kB
text/typescript
import * as fs from 'fs';
import { cloneDeep } from 'lodash';
import { YarleOptions } from '../../YarleOptions';
import { NoteData } from '../../models/NoteData';
import { TOCNoteName } from './../../constants';
import * as T from './placeholders/metadata-placeholders';
import * as M from './match-all';
import {
applyContentTemplate,
applyCreatedAtTemplate,
applyLinkToOriginalTemplate,
applyLocationTemplate,
applyNotebookTemplate,
applyReminderDoneTimeTemplate,
applyReminderOrderTemplate,
applyReminderTimeTemplate,
applySourceUrlTemplate,
applyTagsArrayTemplate,
applyTagsTemplate,
applyTitleTemplate,
applyUpdatedAtTemplate,
applyEvernoteLinkTemplate,
applyEvernoteGuidTemplate,
applyTagsYamlListTemplate
} from './apply-functions';
import {
removeCreatedAtPlaceholder,
removeLinkToOriginalTemplate,
removeLocationPlaceholder,
removeMetadataBlockPlaceholder,
removeNotebookPlaceholder,
removeReminderDoneTimePlaceholder,
removeReminderOrderPlaceholder,
removeReminderTimePlaceholder,
removeSourceUrlPlaceholder,
removeUpdatedAtPlaceholder,
removeEvernoteLinkPlaceholder,
removeEvernoteGuidPlaceholder
} from './remove-functions';
export const applyTemplate = (noteData: NoteData, yarleOptions: YarleOptions) => {
let result = cloneDeep(yarleOptions.currentTemplate);
result = applyTitleTemplate(noteData, result, () => noteData.title);
result = applyTagsTemplate(noteData, result, () => !yarleOptions.skipTags);
result = applyTagsArrayTemplate(noteData, result, () => !yarleOptions.skipTags );
result = applyTagsYamlListTemplate(noteData, result, () => !yarleOptions.skipTags);
result = noteData.title === TOCNoteName
? removeEvernoteLinkPlaceholder(result)
: applyEvernoteLinkTemplate(noteData, result)
result = noteData.title === TOCNoteName
? removeEvernoteGuidPlaceholder(result)
: applyEvernoteGuidTemplate(noteData, result)
result = applyContentTemplate(noteData, result, () => noteData.markdownContent);
result = (yarleOptions.keepOriginalHtml && noteData.linkToOriginal)
? applyLinkToOriginalTemplate(noteData, result)
: removeLinkToOriginalTemplate(result);
result = (!yarleOptions.skipCreationTime && noteData.createdAt)
? applyCreatedAtTemplate(noteData, result)
: removeCreatedAtPlaceholder(result);
result = (!yarleOptions.skipUpdateTime && noteData.updatedAt)
? applyUpdatedAtTemplate(noteData, result)
: removeUpdatedAtPlaceholder(result);
result = (!yarleOptions.skipSourceUrl && noteData.sourceUrl)
? applySourceUrlTemplate(noteData, result)
: removeSourceUrlPlaceholder(result);
result = (!yarleOptions.skipLocation && noteData.location)
? applyLocationTemplate(noteData, result)
: removeLocationPlaceholder(result);
result = (yarleOptions.isNotebookNameNeeded && noteData.notebookName)
? applyNotebookTemplate(noteData, result)
: removeNotebookPlaceholder(result);
result = (!yarleOptions.skipReminderTime && noteData.reminderTime)
? applyReminderTimeTemplate(noteData, result)
: removeReminderTimePlaceholder(result);
result = (!yarleOptions.skipReminderOrder && noteData.reminderOrder)
? applyReminderOrderTemplate(noteData, result)
: removeReminderOrderPlaceholder(result);
result = (!yarleOptions.skipReminderDoneTime && noteData.reminderDoneTime)
? applyReminderDoneTimeTemplate(noteData, result)
: removeReminderDoneTimePlaceholder(result);
result = result.replace(T.START_BLOCK, '')
.replace(T.END_BLOCK, '');
return result;
};