summaryrefslogtreecommitdiff
path: root/src/mfm/parse.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-12-01 10:40:09 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-12-01 10:40:09 +0900
commitfe707f88a47e80a52e1ba54a1c8ae873061c6a62 (patch)
tree222a0c14c3a77ba6f6d15653ce98eb912627c3fc /src/mfm/parse.ts
parent:art: (diff)
downloadmisskey-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.ts41
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;