Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/formats/notion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export class NotionImporter extends FormatImporter {
removeNotionToc: boolean;
autoDetectedLanguages: string[];
languageDetectionMinimumThreshold: number;
preserveIconAsProperty: string;

init() {
this.parentsInSubfolders = true;
Expand All @@ -32,6 +33,8 @@ export class NotionImporter extends FormatImporter {
'sql',
'plaintext',
];
this.preserveIconAsProperty = 'sticker';

this.addFileChooserSetting('Exported Notion', ['zip']);
this.addOutputLocationSetting('Notion');
new Setting(this.modal.contentEl)
Expand Down Expand Up @@ -59,6 +62,12 @@ export class NotionImporter extends FormatImporter {
.addTextArea((textArea) => textArea
.setValue(this.autoDetectedLanguages.join('\n'))
.onChange((value) => value ? this.autoDetectedLanguages = value.split('\n') : []));
new Setting(this.modal.contentEl)
.setName('Property name for icon')
.setDesc('Icons can be preserved as a property with the given name. Leaving this empty will skip adding any such property.')
.addText((text) => text
.setValue(this.preserveIconAsProperty)
.onChange((value) => value ? this.preserveIconAsProperty = value : ''));
}

async import(ctx: ImportContext): Promise<void> {
Expand All @@ -68,6 +77,7 @@ export class NotionImporter extends FormatImporter {
removeNotionToc,
autoDetectedLanguages,
languageDetectionMinimumThreshold,
preserveIconAsProperty,
files,
} = this;
console.log('Auto detecting languages: ' + autoDetectedLanguages.join('\n'));
Expand Down Expand Up @@ -150,6 +160,7 @@ export class NotionImporter extends FormatImporter {
removeNotionToc,
autoDetectedLanguages,
languageDetectionMinimumThreshold,
preserveIconAsProperty,
};
const markdownBody = await readToMarkdown(info, conversionOptions, file);

Expand Down
4 changes: 4 additions & 0 deletions src/formats/notion/convert-to-md.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ export async function readToMarkdown(info: NotionResolverInfo, config: Conversio
}
}

if (config.preserveIconAsProperty) {
frontMatter[config.preserveIconAsProperty] = dom.find('.page-header-icon > span[class=icon]').innerText;
}

if (config.removeNotionToc) {
removeNotionToc(body);
}
Expand Down
1 change: 1 addition & 0 deletions src/formats/notion/notion-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,5 @@ export interface ConversionOptions {
removeNotionToc: boolean;
autoDetectedLanguages: string[];
languageDetectionMinimumThreshold: number;
preserveIconAsProperty: string;
}