نظرة عامة على عمليات التطبيع التي يطبّقها ممثّل Elixir على الحلول
يُجري ممثّل Elixir عددًا من عمليات التطبيع. راجع الكود أو بيانات الاختبار لمعرفة التفاصيل.
تُزال جميع التعليقات والتوثيقات وتوثيقات الوحدات وتوثيقات الأنواع.
defmodule Fake do
@moduledoc """
Fake module to demonstrate stuff
"""
@doc "Not much to see here"
def foo do
# TODO: return bar
nil
end
end
defmodule Fake do
def foo do
nil
end
end
تُرتَّب عبارات الاستيراد في أعلى الوحدات أو الدوال على النحو التالي: alias، use، require، import.
defmodule Fake do
import D
alias A.U.V
use B
alias A.{T, S}
require C
def foo do
import Z
alias X
use Y
end
import NotTouched
alias NotTouched
end
defmodule Fake do
alias A.{S, T}
alias A.U.V
use B
require C
import D
def foo do
alias X
use Y
import Z
end
import NotTouched
alias NotTouched
end
يُنسَّق الكود باستخدام [mix code][mix-code]، مع فرض كتلتي do وend.
وتُكتب جميع الدوال في الأنابيب بين قوسين، أما الأنواع فتُكتب دونها.
defmodule Fake do
@type foo() :: integer() | atom
def foo, do: nil |> bar
end
defmodule Fake do
@type foo() :: integer | atom
def foo do
nil |> bar()
end
end
تُطبَّع المعرّفات لتصبح قيمة نائبة.
ولا تُستبدل بعض المتغيرات وسمات الوحدات الخاصة (_، @spec، __MODULE__، إلخ).
ولا تُطبَّع المفاتيح الآتية من الخرائط والهياكل وقوائم الكلمات المفتاحية.
defmodule Fake do
alias Fake, as: SuperFake
@my_constant 42
@impl true
def foo(bar) when is_integer(bar) do
bar + @my_constant
end
def foo(%{a: a} = bar) do
%{bar | a: a + @my_constant}
end
def foo(_), do: nil
end
defmodule Placeholder_1 do
alias Placeholder_1, as: Placeholder_2
@placeholder_6 42
@impl true
def placeholder_4(placeholder_5) when is_integer(placeholder_5) do
placeholder_5 + @placeholder_6
end
def placeholder_4(%{a: placeholder_7} = placeholder_5) do
%{placeholder_5 | a: placeholder_7 + @placeholder_6}
end
def placeholder_4(_) do
nil
end
end
تُرتَّب المفاتيح في الخرائط والهياكل. أما المفاتيح في قوائم الكلمات المفتاحية فلا تُرتَّب.
defmodule Fake do
def foo do
%MyStruct{z: 3, y: 2, x: 1}
m = %{c: 3, a: 1, b: 2}
%{m | b: 20, a: 10}
[b: 2, a: 1]
end
end
defmodule Fake do
def foo do
%MyStruct{x: 1, y: 2, z: 3}
placeholder_3 = %{a: 1, b: 2, c: 3}
%{placeholder_3 | a: 10, b: 20}
[b: 2, a: 1]
end
end