Skip to content

Commit f64abf8

Browse files
committed
fix(html-format): collapsed span breaks block embed
1 parent f6c1991 commit f64abf8

5 files changed

Lines changed: 63 additions & 71 deletions

File tree

src/lib/data-conversion/branch-to-x/branch-to-html-element.spec.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,22 @@ describe('branch-to-html-element', () => {
3434
nodeId: n1,
3535
mode: 'copy',
3636
};
37-
const text = `<span data-section="1"/>1a
37+
const text = `<span data-section="1"></span>1a
3838
1b
3939
40-
<span data-section="1.1"/>1.1
40+
<span data-section="1.1"></span>1.1
4141
42-
<span data-section="1.1.1"/>1.1.1
42+
<span data-section="1.1.1"></span>1.1.1
4343
44-
<span data-section="1.1.2"/>1.1.2
44+
<span data-section="1.1.2"></span>1.1.2
4545
46-
<span data-section="1.1.2.1"/>1.1.2.1
46+
<span data-section="1.1.2.1"></span>1.1.2.1
4747
48-
<span data-section="1.2"/>1.2
48+
<span data-section="1.2"></span>1.2
4949
50-
<span data-section="1.2.1"/>1.2.1
50+
<span data-section="1.2.1"></span>1.2.1
5151
52-
<span data-section="1.2.2"/>1.2.2`;
52+
<span data-section="1.2.2"></span>1.2.2`;
5353
expect(branchToHtmlElement([branch])).toEqual(text);
5454
});
5555
test('multiple branches', () => {
@@ -89,17 +89,17 @@ describe('branch-to-html-element', () => {
8989
mode: 'copy',
9090
},
9191
] as ClipboardBranch[];
92-
const text = `<span data-section="1"/>1
92+
const text = `<span data-section="1"></span>1
9393
94-
<span data-section="1.1"/>1.1
94+
<span data-section="1.1"></span>1.1
9595
96-
<span data-section="1.2"/>1.2
96+
<span data-section="1.2"></span>1.2
9797
98-
<span data-section="2"/>2
98+
<span data-section="2"></span>2
9999
100-
<span data-section="2.1"/>2.1
100+
<span data-section="2.1"></span>2.1
101101
102-
<span data-section="2.2"/>2.2`;
102+
<span data-section="2.2"></span>2.2`;
103103
expect(branchToHtmlElement(input)).toEqual(text);
104104
});
105105
});

src/lib/data-conversion/json-to-x/json-to-html-element.spec.ts

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { describe, expect, it } from 'vitest';
22
import { TreeNode } from 'src/lib/data-conversion/x-to-json/columns-to-json';
3-
import {
4-
collapsedSpanMarker,
5-
expandedSpanMarker,
6-
} from 'src/lib/data-conversion/helpers/html-element-marker/collapsed-span-marker';
3+
import { expandedSpanMarker } from 'src/lib/data-conversion/helpers/html-element-marker/collapsed-span-marker';
74
import { jsonToHtmlElement } from 'src/lib/data-conversion/json-to-x/json-to-html-element';
85
import { ginkgo_welcome } from 'src/lib/data-conversion/test-data/ginkgo_welcome';
96
import { ginkgo_academic_paper } from 'src/lib/data-conversion/test-data/ginkgo_acedemic_paper';
@@ -21,9 +18,9 @@ describe('json to html element', () => {
2118
},
2219
];
2320
const output = [
24-
collapsedSpanMarker('', 1) + 'one',
21+
expandedSpanMarker('', 1) + 'one',
2522
'',
26-
collapsedSpanMarker('1', 1) + 'one > one',
23+
expandedSpanMarker('1', 1) + 'one > one',
2724
];
2825
expect(jsonToHtmlElement(input)).toEqual(output.join('\n'));
2926
});
@@ -53,17 +50,17 @@ describe('json to html element', () => {
5350
},
5451
];
5552
const output = [
56-
collapsedSpanMarker('', 1) + 'one',
53+
expandedSpanMarker('', 1) + 'one',
5754
'',
58-
collapsedSpanMarker('1', 1) + 'one > one',
55+
expandedSpanMarker('1', 1) + 'one > one',
5956
'',
60-
collapsedSpanMarker('1.1', 1) + 'one > one > one',
57+
expandedSpanMarker('1.1', 1) + 'one > one > one',
6158
'',
62-
collapsedSpanMarker('', 2) + 'two',
59+
expandedSpanMarker('', 2) + 'two',
6360
'',
64-
collapsedSpanMarker('2', 1) + 'two > one',
61+
expandedSpanMarker('2', 1) + 'two > one',
6562
'',
66-
collapsedSpanMarker('2.1', 1) + 'two > one > one',
63+
expandedSpanMarker('2.1', 1) + 'two > one > one',
6764
];
6865
expect(jsonToHtmlElement(input)).toEqual(output.join('\n'));
6966
});
@@ -79,16 +76,16 @@ describe('json to html element', () => {
7976
];
8077

8178
const output = [
82-
collapsedSpanMarker('', 1) + '1a',
79+
expandedSpanMarker('', 1) + '1a',
8380
'1b',
8481
'',
85-
collapsedSpanMarker('1', 1) + '1.1a',
82+
expandedSpanMarker('1', 1) + '1.1a',
8683
'1.1b',
8784
'',
88-
collapsedSpanMarker('', 2) + '2a',
85+
expandedSpanMarker('', 2) + '2a',
8986
'2b',
9087
'',
91-
collapsedSpanMarker('', 3) + '3',
88+
expandedSpanMarker('', 3) + '3',
9289
];
9390
expect(jsonToHtmlElement(input)).toEqual(output.join('\n'));
9491
});

