mirror of
https://github.com/gosticks/flashcards-obsidian.git
synced 2025-10-16 12:05:33 +00:00
Add filtering out of cards inside code blocks
This commit is contained in:
parent
fb29478833
commit
2092d4c1ad
@ -7,6 +7,7 @@ export abstract class Card {
|
|||||||
initialContent: string;
|
initialContent: string;
|
||||||
fields: Record<string, string>;
|
fields: Record<string, string>;
|
||||||
reversed: boolean;
|
reversed: boolean;
|
||||||
|
initialOffset: number;
|
||||||
endOffset: number;
|
endOffset: number;
|
||||||
tags: string[];
|
tags: string[];
|
||||||
inserted: boolean;
|
inserted: boolean;
|
||||||
@ -22,6 +23,7 @@ export abstract class Card {
|
|||||||
initialContent: string,
|
initialContent: string,
|
||||||
fields: Record<string, string>,
|
fields: Record<string, string>,
|
||||||
reversed: boolean,
|
reversed: boolean,
|
||||||
|
initialOffset: number,
|
||||||
endOffset: number,
|
endOffset: number,
|
||||||
tags: string[],
|
tags: string[],
|
||||||
inserted: boolean,
|
inserted: boolean,
|
||||||
@ -33,6 +35,7 @@ export abstract class Card {
|
|||||||
this.initialContent = initialContent;
|
this.initialContent = initialContent;
|
||||||
this.fields = fields;
|
this.fields = fields;
|
||||||
this.reversed = reversed;
|
this.reversed = reversed;
|
||||||
|
this.initialOffset = initialOffset
|
||||||
this.endOffset = endOffset;
|
this.endOffset = endOffset;
|
||||||
this.tags = tags;
|
this.tags = tags;
|
||||||
this.inserted = inserted;
|
this.inserted = inserted;
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export class Clozecard extends Card {
|
|||||||
initialContent: string,
|
initialContent: string,
|
||||||
fields: Record<string, string>,
|
fields: Record<string, string>,
|
||||||
reversed: boolean,
|
reversed: boolean,
|
||||||
|
initialOffset: number,
|
||||||
endOffset: number,
|
endOffset: number,
|
||||||
tags: string[] = [],
|
tags: string[] = [],
|
||||||
inserted = false,
|
inserted = false,
|
||||||
@ -20,6 +21,7 @@ export class Clozecard extends Card {
|
|||||||
initialContent,
|
initialContent,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export class Flashcard extends Card {
|
|||||||
initialContent: string,
|
initialContent: string,
|
||||||
fields: Record<string, string>,
|
fields: Record<string, string>,
|
||||||
reversed: boolean,
|
reversed: boolean,
|
||||||
|
initialOffset: number,
|
||||||
endOffset: number,
|
endOffset: number,
|
||||||
tags: string[] = [],
|
tags: string[] = [],
|
||||||
inserted = false,
|
inserted = false,
|
||||||
@ -20,6 +21,7 @@ export class Flashcard extends Card {
|
|||||||
initialContent,
|
initialContent,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export class Inlinecard extends Card {
|
|||||||
initialContent: string,
|
initialContent: string,
|
||||||
fields: Record<string, string>,
|
fields: Record<string, string>,
|
||||||
reversed: boolean,
|
reversed: boolean,
|
||||||
|
initialOffset: number,
|
||||||
endOffset: number,
|
endOffset: number,
|
||||||
tags: string[] = [],
|
tags: string[] = [],
|
||||||
inserted = false,
|
inserted = false,
|
||||||
@ -20,6 +21,7 @@ export class Inlinecard extends Card {
|
|||||||
initialContent,
|
initialContent,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export class Spacedcard extends Card {
|
|||||||
initialContent: string,
|
initialContent: string,
|
||||||
fields: Record<string, string>,
|
fields: Record<string, string>,
|
||||||
reversed: boolean,
|
reversed: boolean,
|
||||||
|
initialOffset: number,
|
||||||
endOffset: number,
|
endOffset: number,
|
||||||
tags: string[] = [],
|
tags: string[] = [],
|
||||||
inserted = false,
|
inserted = false,
|
||||||
@ -20,6 +21,7 @@ export class Spacedcard extends Card {
|
|||||||
initialContent,
|
initialContent,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
|
|||||||
@ -42,11 +42,6 @@ export class Parser {
|
|||||||
headings = [...file.matchAll(this.regex.headingsRegex)];
|
headings = [...file.matchAll(this.regex.headingsRegex)];
|
||||||
}
|
}
|
||||||
|
|
||||||
// filter in cacheCodeSections only the objects with type "code"
|
|
||||||
// the line is 0-indexed
|
|
||||||
// const codeSections = this.app.metadataCache.getFileCache(this.app.workspace.getActiveFile()).sections.filter(section => section.type === "code")
|
|
||||||
|
|
||||||
|
|
||||||
note = this.substituteObsidianLinks(`[[${note}]]`, vault);
|
note = this.substituteObsidianLinks(`[[${note}]]`, vault);
|
||||||
cards = cards.concat(
|
cards = cards.concat(
|
||||||
this.generateCardsWithTag(file, headings, deck, vault, note, globalTags)
|
this.generateCardsWithTag(file, headings, deck, vault, note, globalTags)
|
||||||
@ -57,9 +52,24 @@ export class Parser {
|
|||||||
cards = cards.concat(
|
cards = cards.concat(
|
||||||
this.generateSpacedCards(file, headings, deck, vault, note, globalTags)
|
this.generateSpacedCards(file, headings, deck, vault, note, globalTags)
|
||||||
);
|
);
|
||||||
// cards = cards.concat(
|
// cards = cards.concat(
|
||||||
// this.generateClozeCards(file, headings, deck, vault, note, globalTags)
|
// this.generateClozeCards(file, headings, deck, vault, note, globalTags)
|
||||||
// );
|
// );
|
||||||
|
|
||||||
|
|
||||||
|
// Filter out cards that are fully inside a code block
|
||||||
|
const codeBlocks = [...file.matchAll(this.regex.obsidianCodeBlock)];
|
||||||
|
const rangesToDiscard = codeBlocks.map(x=>([x.index, x.index+x[0].length]))
|
||||||
|
cards = cards.filter(card => {
|
||||||
|
const cardRange = [card.initialOffset, card.endOffset];
|
||||||
|
const isInRangeToDiscard = rangesToDiscard.some(range => {
|
||||||
|
return (
|
||||||
|
cardRange[0] >= range[0] && cardRange[1] <= range[1]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return !isInRangeToDiscard;
|
||||||
|
});
|
||||||
|
|
||||||
cards.sort((a, b) => a.endOffset - b.endOffset);
|
cards.sort((a, b) => a.endOffset - b.endOffset);
|
||||||
|
|
||||||
const defaultAnkiTag = this.settings.defaultAnkiTag;
|
const defaultAnkiTag = this.settings.defaultAnkiTag;
|
||||||
@ -154,6 +164,7 @@ export class Parser {
|
|||||||
medias = medias.concat(this.getAudioLinks(prompt));
|
medias = medias.concat(this.getAudioLinks(prompt));
|
||||||
prompt = this.parseLine(prompt, vault);
|
prompt = this.parseLine(prompt, vault);
|
||||||
|
|
||||||
|
const initialOffset = match.index;
|
||||||
const endingLine = match.index + match[0].length;
|
const endingLine = match.index + match[0].length;
|
||||||
const tags: string[] = this.parseTags(match[4], globalTags);
|
const tags: string[] = this.parseTags(match[4], globalTags);
|
||||||
const id: number = match[5] ? Number(match[5]) : -1;
|
const id: number = match[5] ? Number(match[5]) : -1;
|
||||||
@ -170,6 +181,7 @@ export class Parser {
|
|||||||
originalPrompt,
|
originalPrompt,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endingLine,
|
endingLine,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
@ -226,6 +238,7 @@ export class Parser {
|
|||||||
question = this.parseLine(question, vault);
|
question = this.parseLine(question, vault);
|
||||||
answer = this.parseLine(answer, vault);
|
answer = this.parseLine(answer, vault);
|
||||||
|
|
||||||
|
const initialOffset = match.index
|
||||||
const endingLine = match.index + match[0].length;
|
const endingLine = match.index + match[0].length;
|
||||||
const tags: string[] = this.parseTags(match[5], globalTags);
|
const tags: string[] = this.parseTags(match[5], globalTags);
|
||||||
const id: number = match[6] ? Number(match[6]) : -1;
|
const id: number = match[6] ? Number(match[6]) : -1;
|
||||||
@ -242,6 +255,7 @@ export class Parser {
|
|||||||
originalQuestion,
|
originalQuestion,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endingLine,
|
endingLine,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
@ -291,6 +305,7 @@ export class Parser {
|
|||||||
question = this.parseLine(question, vault);
|
question = this.parseLine(question, vault);
|
||||||
answer = this.parseLine(answer, vault);
|
answer = this.parseLine(answer, vault);
|
||||||
|
|
||||||
|
const initialOffset = match.index
|
||||||
const endingLine = match.index + match[0].length;
|
const endingLine = match.index + match[0].length;
|
||||||
const tags: string[] = this.parseTags(match[4], globalTags);
|
const tags: string[] = this.parseTags(match[4], globalTags);
|
||||||
const id: number = match[6] ? Number(match[6]) : -1;
|
const id: number = match[6] ? Number(match[6]) : -1;
|
||||||
@ -307,6 +322,7 @@ export class Parser {
|
|||||||
originalQuestion,
|
originalQuestion,
|
||||||
fields,
|
fields,
|
||||||
reversed,
|
reversed,
|
||||||
|
initialOffset,
|
||||||
endingLine,
|
endingLine,
|
||||||
tags,
|
tags,
|
||||||
inserted,
|
inserted,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user