3
3
local stub = require (' luassert.stub' )
4
4
local util = require (' tests.util' )
5
5
6
- --- @param start_row integer
7
- --- @param end_row integer
8
- --- @param col integer
6
+ --- @param converter string
7
+ --- @param responses table<string , string>
8
+ local function set_responses (converter , responses )
9
+ stub .new (vim .fn , ' executable' , function (expr )
10
+ assert .are .same (converter , expr )
11
+ return 1
12
+ end )
13
+ stub .new (vim .fn , ' system' , function (cmd , input )
14
+ assert .are .same (converter , cmd )
15
+ local result = responses [input ]
16
+ assert .truthy (result , ' No output for: ' .. input )
17
+ return result
18
+ end )
19
+ end
20
+
21
+ --- @param row integer
9
22
--- @param lines string[]
10
23
--- @return render.md.MarkInfo
11
- local function latex (start_row , end_row , col , lines )
24
+ local function latex (row , lines )
12
25
local virt_lines = vim .iter (lines )
13
26
:map (function (line )
14
27
return { { line , util .hl (' Math' ) } }
15
28
end )
16
29
:totable ()
17
30
--- @type render.md.MarkInfo
18
31
return {
19
- row = { start_row , end_row },
20
- col = { 0 , col },
32
+ row = { row },
33
+ col = { 0 },
21
34
virt_lines = virt_lines ,
22
35
virt_lines_above = true ,
23
36
}
24
37
end
25
38
26
- --- @param converter string
27
- --- @param responses table<string , string>
28
- local function set_responses (converter , responses )
29
- stub .new (vim .fn , ' executable' , function (expr )
30
- assert .are .same (converter , expr )
31
- return 1
32
- end )
33
- stub .new (vim .fn , ' system' , function (cmd , input )
34
- assert .are .same (converter , cmd )
35
- local result = responses [input ]
36
- assert .truthy (result , ' No output for: ' .. input )
37
- return result
38
- end )
39
+ --- @param lines string[]
40
+ --- @param prefix string
41
+ --- @param suffix string
42
+ --- @return string
43
+ local function text (lines , prefix , suffix )
44
+ return prefix .. table.concat (lines , ' \n ' ) .. suffix
39
45
end
40
46
41
47
describe (' latex.md' , function ()
42
48
it (' default' , function ()
43
- local in_inline = ' $\\ sqrt{3x-1}+(1+x)^2$'
44
- local out_inline = ' √(3x-1)+(1+x)^2'
45
- local in_block = { ' f(x,y) = x + \\ sqrt{y}' , ' f(x,y) = \\ sqrt{y} + \\ frac{x^2}{4y}' }
46
- local out_block = { ' f(x,y) = x + √(y)' , ' f(x,y) = √(y) + x^2/4y' }
49
+ local inline = {
50
+ raw = { ' $\\ sqrt{3x-1}+(1+x)^2$' },
51
+ out = { ' √(3x-1)+(1+x)^2' },
52
+ }
53
+ local block = {
54
+ raw = {
55
+ ' f(x,y) = x + \\ sqrt{y}' ,
56
+ ' f(x,y) = \\ sqrt{y} + \\ frac{x^2}{4y}' ,
57
+ },
58
+ out = {
59
+ ' f(x,y) = x + √(y)' ,
60
+ ' f(x,y) = √(y) + x^2/4y' ,
61
+ },
62
+ }
47
63
48
64
set_responses (' latex2text' , {
49
- [in_inline ] = out_inline .. ' \n ' ,
50
- [' $$\n ' .. table.concat ( in_block , ' \n ' ) .. ' \n $$' ] = ' \n ' .. table.concat ( out_block , ' \n ' ) .. ' \n\n ' ,
65
+ [text ( inline . raw , ' ' , ' ' ) ] = text ( inline . out , ' ' , ' \n ' ) ,
66
+ [text ( block . raw , ' $$\n ' , ' \n $$' ) ] = text ( block . out , ' \n ' , ' \n\n ' ) ,
51
67
})
52
68
util .setup (' demo/latex.md' )
53
69
@@ -56,21 +72,21 @@ describe('latex.md', function()
56
72
vim .list_extend (expected , util .heading (row :get (), 1 ))
57
73
58
74
vim .list_extend (expected , {
59
- latex (row :increment (2 ), 2 , 21 , { out_inline } ),
60
- latex (row :increment (2 ), 7 , 2 , out_block ),
75
+ latex (row :increment (2 ), inline . out ),
76
+ latex (row :increment (2 ), block . out ),
61
77
})
62
78
63
79
util .assert_view (expected , {
64
80
' 1 LaTeX' ,
65
81
' 2' ,
66
- ' ' .. out_inline ,
67
- ' 3 ' .. in_inline ,
82
+ ' ' .. inline . out [ 1 ] ,
83
+ ' 3 ' .. inline . raw [ 1 ] ,
68
84
' 4' ,
69
- ' ' .. out_block [1 ],
70
- ' ' .. out_block [2 ],
85
+ ' ' .. block . out [1 ],
86
+ ' ' .. block . out [2 ],
71
87
' 5 $$' ,
72
- ' 6 ' .. in_block [1 ],
73
- ' 7 ' .. in_block [2 ],
88
+ ' 6 ' .. block . raw [1 ],
89
+ ' 7 ' .. block . raw [2 ],
74
90
' 8 $$' ,
75
91
})
76
92
end )
0 commit comments