diff --git a/src/i18n/de/books.ts b/src/i18n/de/books.ts index 87db750..107613b 100644 --- a/src/i18n/de/books.ts +++ b/src/i18n/de/books.ts @@ -6,7 +6,7 @@ export const BOOKS: Book[] = [ { id: 'lev', name: '3. Mose', aliases: ['Levitikus', 'Lev', '3Mo'] }, { id: 'num', name: '4. Mose', aliases: ['Numeri', 'Num', '4Mo'] }, { id: 'deu', name: '5. Mose', aliases: ['Deuteronomium', 'Dtn', '5Mo'] }, - { id: 'jos', name: 'Josua', aliases: ['Jos', 'Jos'] }, + { id: 'jos', name: 'Josua', aliases: ['Jos'] }, { id: 'jdg', name: 'Richter', aliases: ['Ri', 'Richt'] }, { id: 'rut', name: 'Rut', aliases: ['Rut', 'Ru'] }, { id: '1sa', name: '1. Samuel', aliases: ['1Sam', '1Sa'] }, @@ -15,9 +15,9 @@ export const BOOKS: Book[] = [ { id: '2ki', name: '2. Könige', aliases: ['2Kön', '2Kö'] }, { id: '1ch', name: '1. Chronik', aliases: ['1Chr', '1Ch'] }, { id: '2ch', name: '2. Chronik', aliases: ['2Chr', '2Ch'] }, - { id: 'ezr', name: 'Esra', aliases: ['Esr', 'Esr'] }, - { id: 'neh', name: 'Nehemia', aliases: ['Neh', 'Neh'] }, - { id: 'est', name: 'Ester', aliases: ['Esther', 'Est', 'Est'] }, + { id: 'ezr', name: 'Esra', aliases: ['Esr'] }, + { id: 'neh', name: 'Nehemia', aliases: ['Neh'] }, + { id: 'est', name: 'Ester', aliases: ['Esther', 'Est'] }, { id: 'job', name: 'Ijob', aliases: ['Hiob', 'Ijob', 'Hi'] }, { id: 'psa', name: 'Psalmen', aliases: ['Psalter', 'Ps'] }, { id: 'pro', name: 'Sprüche', aliases: ['Sprüche Salomos', 'Spr'] }, @@ -28,7 +28,7 @@ export const BOOKS: Book[] = [ { id: 'lam', name: 'Klagelieder', aliases: ['Threni', 'Klgl', 'Kla'] }, { id: 'ezk', name: 'Ezechiel', aliases: ['Hesekiel', 'Ez', 'Hes'] }, { id: 'dan', name: 'Daniel', aliases: ['Dan'] }, - { id: 'hos', name: 'Hosea', aliases: ['Hos', 'Hos'] }, + { id: 'hos', name: 'Hosea', aliases: ['Hos'] }, { id: 'jol', name: 'Joel', aliases: ['Joe'] }, { id: 'amo', name: 'Amos', aliases: ['Am', 'Amos'] }, { id: 'oba', name: 'Obadja', aliases: ['Ob', 'Oba'] }, @@ -52,8 +52,8 @@ export const BOOKS: Book[] = [ { id: 'rom', name: 'Römer', aliases: ['Röm', 'Rö'] }, { id: '1co', name: '1. Korinther', aliases: ['1Kor', '1Ko'] }, { id: '2co', name: '2. Korinther', aliases: ['2Kor', '2Ko'] }, - { id: 'gal', name: 'Galater', aliases: ['Gal', 'Gal'] }, - { id: 'eph', name: 'Epheser', aliases: ['Eph', 'Eph'] }, + { id: 'gal', name: 'Galater', aliases: ['Gal'] }, + { id: 'eph', name: 'Epheser', aliases: ['Eph'] }, { id: 'php', name: 'Philipper', aliases: ['Phil'] }, { id: 'col', name: 'Kolosser', aliases: ['Kol'] }, { id: '1th', name: '1. Thessalonicher', aliases: ['1Thes', '1Th'] }, diff --git a/src/local-bible-ref-setting-tab.ts b/src/local-bible-ref-setting-tab.ts index 8c7d890..916d581 100644 --- a/src/local-bible-ref-setting-tab.ts +++ b/src/local-bible-ref-setting-tab.ts @@ -15,10 +15,6 @@ import VersionSuggest from './version-suggest'; import { SettingsLabels } from './i18n/models'; import { I18N } from './i18n'; -// STILL TODO: -// - Need to sort out books in PassageReference to use I18N. -// - Need to sort out smallcaps 'Lord' in German. - export default class LocalBibleRefSettingTab extends PluginSettingTab { private readonly hiddenClass = 'local-bible-ref-hidden'; diff --git a/src/passage-reference.ts b/src/passage-reference.ts index 27ba5bb..78e8ca2 100644 --- a/src/passage-reference.ts +++ b/src/passage-reference.ts @@ -1,3 +1,4 @@ +import { getLanguage } from 'obsidian'; import { I18N } from './i18n'; import { Book } from './i18n/models'; @@ -54,10 +55,11 @@ export default class PassageReference /** Builds the passage matching regular expression. */ static get regExp(): RegExp { + const books = getBooksByLanguage(); let regExpString = '^\\-\\- ?('; - regExpString += I18N.EN.BOOKS.map( - (b) => `${b.name}|${b.aliases.join('|')}` - ).join('|'); + regExpString += books + .map((b) => `${b.name}|${b.aliases.join('|')}`) + .join('|'); regExpString += ') ?(\\d{1,3}(?::\\d{1,3})?' + '(?: ?\\- ?\\d{1,3}(?::\\d{1,3})?)?)' + @@ -152,8 +154,9 @@ export default class PassageReference /** Retrieves a book based on its alias. */ private static getBook(alias: string): Book | undefined { + const books = getBooksByLanguage(); alias = alias.toLowerCase(); - return I18N.EN.BOOKS.find((book) => { + return books.find((book) => { const aliases = book.aliases.map((a) => a.toLowerCase()); if (book.name.toLowerCase() === alias) return book; if (aliases.includes(alias)) return book; @@ -207,6 +210,16 @@ export default class PassageReference } } +function getBooksByLanguage(): Book[] { + switch (getLanguage()) { + case 'de': + return I18N.DE.BOOKS; + case 'en': + default: + return I18N.EN.BOOKS; + } +} + export enum PassageFormat { Manuscript = 'manuscript', Paragraph = 'paragraph', diff --git a/src/passage-suggest.ts b/src/passage-suggest.ts index 2040e42..6288087 100644 --- a/src/passage-suggest.ts +++ b/src/passage-suggest.ts @@ -17,8 +17,9 @@ import LocalBibleRefSettings, { QuoteReferencePosition } from './settings'; import { I18N } from './i18n'; export default class PassageSuggest extends EditorSuggest { - private settings: LocalBibleRefSettings; - private settingsNotConfiguredText = ''; + private readonly settings: LocalBibleRefSettings; + private readonly settingsNotConfiguredText: string; + private noSettingsNotice: Notice; constructor(app: App, settings: LocalBibleRefSettings) { @@ -55,8 +56,8 @@ export default class PassageSuggest extends EditorSuggest { return null; } - // min ref length is 6 ('--gen1') - if (cursor.ch < 6) return null; + // min ref length is 5 ('--ex1') + if (cursor.ch < 5) return null; // must be a passage ref const isPassage = PassageReference.regExp.test(line); @@ -292,10 +293,11 @@ export default class PassageSuggest extends EditorSuggest { /** Generates an excerpt for the suggestion. */ private generateExcerpt(text: string): string { text = text.split(/<\/sup>/, 2)[1]; - text = text.replace(/(?:\d+<\/sup>|> |- )/g, ''); + text = text.replace(/\d+<\/sup>/g, ''); + text = text.replace(/^(?:> |- )/gm, ''); text = text.replace( - /Lord<\/span>/g, - 'Lord' + /([^<]+)<\/span>/g, + '$1' ); text = text.replace(/\n/g, ' '); text = text.replace(/ {2,}/g, ' ');