diff options
Diffstat (limited to 'mpv/scripts/file-browser/modules/apis/parser.lua')
| -rw-r--r-- | mpv/scripts/file-browser/modules/apis/parser.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/mpv/scripts/file-browser/modules/apis/parser.lua b/mpv/scripts/file-browser/modules/apis/parser.lua new file mode 100644 index 0000000..9c3fbeb --- /dev/null +++ b/mpv/scripts/file-browser/modules/apis/parser.lua @@ -0,0 +1,40 @@ +local msg = require 'mp.msg' + +local g = require 'modules.globals' +local scanning = require 'modules.navigation.scanning' +local fb = require 'modules.apis.fb' + +---@class ParserAPI: FbAPI +local parser_api = setmetatable({}, { __index = fb }) + +---Returns the index of the parser. +---@return number +function parser_api:get_index() return g.parsers[self].index end + +---Returns the ID of the parser +---@return string +function parser_api:get_id() return g.parsers[self].id end + +---A newer API for adding items to the root. +---Only adds the item if the same item does not already exist in the root. +---Wrapper around `fb.register_root_item`. +---@param item Item|string +---@param priority? number The priority for the added item. Uses the parsers priority by default. +---@return boolean +function parser_api:register_root_item(item, priority) + return fb.register_root_item(item, priority or g.parsers[self:get_id()].priority) +end + +---Runs choose_and_parse starting from the next parser. +---@async +---@param directory string +---@return Item[]? +---@return Opts? +function parser_api:defer(directory) + msg.trace("deferring to other parsers...") + local list, opts = scanning.choose_and_parse(directory, self:get_index() + 1) + fb.get_parse_state().already_deferred = true + return list, opts +end + +return parser_api |
