Fixed functions to get tags and aliases

This commit is contained in:
Simon Cambier
2022-10-22 20:55:48 +02:00
parent 9beed2311f
commit 6c80b759ff
3 changed files with 14 additions and 46 deletions

View File

@@ -19,7 +19,7 @@ describe('Utils', () => {
// Arrange
const metadata = {
frontmatter: { aliases: ['foo', 'bar'] },
} as CachedMetadata
} as unknown as CachedMetadata
// Act
const actual = getAliasesFromMetadata(metadata)
// Assert
@@ -29,7 +29,7 @@ describe('Utils', () => {
// Arrange
const metadata = {
frontmatter: { aliases: 'foo, bar' },
} as CachedMetadata
} as unknown as CachedMetadata
// Act
const actual = getAliasesFromMetadata(metadata)
// Assert
@@ -39,7 +39,7 @@ describe('Utils', () => {
// Arrange
const metadata = {
frontmatter: { aliases: '' },
} as CachedMetadata
} as unknown as CachedMetadata
// Act
const actual = getAliasesFromMetadata(metadata)
// Assert

View File

@@ -1,4 +1,10 @@
import { type CachedMetadata, Notice, Platform } from 'obsidian'
import {
type CachedMetadata,
Notice,
Platform,
getAllTags,
parseFrontMatterAliases,
} from 'obsidian'
import type { SearchMatch } from '../globals'
import {
excerptAfter,
@@ -150,46 +156,13 @@ export function stripMarkdownCharacters(text: string): string {
export function getAliasesFromMetadata(
metadata: CachedMetadata | null
): string[] {
const arrOrString = metadata?.frontmatter?.aliases ?? []
try {
return (
Array.isArray(arrOrString)
? arrOrString
: arrOrString.toString().split(',')
)
.map(s => (s ? s.trim() : s))
.filter(s => !!s)
} catch (e) {
new Notice(
'Omnisearch - Error while getting aliases from file, see developer console'
)
console.error(`Omnisearch - Error while getting aliases from file`)
console.error(e)
return []
}
return metadata?.frontmatter
? parseFrontMatterAliases(metadata.frontmatter) ?? []
: []
}
export function getTagsFromMetadata(metadata: CachedMetadata | null): string[] {
try {
const arrOrString = metadata?.frontmatter?.tags ?? []
const fromFrontMatter = (
Array.isArray(arrOrString) ? arrOrString : arrOrString.split(',')
)
.map(s => (s ? s.trim() : s))
.filter(s => !!s)
const fromBody = (metadata?.tags ?? []).map(t => t.tag)
return [...fromFrontMatter, ...fromBody].map(t =>
t[0] !== '#' ? '#' + t : t
)
} catch (e) {
new Notice(
'Omnisearch - Error while getting tags from file, see developer console'
)
console.error(`Omnisearch - Error while getting tags from file`)
console.error(e)
return []
}
return metadata ? getAllTags(metadata) ?? [] : []
}
/**

View File

@@ -5,11 +5,6 @@ declare module 'obsidian' {
isUserIgnored?(path: string): boolean
}
interface FrontMatterCache {
aliases?: string[] | string
tags?: string[] | string
}
interface ViewState {
state?: {
file?: string