yarle-evernote-to-md
Version:
Yet Another Rope Ladder from Evernote
79 lines (76 loc) • 4.36 kB
text/typescript
import { ImageSizeFormat } from 'image-size-format';
import { CharacterMap } from './../CharacterMap';
import { YarleOptions } from './../YarleOptions';
import { OutputFormat } from './../output-format';
import { TaskOutputFormat } from './../task-output-format';
import { SearchAndReplace } from 'models';
const store = require ('./store');
enum DefaultRootType {
array = 'array',
object = 'object'
}
const loadJSONSafely = (jsonString: string, defaultRootTyoe: DefaultRootType): any => {
try {
console.log(jsonString);
return JSON.parse(jsonString);
}catch(e){
console.log("ERROR", e);
return defaultRootTyoe === DefaultRootType.array
? []
: {}
}
}
export const mapSettingsToYarleOptions = (): YarleOptions => {
return {
enexSources: store.get('enexSources') as Array<string>,
outputDir: store.get('outputDir') as string,
isMetadataNeeded: true,
isNotebookNameNeeded: store.get('isNotebookNameNeeded') as boolean,
isZettelkastenNeeded: store.get('isZettelkastenNeeded') as boolean,
useZettelIdAsFilename: store.get('useZettelIdAsFilename') as boolean,
plainTextNotesOnly: store.get('plainTextNotesOnly') as boolean,
skipWebClips: (store.get('skipWebClips') as boolean),
useHashTags: store.get('useHashTags') as boolean,
outputFormat: store.get('outputFormat') as OutputFormat,
obsidianTaskTag: store.get('obsidianTaskTag') as string,
taskOutputFormat: store.get('taskOutputFormat') as TaskOutputFormat,
skipEnexFileNameFromOutputPath: store.get('skipEnexFileNameFromOutputPath') as boolean,
keepMDCharactersOfENNotes: store.get('keepMDCharactersOfENNotes') as boolean,
monospaceIsCodeBlock: store.get('monospaceIsCodeBlock') as boolean,
keepOriginalHtml: store.get('keepOriginalHtml') as boolean,
posixHtmlPath: store.get('posixHtmlPath') as boolean,
currentTemplate: store.get('currentTemplate') as string,
resourcesDir: store.get('resourcesDir') as string,
trimStartingTabs: store.get('trimStartingTabs') as boolean,
convertPlainHtmlNewlines: store.get('convertPlainHtmlNewlines') as boolean,
encryptionPasswords: ((store.get('encryptionPasswords') as string)||'').split(',').map(pwd => pwd.trim()),
nestedTags: {
separatorInEN: store.get('nestedTags.separatorInEN') as string,
replaceSeparatorWith: store.get('nestedTags.replaceSeparatorWith') as string,
replaceSpaceWith: store.get('nestedTags.replaceSpaceWith') as string,
},
logseqSettings: {
journalNotes: store.get('logseqSettings.journalNotes') as boolean,
},
obsidianSettings: {
omitLinkDisplayName: store.get('obsidianSettings.omitLinkDisplayName') as boolean,
},
dateFormat: store.get('dateFormat') as string,
imageSizeFormat: store.get('imageSizeFormat') as ImageSizeFormat,
keepImageSize: store.get('keepImageSize') as boolean,
keepOriginalAmountOfNewlines: store.get('keepOriginalAmountOfNewlines') as boolean,
addExtensionToInternalLinks: store.get('addExtensionToInternalLinks') as boolean,
generateNakedUrls: store.get('generateNakedUrls') as boolean,
urlEncodeFileNamesAndLinks: store.get('urlEncodeFileNamesAndLinks') as boolean,
haveEnexLevelResources: store.get('haveEnexLevelResources') as boolean,
haveGlobalResources: store.get('haveGlobalResources') as boolean,
useUniqueUnknownFileNames: store.get('useUniqueUnknownFileNames') as boolean,
useLevenshteinForLinks: store.get('useLevenshteinForLinks') as boolean,
convertColorsToMDHighlight: store.get('convertColorsToMDHighlight') as boolean,
keepEvernoteLinkIfNoNoteFound: store.get('keepEvernoteLinkIfNoNoteFound') as boolean,
sanitizeResourceNameSpaces: store.get('sanitizeResourceNameSpaces') as boolean,
replacementChar: store.get('replacementChar') as string,
replacementCharacterMap: loadJSONSafely(store.get('replacementCharacterMap'), DefaultRootType.object) as CharacterMap,
globalReplacementSettings: loadJSONSafely(store.get('globalReplacementSettings'), DefaultRootType.array) as Array<SearchAndReplace>
};
};