markdown-table-util-for-view.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { MarkdownTable } from '@growi/editor';
  2. export const getMarkdownTableFromLine = (
  3. markdown: string,
  4. bol: number,
  5. eol: number,
  6. ): MarkdownTable => {
  7. const tableLines = markdown
  8. .split(/\r\n|\r|\n/)
  9. .slice(bol - 1, eol)
  10. .join('\n');
  11. return MarkdownTable.fromMarkdownString(tableLines);
  12. };
  13. /**
  14. * return markdown where the markdown table specified by line number params is replaced to the markdown table specified by table param
  15. */
  16. export const replaceMarkdownTableInMarkdown = (
  17. table: MarkdownTable,
  18. markdown: string,
  19. beginLineNumber: number,
  20. endLineNumber: number,
  21. ): string => {
  22. const splitMarkdown = markdown.split(/\r\n|\r|\n/);
  23. const markdownBeforeTable = splitMarkdown.slice(0, beginLineNumber - 1);
  24. const markdownAfterTable = splitMarkdown.slice(endLineNumber);
  25. let newMarkdown = '';
  26. if (markdownBeforeTable.length > 0) {
  27. newMarkdown += `${markdownBeforeTable.join('\n')}\n`;
  28. }
  29. newMarkdown += table;
  30. if (markdownAfterTable.length > 0) {
  31. newMarkdown += `\n${markdownAfterTable.join('\n')}`;
  32. }
  33. return newMarkdown;
  34. };