Current section
Files
Jump to
Current section
Files
lib/arg_parse/parser/transformers/generate_parse.ex
defmodule ArgParse.Parser.Transformers.GenerateParse do
use Spark.Dsl.Transformer
def transform(dsl_state) do
parse =
quote do
def parse(argv \\ System.argv()) do
# Our generated code can be very simple
# because we can get all the info we need from the module
# in our regular ELixir code.
ArgParse.Parser.parse(__MODULE__, argv)
end
end
parse! =
quote do
def parse!(argv \\ System.argv()) do
# Our generated code can be very simple
# because we can get all the info we need from the module
# in our regular ELixir code.
ArgParse.Parser.parse!(__MODULE__, argv)
end
end
dsl_state =
dsl_state
|> Spark.Dsl.Transformer.eval([], parse)
|> Spark.Dsl.Transformer.eval([], parse!)
{:ok, dsl_state}
end
end