exercism / exercism/elixir-representer
Normalization of aliases and imports
- 主要语言
- Elixir
- 星标
- 11
- 派生
- 8
- 平均合并
- 11 天 3 小时
- 30 天内合并 PR
- 1
描述
Aliases and imports usually refer to external functions so names should be handled accordingly
## Example input
```elixir
defmodule A do
import B, only: [b_function: 1]
import C, except: [c_function: 1]
alias D, as: Dog
def use_b(x), do: x |> b_function
def use_c(c_function), do: c_function(0)
def use_d(y), do: Dog.sniff(y)
end
```
## Desired output
```elixir
defmodule(PLACEHOLDER_1) do
import(B, only: [b_function: 1])
import(C, except: [c_function: 1])
alias(D, as: PLACEHOLDER_2)
def(PLACEHOLDER_3(PLACEHOLDER_4)) do
PLACEHOLDER_4 |> b_function
end
def(PLACEHOLDER_5(PLACEHOLDER_6)) do
PLACEHOLDER_6(0)
end
def(PLACEHOLDER_7(PLACEHOLDER_8)) do
PLACEHOLDER_2.sniff(PLACEHOLDER_8)
end
end
```
`b_function` is imported so should appear as it is. `c_function` is excluded, so any mention of it is a local variable and should have a placeholder (current behavior already). `Dog` is an alias so should be replaced by a placeholder (possible overlap with #33).
## Current output
```elixir
defmodule(PLACEHOLDER_1) do
import(B, only: [b_function: 1])
import(C, except: [c_function: 1])
alias(D, as: Dog)
def(PLACEHOLDER_2(PLACEHOLDER_3)) do
PLACEHOLDER_3 |> PLACEHOLDER_4
end
def(PLACEHOLDER_5(PLACEHOLDER_6)) do
PLACEHOLDER_6(0)
end
def(PLACEHOLDER_7(PLACEHOLDER_8)) do
Dog.sniff(PLACEHOLDER_8)
end
end
```
In the case of `import X` where `X` is a standard library, it is possible to lookup all functions, so these should not de replaced either.
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。