src/lib/data-conversion/json-to-x/json-to-html-element.ts

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { TreeNode } from 'src/lib/data-conversion/x-to-json/columns-to-json';
22
import { level } from 'src/lib/data-conversion/helpers/html-comment-marker/create-html-comment-marker';
3-
import {
4-
collapsedSpanMarker,
5-
expandedSpanMarker,
6-
} from 'src/lib/data-conversion/helpers/html-element-marker/collapsed-span-marker';
3+
import { expandedSpanMarker } from 'src/lib/data-conversion/helpers/html-element-marker/collapsed-span-marker';
74

85
export const jsonToHtmlElement = (
96
tree: TreeNode[],
@@ -19,32 +16,30 @@ export const jsonToHtmlElement = (
1916
let content = node.content.trimStart();
2017

2118
const expandedSpan = expandedSpanMarker(parentNumber, index);
22-
if (content.match(/^#+ /)) {
23-
// an additional '\n' is needed as a workaround for a bug in obsidian
19+
if (/^#+ /.test(content)) {
2420
content = `${expandedSpan}\n${content}`;
25-
} else if (content.match(/^#[^\s#\uFEFF\u200B]+/)) {
21+
} else if (/^#[^\s#\uFEFF\u200B]+/.test(content)) {
2622
content = `${expandedSpan}\n${content}`;
2723
} else if (content.startsWith('>')) {
2824
content = `${expandedSpan}\n${content}`;
29-
} else if (content.match(/^[-*+]\s\[.\]\s/)) {
25+
} else if (/^[-*+]\s\[.\]\s/.test(content)) {
3026
// tasks
3127
content = `${expandedSpan}\n${content}`;
32-
} else if (content.match(/^[-*+]\s/)) {
28+
} else if (/^[-*+]\s/.test(content)) {
3329
content = `${expandedSpan}\n${content}`;
34-
} else if (content.match(/^\d+\.\s/)) {
30+
} else if (/^\d+\.\s/.test(content)) {
3531
// numbered list
3632
content = `${expandedSpan}\n${content}`;
3733
} else if (content.startsWith('```')) {
3834
content = `${expandedSpan}\n${content}`;
3935
} else if (content.startsWith('|')) {
4036
// table
4137
content = `${expandedSpan}\n\n${content}`;
42-
} else if (content.startsWith('[[')) {
38+
} else if (/^!?\[\[/.test(content)) {
4339
// wikilink
4440
content = `${expandedSpan}\n${content}`;
4541
} else {
46-
const collapsedSpan = collapsedSpanMarker(parentNumber, index);
47-
content = `${collapsedSpan}${content}`;
42+
content = `${expandedSpan}${content}`;
4843
}
4944

5045
text += content;

src/lib/data-conversion/test-data/ginkgo_acedemic_paper.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -718,27 +718,27 @@ Instead of "Problem Description", be direct: "The problem is that X doesn't do Y
718718
<span data-section="1.1.1.1.1"></span>
719719
# Introduction
720720
721-
<span data-section="1.1.1.1.2"/>[You can write your actual paper here in this column. Then choosing "Export column 5" to Word or Markdown will help you move it to your final platform.]
721+
<span data-section="1.1.1.1.2"></span>[You can write your actual paper here in this column. Then choosing "Export column 5" to Word or Markdown will help you move it to your final platform.]
722722
723-
<span data-section="1.1.1.1.2.1"/>You can keep notes & comments here.
723+
<span data-section="1.1.1.1.2.1"></span>You can keep notes & comments here.
724724
725-
<span data-section="1.1.1.1.3"/>...
725+
<span data-section="1.1.1.1.3"></span>...
726726
727-
<span data-section="1.1.1.1.4"/>...
727+
<span data-section="1.1.1.1.4"></span>...
728728
729729
<span data-section="1.1.1.2"></span>
730730
### Intro - Assertive Statement 2
731731
732-
<span data-section="1.1.1.2.1"/>...
732+
<span data-section="1.1.1.2.1"></span>...
733733
734-
<span data-section="1.1.1.2.2"/>...
734+
<span data-section="1.1.1.2.2"></span>...
735735
736736
<span data-section="1.1.1.3"></span>
737737
### Intro - Assertive Statement 3
738738
739-
<span data-section="1.1.1.3.1"/>...
739+
<span data-section="1.1.1.3.1"></span>...
740740
741-
<span data-section="1.1.1.3.2"/>...
741+
<span data-section="1.1.1.3.2"></span>...
742742
743743
<span data-section="1.1.2"></span>
744744
## Materials & Methods - "The Characters"
@@ -757,15 +757,15 @@ Remember that these are cards, so you can drag and drop them to rearrange if nec
757757
<span data-section="1.1.2.1.2"></span>
758758
### Method A
759759
760-
<span data-section="1.1.2.1.2.1"/>Some other note. For example:
760+
<span data-section="1.1.2.1.2.1"></span>Some other note. For example:
761761
762762
#Xusheng , make sure you include the voltage you used."
763763
764764
(the # syntax makes it easier to search for & filter comments directed at a specific person).
765765
766-
<span data-section="1.1.2.1.3"/>...
766+
<span data-section="1.1.2.1.3"></span>...
767767
768-
<span data-section="1.1.2.1.4"/>...
768+
<span data-section="1.1.2.1.4"></span>...
769769
770770
<span data-section="1.1.2.2"></span>
771771
## Method B
@@ -774,9 +774,9 @@ More details on the method, experiment design, etc.
774774
<span data-section="1.1.2.2.1"></span>
775775
### Method B...
776776
777-
<span data-section="1.1.2.2.2"/>...
777+
<span data-section="1.1.2.2.2"></span>...
778778
779-
<span data-section="1.1.2.2.3"/>...
779+
<span data-section="1.1.2.2.3"></span>...
780780
781781
<span data-section="1.1.2.3"></span>
782782
## Method C
@@ -790,9 +790,9 @@ If you need a checklist to make sure you address all points, go ahead:
790790
<span data-section="1.1.2.3.1"></span>
791791
### Method C
792792
793-
<span data-section="1.1.2.3.2"/>...
793+
<span data-section="1.1.2.3.2"></span>...
794794
795-
<span data-section="1.1.2.3.3"/>...
795+
<span data-section="1.1.2.3.3"></span>...
796796
797797
<span data-section="1.1.3"></span>
798798
## Results
@@ -811,16 +811,16 @@ You can add figures if you'd like:
811811
<span data-section="1.1.3.1.1"></span>
812812
# Results
813813
814-
<span data-section="1.1.3.1.2"/>Final text for results goes here
814+
<span data-section="1.1.3.1.2"></span>Final text for results goes here
815815
816-
<span data-section="1.1.3.1.3"/>...
816+
<span data-section="1.1.3.1.3"></span>...
817817
818-
<span data-section="1.1.3.1.4"/>...
818+
<span data-section="1.1.3.1.4"></span>...
819819
820-
<span data-section="1.1.3.2"/>Remember these are **cards** so you can rearrange your results at will.
820+
<span data-section="1.1.3.2"></span>Remember these are **cards** so you can rearrange your results at will.
821821
Any subcards will follow.
822822
823-
<span data-section="1.1.3.2.1"/>Other results
823+
<span data-section="1.1.3.2.1"></span>Other results
824824
825825
<span data-section="1.1.4"></span>
826826
## Discussion
@@ -842,11 +842,11 @@ Expand on your conclusion summary, and add more details to it.
842842
<span data-section="1.1.5.1.1"></span>
843843
# Conclusion
844844
845-
<span data-section="1.1.5.1.2"/>Final text for conclusion goes here
845+
<span data-section="1.1.5.1.2"></span>Final text for conclusion goes here
846846
847-
<span data-section="1.1.5.1.3"/>in as many
847+
<span data-section="1.1.5.1.3"></span>in as many
848848
849-
<span data-section="1.1.5.1.4"/>cards as you like.
849+
<span data-section="1.1.5.1.4"></span>cards as you like.
850850
851851
<span data-section="1.1.6"></span>
852852
## References
@@ -868,11 +868,11 @@ Or you can simply list your references here:
868868
<span data-section="1.1.6.1.1"></span>
869869
# References
870870
871-
<span data-section="1.1.6.1.2"/>Some reference by J. Doe
871+
<span data-section="1.1.6.1.2"></span>Some reference by J. Doe
872872
873-
<span data-section="1.1.6.1.2.1"/>Notes on this reference.
873+
<span data-section="1.1.6.1.2.1"></span>Notes on this reference.
874874
875-
<span data-section="1.1.6.1.3"/>Some other reference
875+
<span data-section="1.1.6.1.3"></span>Some other reference
876876
877877
<span data-section="1.2"></span>
878878
## How to use this template

src/lib/data-conversion/test-data/html-element-conflicting-elements.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const mdWithHtmlElement = `<span data-section="1"></span>
77
- 2
88
- 3
99
10-
<span data-section="3"/>text
10+
<span data-section="3"></span>text
1111
1212
<span data-section="4"></span>
1313
\`\`\`css
@@ -29,7 +29,7 @@ display: none;
2929
> [!info]
3030
> information
3131
32-
<span data-section="8"/><!--comment -->`;
32+
<span data-section="8"></span><!--comment -->`;
3333

3434
const mdWithHtmlComment = `
3535
<!--section: 1-->

0 commit comments

Comments
 (0)