#-------------------------------------------------------------------------------
# Author: Keith Brings
# Copyright (C) 2018 Noizu Labs, Inc. All rights reserved.
#-------------------------------------------------------------------------------
defmodule Noizu.RuleEngine.Helper do
def identifier(node) do
case node.identifier do
v when is_bitstring(v) -> v
v when is_list(v) -> Enum.join(v, ".")
v when is_tuple(v) -> :erlang.tuple_to_list(v) |> Enum.join(".")
_ -> "#{inspect node.identifier}"
end
end
def render_arg_list(tag, identifier, children, state, context, options) do
depth = options[:depth] || 0
prefix = (depth == 0) && (">> ") || (String.duplicate(" ", ((depth - 1) * 4) + 3) <> "|-- ")
options_b = put_in(options, [:depth], depth + 1)
r = Enum.map(children, &(Noizu.RuleEngine.ScriptProtocol.render(&1, state, context, options_b)))
"#{prefix}#{identifier} [#{tag}] (#{length(children)})\n" <> Enum.join(r, "")
end
end