зеркало из https://github.com/github/docs.git
27 строки
1.1 KiB
JavaScript
27 строки
1.1 KiB
JavaScript
// capture h2, h3, and h4 headings
|
|
const headingRegex = /^###?#? (.*?)$/gm
|
|
|
|
// for any translated page, first get corresponding English markdown
|
|
// then get the headings on both the translated and English pageMap
|
|
// finally, create a map of translation:English for all headings on the page
|
|
module.exports = function getEnglishHeadings (page, pageMap) {
|
|
const translatedHeadings = page.markdown.match(headingRegex)
|
|
if (!translatedHeadings) return
|
|
|
|
const englishPage = pageMap[`/en/${page.relativePath.replace(/.md$/, '')}`]
|
|
if (!englishPage) return
|
|
|
|
// FIX there may be bugs if English headings are updated before Crowdin syncs up :/
|
|
const englishHeadings = englishPage.markdown.match(headingRegex)
|
|
if (!englishHeadings) return
|
|
|
|
// select heading text only
|
|
const cleanTranslatedHeadings = translatedHeadings.map(h => h.replace(headingRegex, '$1'))
|
|
const cleanEnglishHeadings = englishHeadings.map(h => h.replace(headingRegex, '$1'))
|
|
|
|
// return a map from translation:English
|
|
return Object.assign(...cleanTranslatedHeadings.map((k, i) => ({
|
|
[k]: cleanEnglishHeadings[i]
|
|
})))
|
|
}
|