refactor(ts): split RepoOpts into single- and multi-parser variants
This commit is contained in:
+17
-9
@@ -17,12 +17,18 @@ local M = {}
|
||||
---@field parsers ow.TS.Parser[]
|
||||
---@field path? string
|
||||
|
||||
---@class ow.TS.ParserOpts : ow.TS.Parser
|
||||
---@class ow.TS.SingleRepoOpts : ow.TS.RepoBase
|
||||
---@field lang? string
|
||||
---@field location? string
|
||||
---@field generate? boolean
|
||||
---@field from_json? boolean
|
||||
|
||||
---@class ow.TS.RepoOpts : ow.TS.RepoBase, ow.TS.ParserOpts
|
||||
---@field name? string
|
||||
---@field parsers? ow.TS.Parser[]
|
||||
---@class ow.TS.MultiRepoOpts : ow.TS.RepoBase
|
||||
---@field parsers ow.TS.Parser[]
|
||||
---@field generate? boolean
|
||||
---@field from_json? boolean
|
||||
|
||||
---@alias ow.TS.RepoOpts ow.TS.SingleRepoOpts | ow.TS.MultiRepoOpts
|
||||
|
||||
---@param path string
|
||||
---@param lang string
|
||||
@@ -160,17 +166,18 @@ local function normalize(entry)
|
||||
---@type ow.TS.RepoOpts
|
||||
local opts
|
||||
if type(entry) == "string" then
|
||||
opts = { entry } --[[@as ow.TS.RepoOpts]]
|
||||
opts = { entry } --[[@as ow.TS.SingleRepoOpts]]
|
||||
else
|
||||
opts = entry
|
||||
end
|
||||
local name = opts.name or name_from_url(opts[1])
|
||||
local name = name_from_url(opts[1])
|
||||
|
||||
---@type ow.TS.Parser[]
|
||||
local parsers = {}
|
||||
local input_parsers = opts.parsers
|
||||
if input_parsers and vim.islist(input_parsers) then
|
||||
for _, s in ipairs(input_parsers) do
|
||||
local input_parsers = (opts --[[@as ow.TS.MultiRepoOpts]]).parsers
|
||||
if input_parsers then
|
||||
---@cast opts ow.TS.MultiRepoOpts
|
||||
for _, s in ipairs(opts.parsers) do
|
||||
table.insert(parsers, {
|
||||
lang = s.lang,
|
||||
location = s.location,
|
||||
@@ -179,6 +186,7 @@ local function normalize(entry)
|
||||
})
|
||||
end
|
||||
else
|
||||
---@cast opts ow.TS.SingleRepoOpts
|
||||
table.insert(parsers, {
|
||||
lang = opts.lang or lang_from_name(name),
|
||||
location = opts.location,
|
||||
|
||||
Reference in New Issue
Block a user