From 82ca275d8be29dcfaa2f36593cf285900552bce3 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Sun, 21 Feb 2021 20:10:33 +0800 Subject: [PATCH] =?UTF-8?q?ft:=E6=A8=A1=E5=9D=97=E8=9E=8D=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/eFmt.erl | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/eFmt.erl b/src/eFmt.erl index 460cfd9..087fe0d 100644 --- a/src/eFmt.erl +++ b/src/eFmt.erl @@ -181,27 +181,39 @@ writeMapBody(I, D, E, BinAcc) -> end end. -writeBinary(Bin, D) -> +writeBinary(Bin, D, BinAcc) -> if D == 1 -> - <<"...">>; + <>">>; true -> - <<"<<", Bin/binary, ">>">> + case Bin of + <<>> -> + <>">>; + <> -> + <>">>; + <> -> + writeBinary(LeftBin, D - 1, <>); + _ -> + L = bit_size(Bin), + <> = Bin, + <>">> + end end. writeTerm(_Term, 0, _E) -> <<"...">>; writeTerm(Term, _D, _E) when is_integer(Term) -> ?writeInt(Term); -writeTerm(Term, _D, _E) when is_float(Term) -> ?writeFloat(Term); writeTerm(Atom, _D, E) when is_atom(Atom) -> ?writeAtom(Atom, E); -writeTerm(Term, _D, _E) when is_port(Term) -> ?writePort(Term); -writeTerm(Term, _D, _E) when is_pid(Term) -> ?writePid(Term); -writeTerm(Term, _D, _E) when is_reference(Term) -> ?writeRef(Term); -writeTerm(Term, _D, _E) when is_function(Term) -> ?writeFun(Term); -writeTerm(Term, D, _E) when is_binary(Term) -> writeBinary(Term, D); -writeTerm(Term, D, _E) when is_bitstring(Term) -> writeBinary(Term, D); writeTerm(Term, D, E) when is_list(Term) -> writeList(Term, D, E, <<"[">>); writeTerm(Term, D, E) when is_map(Term) -> writeMap(Term, D, E, <<"#{">>); -writeTerm(Term, D, E) when is_tuple(Term) -> writeTuple(Term, D, E, 1, tuple_size(Term), <<"{">>). +writeTerm(Term, D, E) when is_tuple(Term) -> writeTuple(Term, D, E, 1, tuple_size(Term), <<"{">>); +writeTerm(Term, D, _E) when is_bitstring(Term) -> writeBinary(Term, D, <<"<<">>); +writeTerm(Term, _D, _E) when is_pid(Term) -> ?writePid(Term); +writeTerm(Term, _D, _E) when is_float(Term) -> ?writeFloat(Term); +writeTerm(Term, _D, _E) when is_port(Term) -> ?writePort(Term); +writeTerm(Term, _D, _E) when is_reference(Term) -> ?writeRef(Term); +writeTerm(Term, _D, _E) when is_function(Term) -> ?writeFun(Term). + + %% ********************************************** eFmt end ************************************************************* %% ********************************************** eFmtFormat start *****************************************************