12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- '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);
- });
- });
- });
- });
|