mirror of
https://github.com/simontc/obsidian-note-autocreation.git
synced 2026-07-22 06:30:28 +00:00
Add support for using header as alias when bang character is given
This commit is contained in:
parent
ac28e0815e
commit
ea52bd033b
2 changed files with 44 additions and 2 deletions
|
|
@ -13,9 +13,19 @@ export class HeaderSuggestionCollector {
|
|||
const [query, alias] = headerQuery.split('|')
|
||||
const lowerCaseQuery = query.toLowerCase()
|
||||
const headersInNote = this.metadataCollection.getHeadersIn(noteSuggestion.Path.VaultPath)
|
||||
const aliasToUse = noteSuggestion.Alias ? noteSuggestion.Alias : alias
|
||||
return headersInNote
|
||||
let aliasToUse = noteSuggestion.Alias ? noteSuggestion.Alias : alias
|
||||
let validHeaders = headersInNote
|
||||
.filter(h => h.heading.toLowerCase().includes(lowerCaseQuery))
|
||||
let headerCanBeUsedAsAlias = false
|
||||
if (validHeaders.length === 0 && query.endsWith("!")){
|
||||
const queryWithoutBang = lowerCaseQuery.slice(0, query.length - 1)
|
||||
validHeaders = headersInNote.filter(h => h.heading.toLowerCase().includes(queryWithoutBang))
|
||||
headerCanBeUsedAsAlias = true
|
||||
}
|
||||
if (headerCanBeUsedAsAlias && validHeaders.length === 1 && !alias){
|
||||
aliasToUse = validHeaders[0].heading
|
||||
}
|
||||
return validHeaders
|
||||
.map(h => new HeaderSuggestion(h.heading, h.level, aliasToUse, noteSuggestion))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,38 @@ describe('when there are headers in the note', function () {
|
|||
expect(suggestion.Title).toBe('Header 1')
|
||||
})
|
||||
|
||||
test('uses the header as alias if bang character is given after header trigger', () => {
|
||||
const headers = [
|
||||
Fake.HeadingCache.withTitle('Header 1').withLevel(1),
|
||||
]
|
||||
|
||||
const headerMap = new Map<string, HeadingCache[]>([[fakeExistingNote.VaultPath, headers]])
|
||||
const metadataCollection = Fake.MetaDataCollection.withHeaders(headerMap)
|
||||
const collector = new HeaderSuggestionCollector(metadataCollection)
|
||||
|
||||
const observedSuggestions = collector.getSuggestions('Header 1!', fakeExistingNote)
|
||||
expect(observedSuggestions.length).toBe(1)
|
||||
const suggestion = observedSuggestions[0]
|
||||
expect(suggestion.Alias).toBe('Header 1')
|
||||
expect(suggestion.Title).toBe('Header 1')
|
||||
})
|
||||
|
||||
test('does not use the header as alias if header includes bang character', () => {
|
||||
const headers = [
|
||||
Fake.HeadingCache.withTitle('Header 1!').withLevel(1),
|
||||
]
|
||||
|
||||
const headerMap = new Map<string, HeadingCache[]>([[fakeExistingNote.VaultPath, headers]])
|
||||
const metadataCollection = Fake.MetaDataCollection.withHeaders(headerMap)
|
||||
const collector = new HeaderSuggestionCollector(metadataCollection)
|
||||
|
||||
const observedSuggestions = collector.getSuggestions('Header 1!', fakeExistingNote)
|
||||
expect(observedSuggestions.length).toBe(1)
|
||||
const suggestion = observedSuggestions[0]
|
||||
expect(suggestion.Alias).toBeUndefined()
|
||||
expect(suggestion.Title).toBe('Header 1!')
|
||||
})
|
||||
|
||||
test('uses the original note alias if two aliases are given', () => {
|
||||
const headers = [
|
||||
Fake.HeadingCache.withTitle('Header 1').withLevel(1),
|
||||
|
|
|
|||
Loading…
Reference in a new issue