'use strict'; const fs = require('fs'); const path = require('path'); const algoliasearch = require('algoliasearch'); const slugify = require('transliteration').slugify; const key = require('./algolia-key'); const client = algoliasearch('4C63BTGP6S', key); const langs = { 'zh-CN': 'element-zh', 'en-US': 'element-en', 'es': 'element-es', 'fr-FR': 'element-fr' }; ['zh-CN', 'en-US', 'es', 'fr-FR'].forEach(lang => { const indexName = langs[lang]; const index = client.initIndex(indexName); index.clearIndex(err => { if (err) return; fs.readdir(path.resolve(__dirname, `../../examples/docs/${ lang }`), (err, files) => { if (err) return; let indices = []; files.forEach(file => { const component = file.replace('.md', ''); const content = fs.readFileSync(path.resolve(__dirname, `../../examples/docs/${ lang }/${ file }`), 'utf8'); const matches = content .replace(/:::[\s\S]*?:::/g, '') .replace(/```[\s\S]*?```/g, '') .match(/#{2,4}[^#]*/g) .map(match => match.replace(/\n+/g, '\n').split('\n').filter(part => !!part)) .map(match => { const length = match.length; if (length > 2) { const desc = match.slice(1, length).join(''); return [match[0], desc]; } return match; }); indices = indices.concat(matches.map(match => { const isComponent = match[0].indexOf('###') < 0; const title = match[0].replace(/#{2,4}/, '').trim(); const index = { component, title }; index.ranking = isComponent ? 2 : 1; index.anchor = slugify(title); index.content = (match[1] || title).replace(/<[^>]+>/g, ''); return index; })); }); index.addObjects(indices, (err, res) => { console.log(err, res); }); }); }); });