Skip to content

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

bare_item/1
dictionary/1
e2t/1*
e2tb/1*
e2tp/1*
escape_string/2*
exp_div/1*
expected_to_term/1*
from_bare_item/1Convert an SF bare_item to an Erlang term.
inner_list/1*
item/1
item_or_inner_list/1*
key_to_binary/1*Convert an Erlang term to a binary key.
list/1
params/1*
parse_bare_item/1Parse an integer or decimal.
parse_before_param/2*
parse_binary/1Parse a byte sequence binary.
parse_binary/2*
parse_decimal/5*Parse a decimal binary.
parse_dict_before_member/2*Parse a binary SF dictionary before a member.
parse_dict_before_sep/2*Parse a binary SF dictionary before a separator.
parse_dict_key/3*
parse_dictionary/1Parse a binary SF dictionary.
parse_inner_list/2*
parse_item/1Parse a binary SF item to an SF item.
parse_item1/1*
parse_list/1Parse a binary SF list.
parse_list_before_member/2*Parse a binary SF list before a member.
parse_list_before_sep/2*Parse a binary SF list before a separator.
parse_list_member/2*Parse a binary SF list before a member.
parse_number/3*Parse an integer or decimal binary.
parse_param/3*
parse_string/2*Parse a string binary.
parse_struct_hd_test_/0*
parse_token/2*Parse a token binary.
raw_to_binary/1*
to_bare_item/1*Convert an Erlang term to an SF bare_item.
to_dictionary/1Convert a map to a dictionary.
to_dictionary/2*
to_dictionary_depth_test/0*
to_dictionary_test/0*
to_inner_item/1*Convert an Erlang term to an SF item.
to_inner_list/1*Convert an inner list to an SF term.
to_inner_list/2*
to_inner_list/3*
to_item/1Convert an item to a dictionary.
to_item/2
to_item_or_inner_list/1*Convert an Erlang term to an SF item or inner_list.
to_item_test/0*
to_list/1Convert a list to an SF term.
to_list/2*
to_list_depth_test/0*
to_list_test/0*
to_param/1*Convert an Erlang term to an SF parameter.
trim_ws/1*
trim_ws_end/2*

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()