MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / SnakeCaseToCamelCaseImpl

Function SnakeCaseToCamelCaseImpl

internal/json.cc:77–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75// Yanked from the implementation `google::protobuf::util::TimeUtil`.
76template <typename Chars>
77absl::Status SnakeCaseToCamelCaseImpl(Chars input,
78 std::string* absl_nonnull output) {
79 output->clear();
80 bool after_underscore = false;
81 for (char input_char : input) {
82 if (absl::ascii_isupper(input_char)) {
83 // The field name must not contain uppercase letters.
84 return absl::InvalidArgumentError(
85 "field mask path name contains uppercase letters");
86 }
87 if (after_underscore) {
88 if (absl::ascii_islower(input_char)) {
89 output->push_back(absl::ascii_toupper(input_char));
90 after_underscore = false;
91 } else {
92 // The character after a "_" must be a lowercase letter.
93 return absl::InvalidArgumentError(
94 "field mask path contains '_' not followed by a lowercase letter");
95 }
96 } else if (input_char == '_') {
97 after_underscore = true;
98 } else {
99 output->push_back(input_char);
100 }
101 }
102 if (after_underscore) {
103 // Trailing "_".
104 return absl::InvalidArgumentError("field mask path contains trailing '_'");
105 }
106 return absl::OkStatus();
107}
108
109absl::Status SnakeCaseToCamelCase(const well_known_types::StringValue& input,
110 std::string* absl_nonnull output) {

Callers 1

SnakeCaseToCamelCaseFunction · 0.85

Calls 1

clearMethod · 0.80

Tested by

no test coverage detected