sumneko / lua-glob

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lua-glob

Build status

Require LPegLabel

Install: copy "glob/" directory to your project, or use luarocks luarocks install lua-glob --server=https://luarocks.org/dev

glob

local glob = require 'glob'

local pattern = {
    'src',
    '!*.dll',
}
local options = {
    ignoreCase = true
}
local parser = glob.glob(pattern, options)

parser 'Src/main.lua' --> true
parser 'Src/lpeg.dll' --> false

gitignore

match

local glob = require 'glob'

local pattern = {
    'src/*',
    '!*.dll',
}
local options = {
    ignoreCase = true
}
local parser = glob.gitignore(pattern, options)

parser 'Src/main.lua' --> true
parser 'Src/lpeg.dll' --> false

scan

Work space

main.lua
utility.lua
src
|---test.lua
|---bee.dll
|---lua.dll
local glob = require 'glob'
local fs = require 'bee.filesystem' -- just another filesystem


local pattern = {
    'src/*',
    '!*.dll',
}
local options = {
    ignoreCase = true
}
local interface = {
    type = function (path)
        if not fs.exists(fs.path(path)) then
            return nil
        end
        if fs.is_directory(fs.path(path)) then
            return 'directory'
        else
            return 'file'
        end
    end,
    list = function (path)
        if not fs.exists(fs.path(path)) then
            return nil
        end
        if not fs.is_directory(fs.path(path)) then
            return nil
        end
        local childs = {}
        for child in fs.path(path):list_directory() do
            childs[#childs+1] = child:string()
        end
        return childs
    end,
}

local parser = glob.gitignore(pattern, options, interface)
local files = parser:scan()
print(files[1]) --> main.lua
print(files[2]) --> utility.lua
print(files[3]) --> src\bee.dll
print(files[4]) --> src\lua.dll
print(files[5]) --> nil

About

License:MIT License


Languages

Language:Lua 100.0%