mirror of
https://gitee.com/ElemeFE/element.git
synced 2024-11-30 03:07:36 +08:00
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
'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'
|
|
};
|
|
|
|
['zh-CN', 'en-US', 'es'].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);
|
|
});
|
|
});
|
|
});
|
|
});
|