如何通过宏列出某个子模块的所有模块?

问题描述 投票:0回答:0

我的项目的某个目录和子目录中有模块,我想在编译时通过宏解析并保存到变量中

defmodule MyApp.MySubmodules.Mod1 do
    @doc "this module does AA"
  #
end

defmodule MyApp.MySubmodules.Mod2 do
    @doc "this is for CC"
  #
end

# ...

defmodule MyApp.MySubmodules.Mod3 do
    @doc "something afdsafdsfds"

  #
end

defmodule MyApp.MySubmodules.Xyz.Mod4 do
    @doc "blah-blah-blah-blah"

  #
end

defmodule MyApp.MainModule do
  use MyModuleParse

end

这将通过宏创建一个模块属性

@my_modules %{
    mod1: "this module does AA",
    mod2: "this is for CC",
    mod3: "something afdsafdsfds",
    xyz_mod4: "blah-blah-blah-blah"
}

想法是能够在编译时枚举某些模块并在html页面上将它们呈现给用户。每次更改、添加或删除模块时,无需手动复制粘贴到

MyApp.MainModule
中。

如何实现?

首先,如何列出给定特定路径的所有模块——

MyApp.MySubmodules
?那么,一个的
@doc
怎么读呢?

通过宏。

elixir
© www.soinside.com 2019 - 2024. All rights reserved.