Skip to content

Commit 617f9c2

Browse files
chore(refactor): move renders to sub directory based on language
## Details Rather than storing all the render classes in the render folder directly move each one to a sub folder based on the language it is rendering for. - html - html_comment -> comment - html_tag -> tag - markdown - checkbox - code - dash - document - heading - bullet - paragraph - quote - section - table - markdown_inline (uses folder name inline instead of markdown_inline) - code_inline -> code - inline_highlight -> highlight - link - shortcut Other changes: - instead of exposing any fields from `Base` render module, replace the `new` method with `execute` which in addition to calling `setup` also calls `run` if setup returns `true`, return whether `run` was executed as a boolean, for future use - make `run` method `protected` in all render implementations, since it's not only used within `Base:execute`
1 parent fa92c30 commit 617f9c2

22 files changed

+79
-67
lines changed

doc/render-markdown.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*render-markdown.txt* For NVIM v0.11.1 Last change: 2025 May 04
1+
*render-markdown.txt* For NVIM v0.11.1 Last change: 2025 May 05
22

33
==============================================================================
44
Table of Contents *render-markdown-table-of-contents*

lua/render-markdown/handler/html.lua

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ local ts = require('render-markdown.core.ts')
44

55
---@class render.md.handler.buf.Html
66
---@field private query vim.treesitter.Query
7-
---@field private modules table<string, render.md.Render>
7+
---@field private renders table<string, render.md.Render>
88
---@field private context render.md.request.Context
99
local Handler = {}
1010
Handler.__index = Handler
@@ -20,9 +20,9 @@ function Handler.new(buf)
2020
(element) @tag
2121
]]
2222
)
23-
self.modules = {
24-
comment = require('render-markdown.render.html_comment'),
25-
tag = require('render-markdown.render.html_tag'),
23+
self.renders = {
24+
comment = require('render-markdown.render.html.comment'),
25+
tag = require('render-markdown.render.html.tag'),
2626
}
2727
self.context = Context.get(buf)
2828
return self
@@ -36,12 +36,9 @@ function Handler:parse(root)
3636
end
3737
local marks = Marks.new(self.context, true)
3838
self.context.view:nodes(root, self.query, function(capture, node)
39-
local module = self.modules[capture]
40-
assert(module ~= nil, 'unhandled html capture: ' .. capture)
41-
local render = module:new(self.context, marks, node)
42-
if render then
43-
render:run()
44-
end
39+
local render = self.renders[capture]
40+
assert(render ~= nil, 'unhandled html capture: ' .. capture)
41+
render:execute(self.context, marks, node)
4542
end)
4643
return marks:get()
4744
end

lua/render-markdown/handler/markdown.lua

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ local ts = require('render-markdown.core.ts')
44

55
---@class render.md.handler.buf.Markdown
66
---@field private query vim.treesitter.Query
7-
---@field private modules table<string, render.md.Render>
7+
---@field private renders table<string, render.md.Render>
88
---@field private context render.md.request.Context
99
local Handler = {}
1010
Handler.__index = Handler
@@ -16,16 +16,10 @@ function Handler.new(buf)
1616
self.query = ts.parse(
1717
'markdown',
1818
[[
19-
(document) @document
20-
21-
(section) @section
22-
2319
[
24-
(atx_heading)
25-
(setext_heading)
26-
] @heading
27-
28-
(section (paragraph) @paragraph)
20+
(task_list_marker_unchecked)
21+
(task_list_marker_checked)
22+
] @checkbox
2923
3024
(fenced_code_block) @code
3125
@@ -35,29 +29,35 @@ function Handler.new(buf)
3529
(plus_metadata)
3630
] @dash
3731
38-
(list_item) @list
32+
(document) @document
3933
4034
[
41-
(task_list_marker_unchecked)
42-
(task_list_marker_checked)
43-
] @checkbox
35+
(atx_heading)
36+
(setext_heading)
37+
] @heading
38+
39+
(list_item) @list
40+
41+
(section (paragraph) @paragraph)
4442
4543
(block_quote) @quote
4644
45+
(section) @section
46+
4747
(pipe_table) @table
4848
]]
4949
)
50-
self.modules = {
51-
checkbox = require('render-markdown.render.checkbox'),
52-
code = require('render-markdown.render.code'),
53-
dash = require('render-markdown.render.dash'),
54-
document = require('render-markdown.render.document'),
55-
heading = require('render-markdown.render.heading'),
56-
list = require('render-markdown.render.bullet'),
57-
paragraph = require('render-markdown.render.paragraph'),
58-
quote = require('render-markdown.render.quote'),
59-
section = require('render-markdown.render.section'),
60-
table = require('render-markdown.render.table'),
50+
self.renders = {
51+
checkbox = require('render-markdown.render.markdown.checkbox'),
52+
code = require('render-markdown.render.markdown.code'),
53+
dash = require('render-markdown.render.markdown.dash'),
54+
document = require('render-markdown.render.markdown.document'),
55+
heading = require('render-markdown.render.markdown.heading'),
56+
list = require('render-markdown.render.markdown.bullet'),
57+
paragraph = require('render-markdown.render.markdown.paragraph'),
58+
quote = require('render-markdown.render.markdown.quote'),
59+
section = require('render-markdown.render.markdown.section'),
60+
table = require('render-markdown.render.markdown.table'),
6161
}
6262
self.context = Context.get(buf)
6363
return self
@@ -68,12 +68,9 @@ end
6868
function Handler:parse(root)
6969
local marks = Marks.new(self.context, false)
7070
self.context.view:nodes(root, self.query, function(capture, node)
71-
local module = self.modules[capture]
72-
assert(module ~= nil, 'unhandled markdown capture: ' .. capture)
73-
local render = module:new(self.context, marks, node)
74-
if render then
75-
render:run()
76-
end
71+
local render = self.renders[capture]
72+
assert(render ~= nil, 'unhandled markdown capture: ' .. capture)
73+
render:execute(self.context, marks, node)
7774
end)
7875
return marks:get()
7976
end

lua/render-markdown/handler/markdown_inline.lua

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ local ts = require('render-markdown.core.ts')
44

55
---@class render.md.handler.buf.MarkdownInline
66
---@field private query vim.treesitter.Query
7-
---@field private modules table<string, render.md.Render>
7+
---@field private renders table<string, render.md.Render>
88
---@field private context render.md.request.Context
99
local Handler = {}
1010
Handler.__index = Handler
@@ -16,9 +16,10 @@ function Handler.new(buf)
1616
self.query = ts.parse(
1717
'markdown_inline',
1818
[[
19-
(code_span) @code_inline
19+
(code_span) @code
2020
21-
(shortcut_link) @shortcut
21+
((inline) @highlight
22+
(#lua-match? @highlight "==[^=]+=="))
2223
2324
[
2425
(email_autolink)
@@ -28,15 +29,14 @@ function Handler.new(buf)
2829
(uri_autolink)
2930
] @link
3031
31-
((inline) @inline_highlight
32-
(#lua-match? @inline_highlight "==[^=]+=="))
32+
(shortcut_link) @shortcut
3333
]]
3434
)
35-
self.modules = {
36-
code_inline = require('render-markdown.render.code_inline'),
37-
inline_highlight = require('render-markdown.render.inline_highlight'),
38-
link = require('render-markdown.render.link'),
39-
shortcut = require('render-markdown.render.shortcut'),
35+
self.renders = {
36+
code = require('render-markdown.render.inline.code'),
37+
highlight = require('render-markdown.render.inline.highlight'),
38+
link = require('render-markdown.render.inline.link'),
39+
shortcut = require('render-markdown.render.inline.shortcut'),
4040
}
4141
self.context = Context.get(buf)
4242
return self
@@ -47,12 +47,9 @@ end
4747
function Handler:parse(root)
4848
local marks = Marks.new(self.context, true)
4949
self.context.view:nodes(root, self.query, function(capture, node)
50-
local module = self.modules[capture]
51-
assert(module ~= nil, 'unhandled inline capture: ' .. capture)
52-
local render = module:new(self.context, marks, node)
53-
if render then
54-
render:run()
55-
end
50+
local render = self.renders[capture]
51+
assert(render ~= nil, 'unhandled inline capture: ' .. capture)
52+
render:execute(self.context, marks, node)
5653
end)
5754
return marks:get()
5855
end

lua/render-markdown/health.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local state = require('render-markdown.state')
55
local M = {}
66

77
---@private
8-
M.version = '8.3.26'
8+
M.version = '8.3.27'
99

1010
function M.check()
1111
M.start('version')

lua/render-markdown/render/base.lua

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,26 @@ local colors = require('render-markdown.core.colors')
88
---@field protected marks render.md.Marks
99
---@field protected node render.md.Node
1010
---@field protected setup fun(self: render.md.Render): boolean
11-
---@field run fun(self: render.md.Render)
11+
---@field protected run fun(self: render.md.Render)
1212
local Base = {}
1313
Base.__index = Base
1414

1515
---@param context render.md.request.Context
1616
---@param marks render.md.Marks
1717
---@param node render.md.Node
18-
---@return render.md.Render?
19-
function Base:new(context, marks, node)
18+
---@return boolean
19+
function Base:execute(context, marks, node)
2020
local instance = setmetatable({}, self)
2121
instance.context = context
2222
instance.config = context.config
2323
instance.marks = marks
2424
instance.node = node
25-
return instance:setup() and instance or nil
25+
if instance:setup() then
26+
instance:run()
27+
return true
28+
else
29+
return false
30+
end
2631
end
2732

2833
---@protected

lua/render-markdown/render/html_comment.lua renamed to lua/render-markdown/render/html/comment.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ function Render:setup()
1515
return true
1616
end
1717

18+
---@protected
1819
function Render:run()
1920
self.marks:over(true, self.node, { conceal = '' })
2021
if self.info.text then

lua/render-markdown/render/html_tag.lua renamed to lua/render-markdown/render/html/tag.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ function Render:setup()
2020
return self.info ~= nil
2121
end
2222

23+
---@protected
2324
function Render:run()
2425
self.marks:over(true, self.node:child('start_tag'), { conceal = '' })
2526
self.marks:over(true, self.node:child('end_tag'), { conceal = '' })

lua/render-markdown/render/code_inline.lua renamed to lua/render-markdown/render/inline/code.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
local Base = require('render-markdown.render.base')
22
local colors = require('render-markdown.core.colors')
33

4-
---@class render.md.render.CodeInline: render.md.Render
4+
---@class render.md.render.inline.Code: render.md.Render
55
---@field private info render.md.code.Config
66
local Render = setmetatable({}, Base)
77
Render.__index = Render
@@ -19,6 +19,7 @@ function Render:setup()
1919
return true
2020
end
2121

22+
---@protected
2223
function Render:run()
2324
local highlight = self.info.highlight_inline
2425
self.marks:over('code_background', self.node, { hl_group = highlight })

lua/render-markdown/render/inline_highlight.lua renamed to lua/render-markdown/render/inline/highlight.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
local Base = require('render-markdown.render.base')
22

3-
---@class render.md.render.InlineHighlight: render.md.Render
3+
---@class render.md.render.inline.Highlight: render.md.Render
44
---@field private info render.md.inline.highlight.Config
55
local Render = setmetatable({}, Base)
66
Render.__index = Render
@@ -15,6 +15,7 @@ function Render:setup()
1515
return true
1616
end
1717

18+
---@protected
1819
function Render:run()
1920
for _, range in ipairs(self.node:find('==[^=]+==')) do
2021
-- Hide first 2 equal signs

0 commit comments

Comments
 (0)