View Source stringx (util v1.1.5)
Link to this section Summary
Types
see types for erlang:float_to_binary/2
Functions
Align rows of terms by stringifying them to uniform column width. If some row doesn't need to be aligned, pass its value as a binary. Options
can be
Split a list into batches of N items
Convert format and arguments to binary/list shortening . This function can be used by Elixir, which is missing the equivalent of
io_lib.format/2
Convert format and arguments to binary/list shortening . This function can be used by Elixir, which is missing the equivalent of
io_lib.format/2
The same as uef_format:format_number/4 with #{} as the forth argument.
See also: format_number/4.
Formats Number by adding thousands separator between each set of 3 digits to the left of the decimal point, substituting Decimals for the decimal point, and rounding to the specified Precision. Returns a binary value.
Formats Number in price-like style. Returns a binary containing FormattedPrice formatted with a precision of 2 and decimal digits of 2. The same as format_price/2 with a precision of 2 as the second argument. See uef_format:format_price/2 docs.
Formats Number in price-like style. Returns a binary containing FormattedPrice formatted with a specified precision as the second argument and decimal digits of 2. The same as uef_format:format_price/3 with #{} as the third argument.
See also: format_price/3.
Formats Number in price-like style. Returns a binary containing FormattedPrice formatted with a specified precision as the second argument, decimal digits of 2, and with ccy symbol (or options) as the third argument. If CcySymbol_OR_Options is a map the functions works as format_number/4 with decimal digits of 2 as the third argument and with options as the forth one. If CcySymbol_OR_Options is a binary or a string, the corresponding ccy symbol is added to the left.
Parse a given CSV file.
Parse a given CSV file.
Pretty print table of lists/tuples/maps to list. The following options control formatting behavior:
- number_pad
- Leading padding character used for numbers
- th_dir
- Table header row padding direction (both|leading|trailing)
- td_dir
- Table row padding direction (both|leading|trailing)
- td_start
- Don't print columns less than this (e.g. use 2 for records)
- td_exclulde
- List of column ID's (starting with 1) or names to exclude
- td_sep
- Column separator (default
" | "
) - tr_sep
- Row separator (default
"-"
) - tr_sep_td
- Column delimiter used in separating rows (
"+"
) - prefix
- Prepend each row with this string
- td_formats
- A tuple containing column formats. Each value is either a format string passed to
io_lib:format/2
or a function taking either one argumentfun(Value) -> {number|string, FormattedValue::string()}
or three argumentsfun(Key,Value,Row::tuple()|map()) -> {number|string, FormattedValue::string()}
. This three argument function can perform calculation of the field value based on values of other fields in theRow
. - unicode
- Use unicode outline characters
- outline
- Draw top, left and line box outline (by default only the bottom one is drawn). Values:
none
- on outline boxfull
- outline box on all 4 sides[top, left, bottom, right]
- outline box on given sides
1> stringx:pretty_print_table(
{a,b,c,d}, [{a, 10, ccc}, {bxxx, 200.00123, 'Done'}, {abc, 100.0, xx}],
#opts{td_dir=both, td_exclude=[d], td_formats=
{undefined, fun(V) when is_integer(V) -> {number, integer_to_list(V)};
(V) when is_float(V) -> {number, float_to_list(V, [{decimals, 5}])}
end, "~w"}}).
a | b | c
-----+-----------+-------
a | 10 | ccc
bxxx | 200.00123 | 'Done'
-----+-----------+-------
Pretty print list of maps to list.
See also: pretty_table/3.
Pretty print table of lists/tuples/maps to list.
See also: pretty_table/3.
Rounds the number to the specified precision.
Rounds the number to the precision of 2.
Convert words in a string to capitalize first letter of each word.
Wrap words words in a string
Wrap words words in a string to multiple lines that fit the margin Example:
1> stringx:wordwrap(["abc", "efg", "exdf"], 8, ","). ["abc,efg,","exdf"]
Link to this section Types
-type ccy_sym() :: binary() | string().
-type decimals() :: 0..253.
-type format_number_opts() :: #{thousands => binary() | string(), decimal_point => binary() | string(), ccy_sym => ccy_sym(), ccy_pos => left | right, ccy_sep => binary() | string(), return => binary | list}.
-type formatted_number() :: binary().
-type precision() :: integer().
-type pretty_print_opts() ::
#{number_pad => char(),
header => boolean(),
th_dir => both | leading | trailing,
td_dir => both | leading | trailing,
td_start => integer(),
td_exclude => list(),
td_sep => string(),
tr_sep => string(),
tr_sep_td => string(),
prefix => string(),
thousands => string() | binary(),
translate => fun((term()) -> term()),
footer_rows => integer(),
td_formats =>
tuple() |
fun((ColVal :: term()) ->
{string, string()} |
{number, string() | number()} |
{number, Decimals :: integer(), ColVal :: number()} |
{ccy, number()}),
thousands => string() | binary(),
ccy_sym => string() | binary(),
ccy_sep => string() | binary(),
ccy_pos => left | right}.
Link to this section Functions
-spec align_rows(Rows :: [tuple() | binary() | list()],
Options ::
[{pad,
Dir ::
[trailing | leading | both |
{Pos :: integer() | last, trailing | leading | both | none}]} |
{exclude, Cols :: [integer()]} |
{return, Ret :: tuple | list} |
{prefix, string()} |
{ignore_empty, boolean()}]) ->
[AlignedRow :: tuple() | list()].
Align rows of terms by stringifying them to uniform column width. If some row doesn't need to be aligned, pass its value as a binary. Options
can be:
Rows
is a list. All rows must have the same arity except if a row is a binary. Options
contain:- {pad, Direction}
- Column padding direction, where
Direction
is one ofleading
,trailing
,{Position::integer(), leading|trailing|none}
,{last, leading|trailing|none}
- {return, tuple|list}
- Return result rows as lists or tuples
- {prefix, string()}
- Prefix first item in each row with this string
- {ignore_empty, boolean()}
- Don't pad trailing empty columns if this option is true
- {exclude, [integer()]}
- Exclude given column numbers
-spec batch_split(integer(), list()) -> [list()].
-spec format(binary() | string(), list()) -> binary() | string().
io_lib.format/2
-spec format_binary(binary() | string(), list()) -> binary().
io_lib.format/2
-spec format_integer(integer()) -> formatted_number().
-spec format_integer(integer(), format_number_opts()) -> formatted_number().
-spec format_number(number(), precision(), decimals()) -> formatted_number().
See also: format_number/4.
-spec format_number(number(), precision(), decimals(), format_number_opts()) -> formatted_number().
-spec format_price(Number :: number()) -> FormattedPrice :: formatted_number().
-spec format_price(Number :: number(), Precision :: precision()) -> formatted_number().
See also: format_price/3.
-spec format_price(Number :: number(), Precision :: precision(), CcySymbol_OR_Options :: format_number_opts() | ccy_sym()) -> FormattedPrice :: formatted_number().
-spec parse_csv(string()) -> [[string()]].
-spec parse_csv(string(), [fix_lengths | {open, Opts :: list()}]) -> [[string()]].
- number_pad
- Leading padding character used for numbers
- th_dir
- Table header row padding direction (both|leading|trailing)
- td_dir
- Table row padding direction (both|leading|trailing)
- td_start
- Don't print columns less than this (e.g. use 2 for records)
- td_exclulde
- List of column ID's (starting with 1) or names to exclude
- td_sep
- Column separator (default
" | "
) - tr_sep
- Row separator (default
"-"
) - tr_sep_td
- Column delimiter used in separating rows (
"+"
) - prefix
- Prepend each row with this string
- td_formats
- A tuple containing column formats. Each value is either a format string passed to
io_lib:format/2
or a function taking either one argumentfun(Value) -> {number|string, FormattedValue::string()}
or three argumentsfun(Key,Value,Row::tuple()|map()) -> {number|string, FormattedValue::string()}
. This three argument function can perform calculation of the field value based on values of other fields in theRow
. - unicode
- Use unicode outline characters
- outline
- Draw top, left and line box outline (by default only the bottom one is drawn). Values:
none
- on outline boxfull
- outline box on all 4 sides[top, left, bottom, right]
- outline box on given sides
1> stringx:pretty_print_table(
{a,b,c,d}, [{a, 10, ccc}, {bxxx, 200.00123, 'Done'}, {abc, 100.0, xx}],
#opts{td_dir=both, td_exclude=[d], td_formats=
{undefined, fun(V) when is_integer(V) -> {number, integer_to_list(V)};
(V) when is_float(V) -> {number, float_to_list(V, [{decimals, 5}])}
end, "~w"}}).
a | b | c
-----+-----------+-------
a | 10 | ccc
bxxx | 200.00123 | 'Done'
-----+-----------+-------
-spec pretty_table([map()]) -> list().
See also: pretty_table/3.
-spec pretty_table([string()], [Row :: tuple() | list() | map()]) -> list().
See also: pretty_table/3.
-spec pretty_table([string() | atom()] | tuple(),
[Row :: tuple() | list() | map()],
Opts :: map() | #opts{}) ->
list().
-spec round_number(Number :: number(), Precision :: integer()) -> float().
-spec round_price(Number :: number()) -> float().
-spec titlecase(string()) -> string().
-spec wordwrap(string(), integer()) -> string().
-spec wordwrap([Word], integer(), Word) -> [string() | binary()] when Word :: string() | binary().
1> stringx:wordwrap(["abc", "efg", "exdf"], 8, ","). ["abc,efg,","exdf"]