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 parsers ow.TS.Parser[]
|
||||||
---@field path? string
|
---@field path? string
|
||||||
|
|
||||||
---@class ow.TS.ParserOpts : ow.TS.Parser
|
---@class ow.TS.SingleRepoOpts : ow.TS.RepoBase
|
||||||
---@field lang? string
|
---@field lang? string
|
||||||
|
---@field location? string
|
||||||
|
---@field generate? boolean
|
||||||
|
---@field from_json? boolean
|
||||||
|
|
||||||
---@class ow.TS.RepoOpts : ow.TS.RepoBase, ow.TS.ParserOpts
|
---@class ow.TS.MultiRepoOpts : ow.TS.RepoBase
|
||||||
---@field name? string
|
---@field parsers ow.TS.Parser[]
|
||||||
---@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 path string
|
||||||
---@param lang string
|
---@param lang string
|
||||||
@@ -160,17 +166,18 @@ local function normalize(entry)
|
|||||||
---@type ow.TS.RepoOpts
|
---@type ow.TS.RepoOpts
|
||||||
local opts
|
local opts
|
||||||
if type(entry) == "string" then
|
if type(entry) == "string" then
|
||||||
opts = { entry } --[[@as ow.TS.RepoOpts]]
|
opts = { entry } --[[@as ow.TS.SingleRepoOpts]]
|
||||||
else
|
else
|
||||||
opts = entry
|
opts = entry
|
||||||
end
|
end
|
||||||
local name = opts.name or name_from_url(opts[1])
|
local name = name_from_url(opts[1])
|
||||||
|
|
||||||
---@type ow.TS.Parser[]
|
---@type ow.TS.Parser[]
|
||||||
local parsers = {}
|
local parsers = {}
|
||||||
local input_parsers = opts.parsers
|
local input_parsers = (opts --[[@as ow.TS.MultiRepoOpts]]).parsers
|
||||||
if input_parsers and vim.islist(input_parsers) then
|
if input_parsers then
|
||||||
for _, s in ipairs(input_parsers) do
|
---@cast opts ow.TS.MultiRepoOpts
|
||||||
|
for _, s in ipairs(opts.parsers) do
|
||||||
table.insert(parsers, {
|
table.insert(parsers, {
|
||||||
lang = s.lang,
|
lang = s.lang,
|
||||||
location = s.location,
|
location = s.location,
|
||||||
@@ -179,6 +186,7 @@ local function normalize(entry)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
---@cast opts ow.TS.SingleRepoOpts
|
||||||
table.insert(parsers, {
|
table.insert(parsers, {
|
||||||
lang = opts.lang or lang_from_name(name),
|
lang = opts.lang or lang_from_name(name),
|
||||||
location = opts.location,
|
location = opts.location,
|
||||||
|
|||||||
Reference in New Issue
Block a user