@@ -6,45 +6,57 @@ local str = require('render-markdown.core.str')
66--- @field protected config render.md.BufferConfig
77--- @field protected context render.md.Context
88--- @field protected info render.md.NodeInfo
9- --- @field new fun ( marks : render.md.Marks , config : render.md.BufferConfig , context : render.md.Context , info : render.md.NodeInfo ): render.md.Renderer
109--- @field setup fun ( self : render.md.Renderer ): boolean
1110--- @field render fun ( self : render.md.Renderer )
11+ local Base = {}
12+ Base .__index = Base
1213
13- --- @class render.md.render.Util
14- local M = {}
15-
16- --- @param config render.md.BufferConfig
1714--- @param marks render.md.Marks
15+ --- @param config render.md.BufferConfig
16+ --- @param context render.md.Context
17+ --- @param info render.md.NodeInfo
18+ --- @return render.md.Renderer
19+ function Base :new (marks , config , context , info )
20+ local instance = setmetatable ({}, self )
21+ instance .marks = marks
22+ instance .config = config
23+ instance .context = context
24+ instance .info = info
25+ return instance
26+ end
27+
28+ --- @protected
1829--- @param info render.md.NodeInfo
1930--- @param text ? string
2031--- @param highlight string
21- function M .sign (config , marks , info , text , highlight )
22- if not config .sign .enabled or text == nil then
32+ function Base :sign (info , text , highlight )
33+ local sign = self .config .sign
34+ if not sign .enabled or text == nil then
2335 return
2436 end
25- marks :add (false , info .start_row , info .start_col , {
37+ self . marks :add (false , info .start_row , info .start_col , {
2638 end_row = info .end_row ,
2739 end_col = info .end_col ,
2840 sign_text = text ,
29- sign_hl_group = colors .combine (highlight , config . sign .highlight ),
41+ sign_hl_group = colors .combine (highlight , sign .highlight ),
3042 })
3143end
3244
33- --- @param config render.md.BufferConfig
34- --- @param info render.md.NodeInfo
45+ --- @protected
3546--- @param line { [1] : string , [2] : string } []
3647--- @return { [1] : string , [2] : string } []
37- function M .indent_virt_line (config , info , line )
38- if not config .indent .enabled then
48+ function Base :indent_virt_line (line )
49+ local indent = self .config .indent
50+ if not indent .enabled then
3951 return line
4052 end
41- local level = info :level () - 1
53+ local level = self . info :level () - 1
4254 if level <= 0 then
4355 return line
4456 end
45- local indent_line = { str .spaces (config . indent .per_level * level ), ' Normal' }
57+ local indent_line = { str .spaces (indent .per_level * level ), ' Normal' }
4658 table.insert (line , 1 , indent_line )
4759 return line
4860end
4961
50- return M
62+ return Base
0 commit comments