summaryrefslogtreecommitdiff
path: root/mpv/scripts/file-browser/modules/addons/file.lua
blob: a57573ce5c9a4b3bdc05f4b0bfb46e99ea1069fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
-- This file is an internal file-browser addon.
-- It should not be imported like a normal module.

local msg = require 'mp.msg'
local utils = require 'mp.utils'

---Parser for native filesystems
---@type ParserConfig
local file_parser = {
    name = "file",
    priority = 110,
    api_version = '1.0.0',
}

--try to parse any directory except for the root
function file_parser:can_parse(directory)
    return directory ~= ''
end

--scans the given directory using the mp.utils.readdir function
function file_parser:parse(directory)
    local new_list = {}
    local list1 = utils.readdir(directory, 'dirs')
    if list1 == nil then return nil end

    --sorts folders and formats them into the list of directories
    for i=1, #list1 do
        local item = list1[i]

        msg.trace(item..'/')
        table.insert(new_list, {name = item..'/', type = 'dir'})
    end

    --appends files to the list of directory items
    local list2 = utils.readdir(directory, 'files')
    if list2 == nil then return nil end
    for i=1, #list2 do
        local item = list2[i]

        msg.trace(item)
        table.insert(new_list, {name = item, type = 'file'})
    end
    return new_list
end

return file_parser