Files
gsc/src/gsc_ntree.erl
T
2026-06-04 11:42:48 -07:00

56 lines
973 B
Erlang

-module(gsc_ntree).
-export([
nstem/2, meta/1, kids/1,
flatten_tree/1, flatten_forest/1
]).
-include("$gsc_include/gsc.hrl").
%%=====================================================
%% API: functions
%%=====================================================
-spec nstem(Root, Forest) -> Tree when
Root :: S,
Forest :: nforest(S, L),
Tree :: ntree(S, L),
S :: any(),
L :: any().
nstem(Root, List) ->
{ns, Root, List}.
meta(#ns{meta = M}) -> M.
kids(#ns{kids = K}) -> K.
-spec flatten_tree(Tree) -> Leafs when
Tree :: ntree(_, L),
Leafs :: [L],
L :: any().
flatten_tree(T) ->
lists:flatten(ft(T)).
-spec flatten_forest(Forest) -> Leafs when
Forest :: nforest(_, L),
Leafs :: [L],
L :: any().
flatten_forest(F) ->
lists:flatten(ff(F)).
ft(#ns{kids = F}) -> ff(F);
ft(Leaf) -> [Leaf].
ff(F) ->
[ft(T) || T <- F].