Hi!
In this issue for my pull request in vscode-elixir-snippets, I could not find a solution to the problem.
My regex looks like this
${RELATIVE_FILEPATH/^([^\\/\\\\]+[\\/\\\\])|(\\.ex|\\.exs)$|([^._\\/\\\\]+)|_|([\\/\\\\])/${3:/capitalize}${4:+.}/g}
Works for defmod
and ex_unit
snippets, but not for supervisor
, dynamic_supervisor
and gen_server
, and the regex is exactly the same!
As described in my question in stackoverflow., the output for lib/shop_web/live/product_live/index.ex
should be ShopWeb.Live.ProductLive.Index
Here works perfectly:
"dmod": {
"prefix": ["dmod", "defmod"],
"comments": [
"Generates the namespace for a file.",
"e.g. A file with the path `lib/foo/bar/baz/boing.ex` would resolve to Foo.Bar.Baz.Boing.",
],
"body": [
"defmodule ${RELATIVE_FILEPATH/^([^\\/\\\\]+[\\/\\\\])|(\\.ex|\\.exs)$|([^._\\/\\\\]+)|_|([\\/\\\\])/${3:/capitalize}${4:+.}/g} do",
"\t$0",
"end"
],
"description": "def module",
"scope": "source.elixir"
},
But here not
"Supervisor": {
"prefix": "supervisor",
"body": [
"defmodule ${RELATIVE_FILEPATH/^([^\\/\\\\]+[\\/\\\\])|(\\.ex|\\.exs)$|([^._\\/\\\\]+)|_|([\\/\\\\])/${3:/capitalize}${4:+.}/g} do",
"\tuse Supervisor",
"",
"\tdef start_link(${args}) do",
"\t\tSupervisor.start_link(__MODULE__, [${args}], name: __MODULE__)",
"\tend",
"",
"\tdef init([${args}]) do",
"\t\tchildren = []",
"",
"\t\tSupervisor.init(children, strategy: :one_for_one)",
"\tend",
"end"
],
"description": "Insert code for an OTP Supervisor",
"scope": "source.elixir"
},
The output for the supervisor
snippet is
defmodule ${RELATIVE_FILEPATH/^([^/\]+[/\])|(\.ex|\.exs)$|([^._/\]+)|_|([/\])//capitalize,+./g} do
use Supervisor
def start_link(args) do
Supervisor.start_link(__MODULE__, [args], name: __MODULE__)
end
def init([args]) do
children = []
Supervisor.init(children, strategy: :one_for_one)
end
end
And the same issue is for dynamic_supervisor
and gen_server
snippets.
Can someone give me a help?