| #include "parse_text_proto.h" |
| |
| #include <cstddef> |
| #include <vector> |
| |
| #include "absl/log/log.h" |
| #include "absl/strings/str_format.h" |
| #include "absl/strings/str_split.h" |
| #include "absl/strings/string_view.h" |
| #include "google/protobuf/io/tokenizer.h" |
| |
| namespace safepower_agent { |
| namespace internal { |
| |
| static absl::string_view ExtractLine(absl::string_view text, int line) { |
| std::vector<absl::string_view> lines = absl::StrSplit(text, '\n'); |
| return (static_cast<std::size_t>(line) < lines.size()) ? lines[line] : ""; |
| } |
| |
| void ErrorCollector::RecordError(int line, google::protobuf::io::ColumnNumber column, |
| absl::string_view message) { |
| absl::StrAppendFormat(&message_, "%s [line %d, column %d]\n%s", message, |
| line + 1, column + 1, ExtractLine(text_proto_, line)); |
| } |
| |
| void ErrorCollector::RecordWarning(int line, google::protobuf::io::ColumnNumber column, |
| absl::string_view message) { |
| LOG(WARNING) << message << " [line " << line + 1 << ", column " << column + 1 |
| << "]\n" |
| << ExtractLine(text_proto_, line); |
| } |
| |
| } // namespace internal |
| } // namespace safepower_agent |