mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-03 07:28:44 +02:00
feat: refactor markup to markdown utils (#8134)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
@@ -19,10 +19,10 @@ import {
|
||||
MarkupNode,
|
||||
MarkupNodeType,
|
||||
jsonToMarkup,
|
||||
MarkdownState,
|
||||
traverseAllMarks,
|
||||
traverseMarkupNode
|
||||
traverseNode
|
||||
} from '@hcengineering/text'
|
||||
import { MarkdownState } from '@hcengineering/text-markdown'
|
||||
import { markdownToMarkup, markupToMarkdown, parseMessageMarkdown, serializeMessage } from '..'
|
||||
|
||||
describe('server', () => {
|
||||
@@ -788,8 +788,9 @@ A list of closed updated issues`
|
||||
const msg = parseMessageMarkdown(t1, 'ref://', 'http://', 'http://')
|
||||
|
||||
const nodes = []
|
||||
traverseMarkupNode(msg, (node) => {
|
||||
traverseNode(msg, (node) => {
|
||||
nodes.push(node)
|
||||
return true
|
||||
})
|
||||
expect(nodes.length).toEqual(5)
|
||||
const marks = []
|
||||
|
||||
@@ -13,15 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import {
|
||||
MarkupNode,
|
||||
jsonToMarkup,
|
||||
markupToJSON,
|
||||
MarkdownParser,
|
||||
storeNodes,
|
||||
storeMarks,
|
||||
MarkdownState
|
||||
} from '@hcengineering/text'
|
||||
import { MarkupNode, jsonToMarkup, markupToJSON, htmlToJSON } from '@hcengineering/text'
|
||||
import { MarkdownParser, storeNodes, storeMarks, MarkdownState } from '@hcengineering/text-markdown'
|
||||
import { GithubKit } from './extensions'
|
||||
import { hasHulyLink, hasHulyLinkText } from '../sync/guest'
|
||||
|
||||
@@ -42,8 +35,12 @@ export function parseMessageMarkdown (
|
||||
}
|
||||
})
|
||||
]
|
||||
const parser = new MarkdownParser(extensions, refUrl, imageUrl)
|
||||
return parser.parse(message ?? '')
|
||||
const htmlParser = (html: string): MarkupNode => {
|
||||
return htmlToJSON(html, extensions)
|
||||
}
|
||||
const parser = new MarkdownParser({ refUrl, imageUrl, htmlParser })
|
||||
const json = parser.parse(message ?? '')
|
||||
return json
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//
|
||||
|
||||
import { Branding, generateUuid, PersonUuid, TxOperations, WorkspaceIds, WorkspaceUuid } from '@hcengineering/core'
|
||||
import { MarkupMarkType, MarkupNode, MarkupNodeType, traverseMarkupNode } from '@hcengineering/text'
|
||||
import { MarkupMarkType, MarkupNode, MarkupNodeType, traverseNode } from '@hcengineering/text'
|
||||
import { getPublicLink } from '@hcengineering/server-guest-resources'
|
||||
import { Task } from '@hcengineering/task'
|
||||
import { generateToken } from '@hcengineering/server-token'
|
||||
@@ -23,9 +23,9 @@ export function hasHulyLink (href: string, guestLink: string): boolean {
|
||||
export async function stripGuestLink (markdown: MarkupNode): Promise<void> {
|
||||
const toRemove: MarkupNode[] = []
|
||||
|
||||
traverseMarkupNode(markdown, (node) => {
|
||||
traverseNode(markdown, (node) => {
|
||||
if (node.content === undefined) {
|
||||
return
|
||||
return false
|
||||
}
|
||||
const oldLength = node.content.length
|
||||
node.content = node.content.filter((it) => it.type !== MarkupNodeType.subLink)
|
||||
@@ -35,14 +35,18 @@ export async function stripGuestLink (markdown: MarkupNode): Promise<void> {
|
||||
if (node.content.length !== oldLength && node.type === MarkupNodeType.paragraph) {
|
||||
toRemove.push(node)
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
// traverse nodes once again and remove empty parent node
|
||||
traverseMarkupNode(markdown, (node) => {
|
||||
traverseNode(markdown, (node) => {
|
||||
if (node.content === undefined) {
|
||||
return
|
||||
return false
|
||||
}
|
||||
node.content = node.content.filter((it) => !toRemove.includes(it))
|
||||
|
||||
return true
|
||||
})
|
||||
}
|
||||
export async function appendGuestLink (
|
||||
|
||||
@@ -55,7 +55,8 @@ import { LiveQuery } from '@hcengineering/query'
|
||||
import { StorageAdapter } from '@hcengineering/server-core'
|
||||
import { getPublicLinkUrl } from '@hcengineering/server-guest-resources'
|
||||
import task, { ProjectType, TaskType } from '@hcengineering/task'
|
||||
import { MarkupNode, isMarkdownsEquals, jsonToMarkup } from '@hcengineering/text'
|
||||
import { MarkupNode, jsonToMarkup } from '@hcengineering/text'
|
||||
import { isMarkdownsEquals } from '@hcengineering/text-markdown'
|
||||
import tracker from '@hcengineering/tracker'
|
||||
import { User } from '@octokit/webhooks-types'
|
||||
import { App, Octokit } from 'octokit'
|
||||
|
||||
Reference in New Issue
Block a user