Module hb_structured_fields.erl¶
A module for parsing and converting between Erlang and HTTP Structured Fields, as described in RFC-9651.
Description¶
The mapping between Erlang and structured headers types is as follow:
List: list() Inner list: {list, [item()], params()} Dictionary: [{binary(), item()}] There is no distinction between empty list and empty dictionary. Item with parameters: {item, bare_item(), params()} Parameters: [{binary(), bare_item()}] Bare item: one bare_item() that can be of type: Integer: integer() Decimal: {decimal, {integer(), integer()}} String: {string, binary()} Token: {token, binary()} Byte sequence: {binary, binary()} Boolean: boolean()
Data Types¶
sh_bare_item()¶
sh_bare_item() = integer() | sh_decimal() | boolean() | {string | token | binary, binary()}
sh_decimal()¶
sh_decimal() = {decimal, {integer(), integer()}}
sh_dictionary()¶
sh_dictionary() = [{binary(), sh_item() | sh_inner_list()}]
sh_inner_list()¶
sh_inner_list() = {list, [sh_item()], sh_params()}
sh_item()¶
sh_item() = {item, sh_bare_item(), sh_params()}
sh_list()¶
sh_list() = [sh_item() | sh_inner_list()]
sh_params()¶
sh_params() = [{binary(), sh_bare_item()}]
Function Index¶
Function Details¶
bare_item/1¶
bare_item(Integer) -> any()
dictionary/1¶
dictionary(Map::#{binary() => sh_item() | sh_inner_list()} | sh_dictionary()) -> iolist()
e2t/1 *¶
e2t(Dict) -> any()
e2tb/1 *¶
e2tb(V) -> any()
e2tp/1 *¶
e2tp(Params) -> any()
escape_string/2 *¶
escape_string(X1, Acc) -> any()
exp_div/1 *¶
exp_div(N) -> any()
expected_to_term/1 *¶
expected_to_term(Dict) -> any()
from_bare_item/1¶
from_bare_item(BareItem) -> any()
Convert an SF bare_item
to an Erlang term.
inner_list/1 *¶
inner_list(X1) -> any()
item/1¶
item(X1::sh_item()) -> iolist()
item_or_inner_list/1 *¶
item_or_inner_list(Value) -> any()
key_to_binary/1 *¶
key_to_binary(Key) -> any()
Convert an Erlang term to a binary key.
list/1¶
list(List::sh_list()) -> iolist()
params/1 *¶
params(Params) -> any()
parse_bare_item/1¶
parse_bare_item(X1) -> any()
Parse an integer or decimal.
parse_before_param/2 *¶
parse_before_param(X1, Acc) -> any()
parse_binary/1¶
parse_binary(Bin) -> any()
Parse a byte sequence binary.
parse_binary/2 *¶
parse_binary(X1, Acc) -> any()
parse_decimal/5 *¶
parse_decimal(R, L1, L2, IntAcc, FracAcc) -> any()
Parse a decimal binary.
parse_dict_before_member/2 *¶
parse_dict_before_member(X1, Acc) -> any()
Parse a binary SF dictionary before a member.
parse_dict_before_sep/2 *¶
parse_dict_before_sep(X1, Acc) -> any()
Parse a binary SF dictionary before a separator.
parse_dict_key/3 *¶
parse_dict_key(R, Acc, K) -> any()
parse_dictionary/1¶
parse_dictionary(X1::binary()) -> sh_dictionary()
Parse a binary SF dictionary.
parse_inner_list/2 *¶
parse_inner_list(R0, Acc) -> any()
parse_item/1¶
parse_item(Bin::binary()) -> sh_item()
Parse a binary SF item to an SF item
.
parse_item1/1 *¶
parse_item1(Bin) -> any()
parse_list/1¶
parse_list(Bin::binary()) -> sh_list()
Parse a binary SF list.
parse_list_before_member/2 *¶
parse_list_before_member(R, Acc) -> any()
Parse a binary SF list before a member.
parse_list_before_sep/2 *¶
parse_list_before_sep(X1, Acc) -> any()
Parse a binary SF list before a separator.
parse_list_member/2 *¶
parse_list_member(R0, Acc) -> any()
Parse a binary SF list before a member.
parse_number/3 *¶
parse_number(R, L, Acc) -> any()
Parse an integer or decimal binary.
parse_param/3 *¶
parse_param(R, Acc, K) -> any()
parse_string/2 *¶
parse_string(X1, Acc) -> any()
Parse a string binary.
parse_struct_hd_test_/0 *¶
parse_struct_hd_test_() -> any()
parse_token/2 *¶
parse_token(R, Acc) -> any()
Parse a token binary.
raw_to_binary/1 *¶
raw_to_binary(RawList) -> any()
to_bare_item/1 *¶
to_bare_item(BareItem) -> any()
Convert an Erlang term to an SF bare_item
.
to_dictionary/1¶
to_dictionary(Map) -> any()
Convert a map to a dictionary.
to_dictionary/2 *¶
to_dictionary(Dict, Rest) -> any()
to_dictionary_depth_test/0 *¶
to_dictionary_depth_test() -> any()
to_dictionary_test/0 *¶
to_dictionary_test() -> any()
to_inner_item/1 *¶
to_inner_item(Item) -> any()
Convert an Erlang term to an SF item
.
to_inner_list/1 *¶
to_inner_list(Inner) -> any()
Convert an inner list to an SF term.
to_inner_list/2 *¶
to_inner_list(Inner, Params) -> any()
to_inner_list/3 *¶
to_inner_list(Inner, Rest, Params) -> any()
to_item/1¶
to_item(Item) -> any()
Convert an item to a dictionary.
to_item/2¶
to_item(Item, Params) -> any()
to_item_or_inner_list/1 *¶
to_item_or_inner_list(ItemOrInner) -> any()
Convert an Erlang term to an SF item
or inner_list
.
to_item_test/0 *¶
to_item_test() -> any()
to_list/1¶
to_list(List) -> any()
Convert a list to an SF term.
to_list/2 *¶
to_list(Acc, Rest) -> any()
to_list_depth_test/0 *¶
to_list_depth_test() -> any()
to_list_test/0 *¶
to_list_test() -> any()
to_param/1 *¶
to_param(X1) -> any()
Convert an Erlang term to an SF parameter
.
trim_ws/1 *¶
trim_ws(R) -> any()
trim_ws_end/2 *¶
trim_ws_end(Value, N) -> any()