summaryrefslogtreecommitdiff
path: root/mpv/scripts/file-browser/modules/apis/parser.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mpv/scripts/file-browser/modules/apis/parser.lua')
-rw-r--r--mpv/scripts/file-browser/modules/apis/parser.lua40
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