diff --git a/lua/opdavies/snippets/ft/php.lua b/lua/opdavies/snippets/ft/php.lua index 75e4e53..77ecd67 100644 --- a/lua/opdavies/snippets/ft/php.lua +++ b/lua/opdavies/snippets/ft/php.lua @@ -25,6 +25,60 @@ local M = { { i(1), i(0) } ), + drupalclass = fmta( + [[ + <; + + final class <> { + + <> + + }]], + { + f(function() + local filepath = vim.fn.expand "%:h" + local filepath_parts = vim.fn.split(filepath, "/") + + if not vim.tbl_contains(filepath_parts, "src") then + return "" + end + + local namespace_parts = { "Drupal" } + + local is_test_file = vim.tbl_contains(filepath_parts, "tests") + if is_test_file then + table.insert(namespace_parts, "Tests") + end + + -- Find and add the module name. + for k, v in ipairs(filepath_parts) do + if v == "src" then + if is_test_file then + table.insert(namespace_parts, filepath_parts[k - 2]) + else + table.insert(namespace_parts, filepath_parts[k - 1]) + end + end + end + + -- Add the rest of the namespace. + local namespace = vim.split(filepath, "src/") + local final_part = (namespace[2] or ""):gsub("/", "\\") + table.insert(namespace_parts, final_part) + + return table.concat(namespace_parts, "\\") + end), + f(function() + return vim.fn.expand "%:t:r" + end), + i(0), + } + ), + func = fmta("function <>(<>)<> {\n <>\n}<>", { i(1), i(2), i(3), i(4), i(0) }), met = fmta( diff --git a/lua/opdavies/snippets/ft/yaml.lua b/lua/opdavies/snippets/ft/yaml.lua new file mode 100644 index 0000000..4c5b3ce --- /dev/null +++ b/lua/opdavies/snippets/ft/yaml.lua @@ -0,0 +1,39 @@ +local fmta = require("luasnip.extras.fmt").fmta +local ls = require "luasnip" +local rep = require("luasnip.extras").rep + +local c = ls.choice_node +local i = ls.insert_node +local t = ls.text_node + +local M = { + drupal_info = fmta( + [[ + name: + description: + core_version_requirement: ^10 || ^11 + type: + package: + ]], + { module_name = i(1), description = i(2), type = c(3, { t "module", t "theme" }), package = i(0) } + ), + + drupal_route = fmta( + [[ + .: + path: / + defaults: + _controller: Drupal\\Controller\ + # _form: + # _title: + # _title_callback: + methods: [GET] + requirements: + _permission: access content + # _access: TRUE + ]], + { module = i(1), route = i(2), path = i(3), module_same = rep(1), class = i(4), finish = i(0) } + ), +} + +return M