RESTinio
accept-language.hpp
Go to the documentation of this file.
1/*
2 * RESTinio
3 */
4
12#pragma once
13
15
16namespace restinio
17{
18
19namespace http_field_parsers
20{
21
22namespace accept_language_details
23{
24
27
29inline auto
31{
32 return produce<std::string>(
33 repeat(1u, 8u, alpha_symbol_p() >> to_container()),
34 repeat(0u, N,
35 symbol_p('-') >> to_container(),
37 )
38 );
39}
40
42inline auto
44{
45 return produce<std::string>(
47 symbol_p('*') >> to_container(),
49 )
50 );
51}
52
53} /* namespace accept_language_details */
54
55//
56// accept_language_value_t
57//
77{
78 struct item_t
79 {
80 std::string language_range;
82 };
83
84 using item_container_t = std::vector< item_t >;
85
87
94 static auto
96 {
97 using namespace accept_language_details;
98
99 return produce< accept_language_value_t >(
100 non_empty_comma_separated_list_p< item_container_t >(
101 produce< item_t >(
104 )
106 );
107 }
108
117 {
119 }
120};
121
122} /* namespace http_field_parsers */
123
124} /* namespace restinio */
125
Utilities for parsing values of http-fields.
A class for holding the parsed value of qvalue from RFC7231.
Definition: basics.hpp:136
static constexpr qvalue_details::extremum_max_t maximum
The indicator that tells that new qvalue object should have the maximal allowed value.
Definition: basics.hpp:147
#define RESTINIO_NODISCARD
RESTINIO_NODISCARD auto maybe(Clauses &&... clauses)
A factory function to create an optional clause.
RESTINIO_NODISCARD expected_t< typename Producer::result_type, parse_error_t > try_parse(string_view_t from, Producer producer)
Perform the parsing of the specified content by using specified value producer.
RESTINIO_NODISCARD auto repeat(std::size_t min_occurences, std::size_t max_occurences, Clauses &&... clauses)
A factory function to create repetitor of subclauses.
RESTINIO_NODISCARD auto as_result() noexcept
A factory function to create a as_result_consumer.
constexpr std::size_t N
A special marker that means infinite repetitions.
RESTINIO_NODISCARD auto to_container()
A factory function to create a to_container_consumer.
RESTINIO_NODISCARD auto symbol_p(char expected) noexcept
A factory function to create a symbol_producer.
RESTINIO_NODISCARD auto alternatives(Clauses &&... clauses)
A factory function to create an alternatives clause.
RESTINIO_NODISCARD auto alphanum_symbol_p()
A factory for producer of symbol that an ALPHA or DIGIT.
Definition: basics.hpp:810
RESTINIO_NODISCARD auto alpha_symbol_p()
A factory for producer of ALPHA symbols.
Definition: basics.hpp:788
RESTINIO_NODISCARD auto weight_p() noexcept
A factory function to create a producer for weight parameter.
Definition: basics.hpp:1277
nonstd::string_view string_view_t
Definition: string_view.hpp:19
nonstd::expected< T, E > expected_t
Definition: expected.hpp:22
Tools for working with the value of Accept-Language HTTP-field.
static RESTINIO_NODISCARD auto make_parser()
A factory function for a parser of Accept-Language value.
static RESTINIO_NODISCARD expected_t< accept_language_value_t, restinio::easy_parser::parse_error_t > try_parse(string_view_t what)
An attempt to parse Accept-Language HTTP-field.