telescope-alternate.nvim icon indicating copy to clipboard operation
telescope-alternate.nvim copied to clipboard

help with wildcard

Open uwla opened this issue 10 months ago • 0 comments

Thanks for the plugin!

How can I make use of wildcards ?

https://github.com/user-attachments/assets/b7f28dc6-984a-4d6d-b553-4e1242d0888c

Migrations in laravel have the pattern database/migration/*_create_[table_name]_table.php.

Unfortunately, this plugins is dealing with * literally and not as wildcard.

Here is my config:

config = function()
    local laravelTargets = {
        {
            template = "app/Models/[1].php",
            label = "Model",
        },
        {
            template = "app/Policies/[1]Policy.php",
            label = "Policy",
        },
        {
            template = "app/Http/Controllers/[1]Controller.php",
            label = "Controller",
        },
        {
            template = "app/Http/Requests/Update[1]Request.php",
            label = "Update Request",
        },
        {
            template = "app/Http/Requests/Store[1]Request.php",
            label = "Store Request",
        },
        {
            template = "app/Http/Resources/[1]Resource.php",
            label = "Resource",
        },
        {
            template = "database/factories/[1]Factory.php",
            label = "Factory",
        },
        {
            template = "database/seeders/[1]Seeder.php",
            label = "Seeder",
        },
        {
            template = "database/migrations/*_create_[1:camel_to_kebap,pluralize]_table.php",
            label = "Migration",
        },
        {
            template = "tests/Feature/Models/[1]Test.php",
            label = "Test Model",
        },
        {
            template = "tests/Feature/Http/Controllers/[1]ControllerTest.php",
            label = "Test Controller",
        },
    }

    -- Function that filters myTable based on the label
    function filterTargets(targets, labelToRemove)
        local filteredTable = {}
        for _, item in ipairs(targets) do
            if item.label ~= labelToRemove then
                table.insert(filteredTable, item)
            end
        end
        return filteredTable
    end

    local opts = {
        mappings = {
            -- laravel preset
            {
                pattern = "app/Models/(.*).php",
                targets = filterTargets(laravelTargets, "Model"),
            },
            {
                pattern = "app/Http/Controllers/(.*)Controller.php",
                targets = filterTargets(laravelTargets, "Controller"),
            },
            {
                pattern = "app/Http/Requests/Update(.*)Request.php",
                targets = filterTargets(laravelTargets, "Update Request"),
            },
            {
                pattern = "app/Http/Requests/Store(.*)Request.php",
                targets = filterTargets(laravelTargets, "Store Request"),
            },
            {
                pattern = "app/Http/Resources/(.*)Resource.php",
                targets = filterTargets(laravelTargets, "Resource"),
            },
            {
                pattern = "app/Policies/(.*)Policy.php",
                targets = filterTargets(laravelTargets, "Policy"),
            },
            {
                pattern = "database/seeders/(.*)Seeder.php",
                targets = filterTargets(laravelTargets, "Seeder"),
            },
            {
                pattern = "database/factories/(.*)Factory.php",
                targets = filterTargets(laravelTargets, "Factory"),
            },
            {
                pattern = "tests/Feature/Models/(.*)Test.php",
                targets = filterTargets(laravelTargets, "Test Model"),
            },
            {
                pattern = "tests/Feature/Http/Controllers/(.*)ControllerTest.php",
                targets = filterTargets(laravelTargets, "Test Controller"),
            },
            --
        },
    }
    require("telescope-alternate").setup(opts)
    require("telescope").load_extension("telescope-alternate")
end

After the fix, I can make a PR to add a Laravel preset.

uwla avatar Dec 04 '24 22:12 uwla