yarle-evernote-to-md
Version:
Yet Another Rope Ladder from Evernote
61 lines (53 loc) • 2.33 kB
text/typescript
import { YarleOptions } from "./../YarleOptions";
import { Language } from "./language";
import { createTanaOutput } from "./../utils/tana/create-tana-output";
import { StandardMD } from "./StandardMD";
import { EvernoteNoteData, NoteData } from "./../models/NoteData";
import { cleanTanaContent, convert2TanaNode } from "./../utils/tana/convert-to-tana-node";
import { saveTanaFile } from "./../utils/save-tana-file";
import { NodeType } from "./../utils/tana/types";
import { checkboxDone, checkboxTodo } from './../constants';
export class Tana extends StandardMD implements Language {
constructor(){
super()
}
languageItems = {
bold: '**',
italic: '__',
highlight: '^^',
strikethrough: '~~',
listItem: ''
};
codeBlock ='<YARLE_TANA_CODE_BLOCK>';
postProcess = async (options: YarleOptions, outputNotebookFolders: string[]) => {
createTanaOutput(options, outputNotebookFolders);
};
noteExtension = '.json';
noteProcess = (options: YarleOptions, data: NoteData, note: EvernoteNoteData) => {
const tanaJson = convert2TanaNode(data)
saveTanaFile(tanaJson, note)
};
tagProcess = (content: string, tasks: Map<string, string>, currentTaskPlaceholder: string, updatedContent: string): string => {
const tanaNote = JSON.parse(content);
const rootTaskChild = tanaNote.nodes?.[0].children?.find((child:any) => child.name === currentTaskPlaceholder)
if (rootTaskChild){
for (const taskItem of tasks.values()){
// split by tasks
const todoState = taskItem.startsWith(checkboxTodo)? 'todo':'done'
tanaNote.nodes?.[0].children?.push({
uid: 'uuid' + Math.random(),
createdAt: rootTaskChild.createdAt,
editedAt: rootTaskChild.editedAt,
type: 'node' as NodeType,
name: cleanTanaContent(taskItem, todoState === 'todo' ? checkboxTodo: checkboxDone),
todoState: todoState as "todo"|"done",
refs:[],
}
)
}
tanaNote.nodes?.[0].children.splice(tanaNote.nodes?.[0].children.indexOf(rootTaskChild), 1)
return JSON.stringify(tanaNote)
}
return updatedContent
}
}