|
28 | 28 |
|
29 | 29 | %%%_* Types ============================================================ |
30 | 30 | -type config() :: #{ new_line => boolean() |
| 31 | + , new_line_type => nl | crlf | cr | unix | windows | macos9 |
31 | 32 | , key_mapping => #{atom() => atom()} |
32 | 33 | , format_funs => #{atom() => fun((_) -> _)}}. |
33 | 34 |
|
@@ -90,7 +91,7 @@ merge_meta(Msg, Meta0, Config) -> |
90 | 91 | encode(Data, Config) -> |
91 | 92 | Json = jsx:encode(Data), |
92 | 93 | case new_line(Config) of |
93 | | - true -> [Json, <<"\n">>]; |
| 94 | + true -> [Json, new_line_type(Config)]; |
94 | 95 | false -> Json |
95 | 96 | end. |
96 | 97 |
|
@@ -133,6 +134,14 @@ apply_key_mapping(Data, _) -> |
133 | 134 |
|
134 | 135 | new_line(Config) -> maps:get(new_line, Config, ?NEW_LINE). |
135 | 136 |
|
| 137 | +new_line_type(#{new_line_type := nl}) -> <<"\n">>; |
| 138 | +new_line_type(#{new_line_type := unix}) -> <<"\n">>; |
| 139 | +new_line_type(#{new_line_type := crlf}) -> <<"\r\n">>; |
| 140 | +new_line_type(#{new_line_type := windows}) -> <<"\r\n">>; |
| 141 | +new_line_type(#{new_line_type := cr}) -> <<"\r">>; |
| 142 | +new_line_type(#{new_line_type := macos9}) -> <<"\r">>; |
| 143 | +new_line_type(_Default) -> <<"\n">>. |
| 144 | + |
136 | 145 | meta_without(Meta, Config) -> |
137 | 146 | maps:without(maps:get(meta_without, Config, [report_cb]), Meta). |
138 | 147 |
|
@@ -224,6 +233,16 @@ meta_with_test() -> |
224 | 233 | jsx:decode(format(Error, Config2))), |
225 | 234 | ok. |
226 | 235 |
|
| 236 | +newline_test() -> |
| 237 | + ConfigDefault = #{ new_line => true }, |
| 238 | + ?assertEqual( [<<"{\"level\":\"alert\",\"text\":\"derp\"}">>, <<"\n">>] |
| 239 | + , format(#{level => alert, msg => {string, "derp"}, meta => #{}}, ConfigDefault) ), |
| 240 | + ConfigCRLF = #{ new_line_type => crlf |
| 241 | + , new_line => true |
| 242 | + }, |
| 243 | + ?assertEqual( [<<"{\"level\":\"alert\",\"text\":\"derp\"}">>, <<"\r\n">>] |
| 244 | + , format(#{level => alert, msg => {string, "derp"}, meta => #{}}, ConfigCRLF) ). |
| 245 | + |
227 | 246 | -endif. |
228 | 247 |
|
229 | 248 | %%%_* Emacs ============================================================ |
|
0 commit comments