Skip to content

Commit

Permalink
Smarter parsing of aliases in frontmatter
Browse files Browse the repository at this point in the history
  • Loading branch information
hadynz committed Feb 12, 2022
1 parent f28bbcd commit 448f39e
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/search.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { App, getAllTags, TFile, CachedMetadata } from 'obsidian';
import { findAll } from 'highlight-words-core';

import { PageIndex, SearchIndex, TagIndex, AliasIndex } from './searchTypings';
import { getAliases } from './utils/getAliases';

type SearchResult = {
start: number;
Expand Down Expand Up @@ -66,7 +67,7 @@ export default class Search {
cache.forEach((fileCache) => {
this.searchIndex.push(new PageIndex(fileCache.file));

fileCache.metadata.frontmatter?.aliases?.forEach((alias: string) => {
getAliases(fileCache.metadata).forEach((alias: string) => {
this.searchIndex.push(new AliasIndex(alias, fileCache.file));
});
});
Expand Down
42 changes: 42 additions & 0 deletions src/utils/getAliases.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { CachedMetadata, FrontMatterCache } from 'obsidian';

import { getAliases } from './getAliases';

describe('getAliases', () => {
it('Returns an empty array if no frontmatter is defined', () => {
const metadata: CachedMetadata = {};
const aliases = getAliases(metadata);
expect(aliases).toEqual([]);
});

it('Returns an empty array if no aliases are defined', () => {
const metadata: CachedMetadata = {
frontmatter: {} as FrontMatterCache,
};

const aliases = getAliases(metadata);
expect(aliases).toEqual([]);
});

it('Parses aliases defined as a string split by comma', () => {
const metadata: CachedMetadata = {
frontmatter: {
aliases: 'foo, bar ',
} as unknown as FrontMatterCache,
};

const aliases = getAliases(metadata);
expect(aliases).toEqual(['foo', 'bar']);
});

it('Parses aliases defined as an array of values', () => {
const metadata: CachedMetadata = {
frontmatter: {
aliases: ['foo', 'bar'],
} as unknown as FrontMatterCache,
};

const aliases = getAliases(metadata);
expect(aliases).toEqual(['foo', 'bar']);
});
});
13 changes: 13 additions & 0 deletions src/utils/getAliases.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { CachedMetadata } from 'obsidian';

export const getAliases = (metadata: CachedMetadata): string[] => {
const frontmatterAliases = metadata?.frontmatter?.['aliases'];

if (typeof frontmatterAliases === 'string') {
return frontmatterAliases.split(',').map((alias: string) => alias.trim());
} else if (Array.isArray(frontmatterAliases)) {
return frontmatterAliases as string[];
}

return [];
};

0 comments on commit 448f39e

Please sign in to comment.