diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-12-01 10:40:09 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-12-01 10:40:09 +0900 |
| commit | fe707f88a47e80a52e1ba54a1c8ae873061c6a62 (patch) | |
| tree | 222a0c14c3a77ba6f6d15653ce98eb912627c3fc /src/mfm/parse.ts | |
| parent | :art: (diff) | |
| download | misskey-fe707f88a47e80a52e1ba54a1c8ae873061c6a62.tar.gz misskey-fe707f88a47e80a52e1ba54a1c8ae873061c6a62.tar.bz2 misskey-fe707f88a47e80a52e1ba54a1c8ae873061c6a62.zip | |
[MFM] Better MFM parsing
Diffstat (limited to 'src/mfm/parse.ts')
| -rw-r--r-- | src/mfm/parse.ts | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/src/mfm/parse.ts b/src/mfm/parse.ts index ee434d8dd9..01c8cc7d7a 100644 --- a/src/mfm/parse.ts +++ b/src/mfm/parse.ts @@ -26,45 +26,6 @@ export default (source: string): Node[] => { nodes = concatText(nodes); concatTextRecursive(nodes); - function getBeforeTextNode(node: Node): Node { - if (node == null) return null; - if (node.name == 'text') return node; - if (node.children) return getBeforeTextNode(node.children[node.children.length - 1]); - return null; - } - - function getAfterTextNode(node: Node): Node { - if (node == null) return null; - if (node.name == 'text') return node; - if (node.children) return getBeforeTextNode(node.children[0]); - return null; - } - - function isBlockNode(node: Node): boolean { - return ['blockCode', 'center', 'quote', 'title'].includes(node.name); - } - - /** - * ブロック要素の前後にある改行を削除します - * (ブロック要素自体が改行の役割を果たすため、余計に改行されてしまう) - * @param nodes - */ - const removeNeedlessLineBreaks = (nodes: Node[]) => { - nodes.forEach((node, i) => { - if (node.children) removeNeedlessLineBreaks(node.children); - if (isBlockNode(node)) { - const before = getBeforeTextNode(nodes[i - 1]); - const after = getAfterTextNode(nodes[i + 1]); - if (before && before.props.text.endsWith('\n')) { - before.props.text = before.props.text.substring(0, before.props.text.length - 1); - } - if (after && after.props.text.startsWith('\n')) { - after.props.text = after.props.text.substring(1); - } - } - }); - }; - const removeEmptyTextNodes = (nodes: Node[]) => { nodes.forEach(n => { if (n.children) { @@ -74,8 +35,6 @@ export default (source: string): Node[] => { return nodes.filter(n => !(n.name == 'text' && n.props.text == '')); }; - removeNeedlessLineBreaks(nodes); - nodes = removeEmptyTextNodes(nodes); return nodes; |