Make parseReferences() parse its own references
This commit is contained in:
parent
dafecd9582
commit
19e41958a4
|
@ -46,43 +46,46 @@ export function sortWords(render) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseReferences(detailsMarkdown, references) {
|
export function parseReferences(detailsMarkdown) {
|
||||||
new Set(references).forEach(reference => {
|
const references = detailsMarkdown.match(/\{\{.+?\}\}/g);
|
||||||
let wordToFind = reference.replace(/\{\{|\}\}/g, '');
|
if (references && Array.isArray(references)) {
|
||||||
let homonymn = 0;
|
new Set(references).forEach(reference => {
|
||||||
|
let wordToFind = reference.replace(/\{\{|\}\}/g, '');
|
||||||
|
let homonymn = 0;
|
||||||
|
|
||||||
if (wordToFind.includes(':')) {
|
if (wordToFind.includes(':')) {
|
||||||
const separator = wordToFind.indexOf(':');
|
const separator = wordToFind.indexOf(':');
|
||||||
homonymn = wordToFind.substr(separator + 1);
|
homonymn = wordToFind.substr(separator + 1);
|
||||||
wordToFind = wordToFind.substring(0, separator);
|
wordToFind = wordToFind.substring(0, separator);
|
||||||
if (homonymn && homonymn.trim()
|
if (homonymn && homonymn.trim()
|
||||||
&& !isNaN(parseInt(homonymn.trim())) && parseInt(homonymn.trim()) > 0) {
|
&& !isNaN(parseInt(homonymn.trim())) && parseInt(homonymn.trim()) > 0) {
|
||||||
homonymn = parseInt(homonymn.trim());
|
homonymn = parseInt(homonymn.trim());
|
||||||
} else {
|
} else {
|
||||||
homonymn = false;
|
homonymn = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let existingWordId = false;
|
let existingWordId = false;
|
||||||
const homonymnIndexes = getHomonymnIndexes({ name: wordToFind, wordId: -1 });
|
const homonymnIndexes = getHomonymnIndexes({ name: wordToFind, wordId: -1 });
|
||||||
|
|
||||||
if (homonymn !== false && homonymn > 0) {
|
if (homonymn !== false && homonymn > 0) {
|
||||||
if (typeof homonymnIndexes[homonymn - 1] !== 'undefined') {
|
if (typeof homonymnIndexes[homonymn - 1] !== 'undefined') {
|
||||||
existingWordId = window.currentDictionary.words[homonymnIndexes[homonymn - 1]].wordId;
|
existingWordId = window.currentDictionary.words[homonymnIndexes[homonymn - 1]].wordId;
|
||||||
|
}
|
||||||
|
} else if (homonymn !== false) {
|
||||||
|
existingWordId = wordExists(wordToFind, true);
|
||||||
}
|
}
|
||||||
} else if (homonymn !== false) {
|
|
||||||
existingWordId = wordExists(wordToFind, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (existingWordId !== false) {
|
if (existingWordId !== false) {
|
||||||
if (homonymn < 1 && homonymnIndexes.length > 0) {
|
if (homonymn < 1 && homonymnIndexes.length > 0) {
|
||||||
homonymn = 1;
|
homonymn = 1;
|
||||||
|
}
|
||||||
|
const homonymnSubHTML = homonymn > 0 ? '<sub>' + homonymn.toString() + '</sub>' : '';
|
||||||
|
const wordMarkdownLink = `[${wordToFind}${homonymnSubHTML}](#${existingWordId})`;
|
||||||
|
detailsMarkdown = detailsMarkdown.replace(new RegExp(reference, 'g'), wordMarkdownLink);
|
||||||
}
|
}
|
||||||
const homonymnSubHTML = homonymn > 0 ? '<sub>' + homonymn.toString() + '</sub>' : '';
|
});
|
||||||
const wordMarkdownLink = `[${wordToFind}${homonymnSubHTML}](#${existingWordId})`;
|
}
|
||||||
detailsMarkdown = detailsMarkdown.replace(new RegExp(reference, 'g'), wordMarkdownLink);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return detailsMarkdown;
|
return detailsMarkdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue