Skip to content

Commit bce25d4

Browse files
authored
Merge pull request #2 from aksh1618/feat/icon-as-prop
Notion: Add option to preserve icon as property
2 parents 183669f + d4b3157 commit bce25d4

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

src/formats/notion.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export class NotionImporter extends FormatImporter {
1414
removeNotionToc: boolean;
1515
autoDetectedLanguages: string[];
1616
languageDetectionMinimumThreshold: number;
17+
preserveIconAsProperty: string;
1718

1819
init() {
1920
this.parentsInSubfolders = true;
@@ -32,6 +33,8 @@ export class NotionImporter extends FormatImporter {
3233
'sql',
3334
'plaintext',
3435
];
36+
this.preserveIconAsProperty = 'sticker';
37+
3538
this.addFileChooserSetting('Exported Notion', ['zip']);
3639
this.addOutputLocationSetting('Notion');
3740
new Setting(this.modal.contentEl)
@@ -59,6 +62,12 @@ export class NotionImporter extends FormatImporter {
5962
.addTextArea((textArea) => textArea
6063
.setValue(this.autoDetectedLanguages.join('\n'))
6164
.onChange((value) => value ? this.autoDetectedLanguages = value.split('\n') : []));
65+
new Setting(this.modal.contentEl)
66+
.setName('Property name for icon')
67+
.setDesc('Icons can be preserved as a property with the given name. Leaving this empty will skip adding any such property.')
68+
.addText((text) => text
69+
.setValue(this.preserveIconAsProperty)
70+
.onChange((value) => value ? this.preserveIconAsProperty = value : ''));
6271
}
6372

6473
async import(ctx: ImportContext): Promise<void> {
@@ -68,6 +77,7 @@ export class NotionImporter extends FormatImporter {
6877
removeNotionToc,
6978
autoDetectedLanguages,
7079
languageDetectionMinimumThreshold,
80+
preserveIconAsProperty,
7181
files,
7282
} = this;
7383
console.log('Auto detecting languages: ' + autoDetectedLanguages.join('\n'));
@@ -150,6 +160,7 @@ export class NotionImporter extends FormatImporter {
150160
removeNotionToc,
151161
autoDetectedLanguages,
152162
languageDetectionMinimumThreshold,
163+
preserveIconAsProperty,
153164
};
154165
const markdownBody = await readToMarkdown(info, conversionOptions, file);
155166

src/formats/notion/convert-to-md.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ export async function readToMarkdown(info: NotionResolverInfo, config: Conversio
4040
}
4141
}
4242

43+
if (config.preserveIconAsProperty) {
44+
frontMatter[config.preserveIconAsProperty] = dom.find('.page-header-icon > span[class=icon]').innerText;
45+
}
46+
4347
if (config.removeNotionToc) {
4448
removeNotionToc(body);
4549
}

src/formats/notion/notion-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,5 @@ export interface ConversionOptions {
9191
removeNotionToc: boolean;
9292
autoDetectedLanguages: string[];
9393
languageDetectionMinimumThreshold: number;
94+
preserveIconAsProperty: string;
9495
}

0 commit comments

Comments
 (0)