Skip to content

Commit 271d4eb

Browse files
committed
VIP - add erlang_fields pattern converter
1 parent b9d9d0c commit 271d4eb

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

lib/helper/extra.ex

+7
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ defmodule MishkaDeveloperTools.Helper.Extra do
3838
def erlang_result(:selected), do: [:"$$"]
3939
def erlang_result(term), do: term
4040

41+
def erlang_fields(tuple, [], _keys, _num), do: tuple
42+
43+
def erlang_fields(tuple, [h | t], keys, num) do
44+
new_tuple = Tuple.append(tuple, if(h in keys, do: String.to_atom("$#{num}"), else: :_))
45+
erlang_fields(new_tuple, t, keys, if(h in keys, do: num + 1, else: num))
46+
end
47+
4148
def timestamp() do
4249
DateTime.utc_now()
4350
|> DateTime.truncate(:microsecond)

lib/modules/mnesia_assistant/mnesia_assistant.ex

+2
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ defmodule MnesiaAssistant do
139139
defdelegate eg(operation), to: Extra, as: :erlang_guard
140140

141141
defdelegate er(operation), to: Extra, as: :erlang_result
142+
143+
defdelegate erl_fields(tuple, fields, keys, num), to: Extra, as: :erlang_fields
142144
############### Global functions Public Apis ###############
143145
# Ref: https://www.erlang.org/doc/apps/mnesia/mnesia_chap5#mnesia-event-handling
144146
# system | activity | {table, table(), simple | detailed}

0 commit comments

Comments
 (0)