Skip to content

Instantly share code, notes, and snippets.

@loguntsov
Created December 19, 2019 16:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loguntsov/43cb8bf49cb0cd6e7a2bacb15bc8eab3 to your computer and use it in GitHub Desktop.
Save loguntsov/43cb8bf49cb0cd6e7a2bacb15bc8eab3 to your computer and use it in GitHub Desktop.
defmodule Exporter do
require Logger
def filter(file_from, file_to) do
{ :ok, ets } = :ets.file2tab(file_from)
{ :ok, ets2 } = :ets.file2tab(file_from)
try do
:ets.delete_all_objects ets2
codes = [
:"RqCharMoveStart", :"RqCharMove", :"RqCharMoveStop"
]
result = :ets.foldl fn
{ _, data } = item, acc when :erlang.is_tuple(data) ->
opcode = Opcodes.opcode :erlang.element(3, data)
case :lists.member(opcode, codes) do
true ->
Logger.info("#{inspect item}")
[ item | acc ]
false -> acc
end
_, acc -> acc
end, [], ets
Logger.info("Result: #{inspect result}")
:ets.insert ets2, result
:ets.tab2file ets2, file_to
after
:ets.delete ets
:ets.delete ets2
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment