lobe-chat

Форк
0
38 строк · 1.1 Кб
1
import { readFileSync, writeFileSync } from 'node:fs';
2
import remarkGfm from 'remark-gfm';
3
import remarkParse from 'remark-parse';
4
import { unified } from 'unified';
5
import { visit } from 'unist-util-visit';
6

7
import { SPLIT } from './const';
8

9
export const updateDocs = (path: string, content: string) => {
10
  const md = readFileSync(path, 'utf8');
11
  const mds = md.split(SPLIT);
12
  mds[1] = [' ', content, ' '].join('\n\n');
13
  const result = mds.join(SPLIT);
14
  writeFileSync(path, result, 'utf8');
15
};
16

17
export const convertMarkdownToMdast = async (md: string) => {
18
  // @ts-ignore
19
  return unified().use(remarkParse).use(remarkGfm).parse(md.trim());
20
};
21

22
export const getTitle = async (path: string) => {
23
  const md = readFileSync(path, 'utf8');
24
  const mdast: any = await convertMarkdownToMdast(md);
25

26
  let title = '';
27
  visit(mdast, 'heading', (node) => {
28
    if (node.depth !== 1) return;
29
    visit(node, 'text', (heading) => {
30
      title += heading.value;
31
    });
32
  });
33
  return title;
34
};
35

36
export const genMdLink = (title: string, url: string) => {
37
  return `[${title}](${url})`;
38
};
39

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.