mirror of
https://github.com/red0124/ssp.git
synced 2025-02-02 16:51:12 +01:00
Update error handling methods
This commit is contained in:
parent
81484f737f
commit
a7ea9e42e5
@ -124,7 +124,7 @@ public:
|
|||||||
if (splitter_.valid()) {
|
if (splitter_.valid()) {
|
||||||
return convert<Ts...>(splitter_.split_data_);
|
return convert<Ts...>(splitter_.split_data_);
|
||||||
} else {
|
} else {
|
||||||
set_error_bad_split();
|
handle_error_bad_split();
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ private:
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_bad_split() {
|
void handle_error_bad_split() {
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
error_.clear();
|
error_.clear();
|
||||||
error_.append(splitter_.error_msg());
|
error_.append(splitter_.error_msg());
|
||||||
@ -243,31 +243,31 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_unterminated_escape() {
|
void handle_error_unterminated_escape() {
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
error_.clear();
|
error_.clear();
|
||||||
splitter_.set_error_unterminated_escape();
|
splitter_.handle_error_unterminated_escape();
|
||||||
error_.append(splitter_.error_msg());
|
error_.append(splitter_.error_msg());
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
splitter_.set_error_unterminated_escape();
|
splitter_.handle_error_unterminated_escape();
|
||||||
} else {
|
} else {
|
||||||
error_ = true;
|
error_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_unterminated_quote() {
|
void handle_error_unterminated_quote() {
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
error_.clear();
|
error_.clear();
|
||||||
splitter_.set_error_unterminated_quote();
|
splitter_.handle_error_unterminated_quote();
|
||||||
error_.append(splitter_.error_msg());
|
error_.append(splitter_.error_msg());
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
splitter_.set_error_unterminated_quote();
|
splitter_.handle_error_unterminated_quote();
|
||||||
} else {
|
} else {
|
||||||
error_ = true;
|
error_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_multiline_limit_reached() {
|
void handle_error_multiline_limit_reached() {
|
||||||
constexpr static auto error_msg = "multiline limit reached";
|
constexpr static auto error_msg = "multiline limit reached";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -280,7 +280,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_invalid_conversion(const string_range msg, size_t pos) {
|
void handle_error_invalid_conversion(const string_range msg, size_t pos) {
|
||||||
constexpr static auto error_msg = "invalid conversion for parameter ";
|
constexpr static auto error_msg = "invalid conversion for parameter ";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -293,8 +293,8 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_validate(const char* const error, const string_range msg,
|
void handle_error_validation_failed(const char* const error,
|
||||||
size_t pos) {
|
const string_range msg, size_t pos) {
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
error_.clear();
|
error_.clear();
|
||||||
error_.append(error).append(" ").append(error_sufix(msg, pos));
|
error_.append(error).append(" ").append(error_sufix(msg, pos));
|
||||||
@ -305,7 +305,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_number_of_columns(size_t expected_pos, size_t pos) {
|
void handle_error_number_of_columns(size_t expected_pos, size_t pos) {
|
||||||
constexpr static auto error_msg1 =
|
constexpr static auto error_msg1 =
|
||||||
"invalid number of columns, expected: ";
|
"invalid number of columns, expected: ";
|
||||||
constexpr static auto error_msg2 = ", got: ";
|
constexpr static auto error_msg2 = ", got: ";
|
||||||
@ -324,7 +324,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_incompatible_mapping(size_t argument_size,
|
void handle_error_incompatible_mapping(size_t argument_size,
|
||||||
size_t mapping_size) {
|
size_t mapping_size) {
|
||||||
constexpr static auto error_msg1 =
|
constexpr static auto error_msg1 =
|
||||||
"number of arguments does not match mapping, expected: ";
|
"number of arguments does not match mapping, expected: ";
|
||||||
@ -353,24 +353,25 @@ private:
|
|||||||
clear_error();
|
clear_error();
|
||||||
|
|
||||||
if (!splitter_.valid()) {
|
if (!splitter_.valid()) {
|
||||||
set_error_bad_split();
|
handle_error_bad_split();
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!columns_mapped()) {
|
if (!columns_mapped()) {
|
||||||
if (sizeof...(Ts) != elems.size()) {
|
if (sizeof...(Ts) != elems.size()) {
|
||||||
set_error_number_of_columns(sizeof...(Ts), elems.size());
|
handle_error_number_of_columns(sizeof...(Ts), elems.size());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (sizeof...(Ts) != column_mappings_.size()) {
|
if (sizeof...(Ts) != column_mappings_.size()) {
|
||||||
set_error_incompatible_mapping(sizeof...(Ts),
|
handle_error_incompatible_mapping(sizeof...(Ts),
|
||||||
column_mappings_.size());
|
column_mappings_.size());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (elems.size() != number_of_columns_) {
|
if (elems.size() != number_of_columns_) {
|
||||||
set_error_number_of_columns(number_of_columns_, elems.size());
|
handle_error_number_of_columns(number_of_columns_,
|
||||||
|
elems.size());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -429,16 +430,17 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!extract(msg.first, msg.second, dst)) {
|
if (!extract(msg.first, msg.second, dst)) {
|
||||||
set_error_invalid_conversion(msg, pos);
|
handle_error_invalid_conversion(msg, pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if constexpr (has_m_ss_valid_t<T>) {
|
if constexpr (has_m_ss_valid_t<T>) {
|
||||||
if (T validator; !validator.ss_valid(dst)) {
|
if (T validator; !validator.ss_valid(dst)) {
|
||||||
if constexpr (has_m_error_t<T>) {
|
if constexpr (has_m_error_t<T>) {
|
||||||
set_error_validate(validator.error(), msg, pos);
|
handle_error_validation_failed(validator.error(), msg, pos);
|
||||||
} else {
|
} else {
|
||||||
set_error_validate("validation error", msg, pos);
|
handle_error_validation_failed("validation error", msg,
|
||||||
|
pos);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ public:
|
|||||||
if (reader_.file_) {
|
if (reader_.file_) {
|
||||||
read_line();
|
read_line();
|
||||||
if (eof_) {
|
if (eof_) {
|
||||||
set_error_eof_reached();
|
handle_error_eof_reached();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if constexpr (ignore_header) {
|
if constexpr (ignore_header) {
|
||||||
@ -48,7 +48,7 @@ public:
|
|||||||
header_ = reader_.get_header();
|
header_ = reader_.get_header();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
set_error_file_not_open();
|
handle_error_file_not_open();
|
||||||
eof_ = true;
|
eof_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,7 +100,7 @@ public:
|
|||||||
|
|
||||||
reader_.update();
|
reader_.update();
|
||||||
if (!reader_.converter_.valid()) {
|
if (!reader_.converter_.valid()) {
|
||||||
set_error_invalid_conversion();
|
handle_error_invalid_conversion();
|
||||||
read_line();
|
read_line();
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@ -108,14 +108,14 @@ public:
|
|||||||
clear_error();
|
clear_error();
|
||||||
|
|
||||||
if (eof_) {
|
if (eof_) {
|
||||||
set_error_eof_reached();
|
handle_error_eof_reached();
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto value = reader_.converter_.template convert<T, Ts...>();
|
auto value = reader_.converter_.template convert<T, Ts...>();
|
||||||
|
|
||||||
if (!reader_.converter_.valid()) {
|
if (!reader_.converter_.valid()) {
|
||||||
set_error_invalid_conversion();
|
handle_error_invalid_conversion();
|
||||||
}
|
}
|
||||||
|
|
||||||
read_line();
|
read_line();
|
||||||
@ -129,7 +129,7 @@ public:
|
|||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
void use_fields(const Ts&... fields_args) {
|
void use_fields(const Ts&... fields_args) {
|
||||||
if constexpr (ignore_header) {
|
if constexpr (ignore_header) {
|
||||||
set_error_header_ignored();
|
handle_error_header_ignored();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ public:
|
|||||||
auto fields = std::vector<std::string>{fields_args...};
|
auto fields = std::vector<std::string>{fields_args...};
|
||||||
|
|
||||||
if (fields.empty()) {
|
if (fields.empty()) {
|
||||||
set_error_empty_mapping();
|
handle_error_empty_mapping();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,14 +148,14 @@ public:
|
|||||||
|
|
||||||
for (const auto& field : fields) {
|
for (const auto& field : fields) {
|
||||||
if (std::count(fields.begin(), fields.end(), field) != 1) {
|
if (std::count(fields.begin(), fields.end(), field) != 1) {
|
||||||
set_error_field_used_multiple_times(field);
|
handle_error_field_used_multiple_times(field);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto index = header_index(field);
|
auto index = header_index(field);
|
||||||
|
|
||||||
if (!index) {
|
if (!index) {
|
||||||
set_error_invalid_field(field);
|
handle_error_invalid_field(field);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +344,7 @@ public:
|
|||||||
auto value =
|
auto value =
|
||||||
parser_.reader_.converter_.template convert<U, Us...>();
|
parser_.reader_.converter_.template convert<U, Us...>();
|
||||||
if (!parser_.reader_.converter_.valid()) {
|
if (!parser_.reader_.converter_.valid()) {
|
||||||
parser_.set_error_invalid_conversion();
|
parser_.handle_error_invalid_conversion();
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@ -391,7 +391,7 @@ private:
|
|||||||
constexpr bool returns_void = std::is_same_v<Ret, void>;
|
constexpr bool returns_void = std::is_same_v<Ret, void>;
|
||||||
if constexpr (!returns_void) {
|
if constexpr (!returns_void) {
|
||||||
if (!try_invoke_impl(arg, std::forward<Fun>(fun))) {
|
if (!try_invoke_impl(arg, std::forward<Fun>(fun))) {
|
||||||
set_error_failed_check();
|
handle_error_failed_check();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try_invoke_impl(arg, std::forward<Fun>(fun));
|
try_invoke_impl(arg, std::forward<Fun>(fun));
|
||||||
@ -454,10 +454,11 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_failed_check() {
|
void handle_error_failed_check() {
|
||||||
constexpr static auto error_msg = " failed check";
|
constexpr static auto error_msg = " failed check";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg);
|
error_.append(file_name_).append(error_msg);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg};
|
throw ss::exception{file_name_ + error_msg};
|
||||||
@ -466,10 +467,11 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_file_not_open() {
|
void handle_error_file_not_open() {
|
||||||
constexpr static auto error_msg = " could not be opened";
|
constexpr static auto error_msg = " could not be opened";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg);
|
error_.append(file_name_).append(error_msg);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg};
|
throw ss::exception{file_name_ + error_msg};
|
||||||
@ -478,10 +480,11 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_eof_reached() {
|
void handle_error_eof_reached() {
|
||||||
constexpr static auto error_msg = " read on end of file";
|
constexpr static auto error_msg = " read on end of file";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg);
|
error_.append(file_name_).append(error_msg);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg};
|
throw ss::exception{file_name_ + error_msg};
|
||||||
@ -490,8 +493,9 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_invalid_conversion() {
|
void handle_error_invalid_conversion() {
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_)
|
error_.append(file_name_)
|
||||||
.append(" ")
|
.append(" ")
|
||||||
.append(std::to_string(reader_.line_number_))
|
.append(std::to_string(reader_.line_number_))
|
||||||
@ -502,12 +506,13 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_header_ignored() {
|
void handle_error_header_ignored() {
|
||||||
constexpr static auto error_msg =
|
constexpr static auto error_msg =
|
||||||
": \"the header row is ignored within the setup it cannot be "
|
": \"the header row is ignored within the setup it cannot be "
|
||||||
"used\"";
|
"used\"";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg);
|
error_.append(file_name_).append(error_msg);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg};
|
throw ss::exception{file_name_ + error_msg};
|
||||||
@ -516,11 +521,12 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_invalid_field(const std::string& field) {
|
void handle_error_invalid_field(const std::string& field) {
|
||||||
constexpr static auto error_msg =
|
constexpr static auto error_msg =
|
||||||
": header does not contain given field: ";
|
": header does not contain given field: ";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg).append(field);
|
error_.append(file_name_).append(error_msg).append(field);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg + field};
|
throw ss::exception{file_name_ + error_msg + field};
|
||||||
@ -529,10 +535,11 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_field_used_multiple_times(const std::string& field) {
|
void handle_error_field_used_multiple_times(const std::string& field) {
|
||||||
constexpr static auto error_msg = ": given field used multiple times: ";
|
constexpr static auto error_msg = ": given field used multiple times: ";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
|
error_.clear();
|
||||||
error_.append(file_name_).append(error_msg).append(field);
|
error_.append(file_name_).append(error_msg).append(field);
|
||||||
} else if constexpr (throw_on_error) {
|
} else if constexpr (throw_on_error) {
|
||||||
throw ss::exception{file_name_ + error_msg + field};
|
throw ss::exception{file_name_ + error_msg + field};
|
||||||
@ -541,7 +548,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_empty_mapping() {
|
void handle_error_empty_mapping() {
|
||||||
constexpr static auto error_msg = "received empty mapping";
|
constexpr static auto error_msg = "received empty mapping";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -664,7 +671,7 @@ private:
|
|||||||
|
|
||||||
if (!append_next_line_to_buffer(next_line_buffer_,
|
if (!append_next_line_to_buffer(next_line_buffer_,
|
||||||
next_line_size_)) {
|
next_line_size_)) {
|
||||||
next_line_converter_.set_error_unterminated_escape();
|
next_line_converter_.handle_error_unterminated_escape();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -682,7 +689,7 @@ private:
|
|||||||
|
|
||||||
if (!append_next_line_to_buffer(next_line_buffer_,
|
if (!append_next_line_to_buffer(next_line_buffer_,
|
||||||
next_line_size_)) {
|
next_line_size_)) {
|
||||||
next_line_converter_.set_error_unterminated_quote();
|
next_line_converter_.handle_error_unterminated_quote();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -695,7 +702,7 @@ private:
|
|||||||
if (!append_next_line_to_buffer(next_line_buffer_,
|
if (!append_next_line_to_buffer(next_line_buffer_,
|
||||||
next_line_size_)) {
|
next_line_size_)) {
|
||||||
next_line_converter_
|
next_line_converter_
|
||||||
.set_error_unterminated_escape();
|
.handle_error_unterminated_escape();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -716,7 +723,7 @@ private:
|
|||||||
bool multiline_limit_reached(size_t& limit) {
|
bool multiline_limit_reached(size_t& limit) {
|
||||||
if constexpr (multiline::size > 0) {
|
if constexpr (multiline::size > 0) {
|
||||||
if (limit++ >= multiline::size) {
|
if (limit++ >= multiline::size) {
|
||||||
next_line_converter_.set_error_multiline_limit_reached();
|
next_line_converter_.handle_error_multiline_limit_reached();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ private:
|
|||||||
// resplitting, continue from last slice
|
// resplitting, continue from last slice
|
||||||
if (!quote::enabled || !multiline::enabled || split_data_.empty() ||
|
if (!quote::enabled || !multiline::enabled || split_data_.empty() ||
|
||||||
!unterminated_quote()) {
|
!unterminated_quote()) {
|
||||||
set_error_invalid_resplit();
|
handle_error_invalid_resplit();
|
||||||
return split_data_;
|
return split_data_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ private:
|
|||||||
|
|
||||||
// safety measure
|
// safety measure
|
||||||
if (new_size != -1 && static_cast<size_t>(new_size) < begin) {
|
if (new_size != -1 && static_cast<size_t>(new_size) < begin) {
|
||||||
set_error_invalid_resplit();
|
handle_error_invalid_resplit();
|
||||||
return split_data_;
|
return split_data_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ private:
|
|||||||
unterminated_quote_ = false;
|
unterminated_quote_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_empty_delimiter() {
|
void handle_error_empty_delimiter() {
|
||||||
constexpr static auto error_msg = "empty delimiter";
|
constexpr static auto error_msg = "empty delimiter";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -136,7 +136,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_mismatched_quote(size_t n) {
|
void handle_error_mismatched_quote(size_t n) {
|
||||||
constexpr static auto error_msg = "mismatched quote at position: ";
|
constexpr static auto error_msg = "mismatched quote at position: ";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -150,7 +150,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO rename with handle error
|
// TODO rename with handle error
|
||||||
void set_error_unterminated_escape() {
|
void handle_error_unterminated_escape() {
|
||||||
constexpr static auto error_msg =
|
constexpr static auto error_msg =
|
||||||
"unterminated escape at the end of the line";
|
"unterminated escape at the end of the line";
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO handle this efficiently (if multiline is enabled)
|
// TODO handle this efficiently (if multiline is enabled)
|
||||||
void set_error_unterminated_quote() {
|
void handle_error_unterminated_quote() {
|
||||||
constexpr static auto error_msg = "unterminated quote";
|
constexpr static auto error_msg = "unterminated quote";
|
||||||
|
|
||||||
if constexpr (string_error) {
|
if constexpr (string_error) {
|
||||||
@ -178,7 +178,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_error_invalid_resplit() {
|
void handle_error_invalid_resplit() {
|
||||||
constexpr static auto error_msg =
|
constexpr static auto error_msg =
|
||||||
"invalid resplit, new line must be longer"
|
"invalid resplit, new line must be longer"
|
||||||
"than the end of the last slice";
|
"than the end of the last slice";
|
||||||
@ -263,7 +263,7 @@ private:
|
|||||||
if (escape::match(*curr)) {
|
if (escape::match(*curr)) {
|
||||||
if (curr[1] == '\0') {
|
if (curr[1] == '\0') {
|
||||||
if constexpr (!multiline::enabled) {
|
if constexpr (!multiline::enabled) {
|
||||||
set_error_unterminated_escape();
|
handle_error_unterminated_escape();
|
||||||
}
|
}
|
||||||
done_ = true;
|
done_ = true;
|
||||||
return;
|
return;
|
||||||
@ -311,7 +311,7 @@ private:
|
|||||||
clear_error();
|
clear_error();
|
||||||
switch (delimiter.size()) {
|
switch (delimiter.size()) {
|
||||||
case 0:
|
case 0:
|
||||||
set_error_empty_delimiter();
|
handle_error_empty_delimiter();
|
||||||
return split_data_;
|
return split_data_;
|
||||||
case 1:
|
case 1:
|
||||||
return split_impl(delimiter[0]);
|
return split_impl(delimiter[0]);
|
||||||
@ -392,7 +392,7 @@ private:
|
|||||||
// eol, unterminated escape
|
// eol, unterminated escape
|
||||||
// eg: ... "hel\\0
|
// eg: ... "hel\\0
|
||||||
if constexpr (!multiline::enabled) {
|
if constexpr (!multiline::enabled) {
|
||||||
set_error_unterminated_escape();
|
handle_error_unterminated_escape();
|
||||||
}
|
}
|
||||||
done_ = true;
|
done_ = true;
|
||||||
break;
|
break;
|
||||||
@ -412,7 +412,7 @@ private:
|
|||||||
shift_and_set_current();
|
shift_and_set_current();
|
||||||
unterminated_quote_ = true;
|
unterminated_quote_ = true;
|
||||||
if constexpr (!multiline::enabled) {
|
if constexpr (!multiline::enabled) {
|
||||||
set_error_unterminated_quote();
|
handle_error_unterminated_quote();
|
||||||
}
|
}
|
||||||
split_data_.emplace_back(line_, begin_);
|
split_data_.emplace_back(line_, begin_);
|
||||||
done_ = true;
|
done_ = true;
|
||||||
@ -452,7 +452,7 @@ private:
|
|||||||
} else {
|
} else {
|
||||||
// mismatched quote
|
// mismatched quote
|
||||||
// eg: ...,"hel"lo,... -> error
|
// eg: ...,"hel"lo,... -> error
|
||||||
set_error_mismatched_quote(end_ - line_);
|
handle_error_mismatched_quote(end_ - line_);
|
||||||
split_data_.emplace_back(line_, begin_);
|
split_data_.emplace_back(line_, begin_);
|
||||||
}
|
}
|
||||||
done_ = true;
|
done_ = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user