Skip to content

Commit aac337c

Browse files
maskri17copybara-github
authored andcommitted
Adding remaining string ext functions
PiperOrigin-RevId: 807720234
1 parent 3160baa commit aac337c

File tree

11 files changed

+1895
-222
lines changed

11 files changed

+1895
-222
lines changed

bazel/deps.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ def cel_spec_deps():
142142
url = "https://github.com/bazelbuild/rules_python/releases/download/0.33.2/rules_python-0.33.2.tar.gz",
143143
)
144144

145-
CEL_SPEC_GIT_SHA = "afa18f9bd5a83f5960ca06c1f9faea406ab34ccc" # Dec 2, 2024
145+
CEL_SPEC_GIT_SHA = "b86370f27c3275e3240a552e10e42b2d658b456e" # Sep 19, 2025
146146
http_archive(
147147
name = "com_google_cel_spec",
148-
sha256 = "19b4084ba33cc8da7a640d999e46731efbec585ad2995951dc61a7af24f059cb",
148+
sha256 = "d5558cd419c8d46bdc958064cb97f963d1ea793866414c025906ec15033512ed",
149149
strip_prefix = "cel-spec-" + CEL_SPEC_GIT_SHA,
150150
urls = ["https://github.com/google/cel-spec/archive/" + CEL_SPEC_GIT_SHA + ".zip"],
151151
)

common/BUILD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,10 +628,12 @@ cc_library(
628628
":native_type",
629629
":optional_ref",
630630
":type",
631+
":typeinfo",
631632
":unknown",
632633
":value_kind",
633634
"//base:attributes",
634635
"//common/internal:byte_string",
636+
"//common/internal:reference_count",
635637
"//eval/internal:cel_value_equal",
636638
"//eval/public:cel_value",
637639
"//eval/public:message_wrapper",
@@ -656,6 +658,7 @@ cc_library(
656658
"//internal:utf8",
657659
"//internal:well_known_types",
658660
"//runtime:runtime_options",
661+
"//runtime/internal:errors",
659662
"@com_google_absl//absl/base",
660663
"@com_google_absl//absl/base:core_headers",
661664
"@com_google_absl//absl/base:no_destructor",

common/value.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include "common/native_type.h"
4040
#include "common/optional_ref.h"
4141
#include "common/type.h"
42+
#include "common/typeinfo.h"
4243
#include "common/value_kind.h"
4344
#include "common/values/bool_value.h" // IWYU pragma: export
4445
#include "common/values/bytes_value.h" // IWYU pragma: export
@@ -2537,6 +2538,75 @@ ErrorValueAssign::operator()(absl::Status status) const {
25372538
return common_internal::ImplicitlyConvertibleStatus();
25382539
}
25392540

2541+
inline absl::StatusOr<Value> StringValue::Join(
2542+
const ListValue& list,
2543+
const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
2544+
google::protobuf::MessageFactory* absl_nonnull message_factory,
2545+
google::protobuf::Arena* absl_nonnull arena) const {
2546+
ABSL_DCHECK(descriptor_pool != nullptr);
2547+
ABSL_DCHECK(message_factory != nullptr);
2548+
ABSL_DCHECK(arena != nullptr);
2549+
2550+
Value result;
2551+
CEL_RETURN_IF_ERROR(
2552+
Join(list, descriptor_pool, message_factory, arena, &result));
2553+
return result;
2554+
}
2555+
2556+
inline absl::StatusOr<Value> StringValue::Split(
2557+
const StringValue& delimiter, int64_t limit,
2558+
google::protobuf::Arena* absl_nonnull arena) const {
2559+
ABSL_DCHECK(arena != nullptr);
2560+
2561+
Value result;
2562+
CEL_RETURN_IF_ERROR(Split(delimiter, limit, arena, &result));
2563+
return result;
2564+
}
2565+
2566+
inline absl::Status StringValue::Split(const StringValue& delimiter,
2567+
google::protobuf::Arena* absl_nonnull arena,
2568+
Value* absl_nonnull result) const {
2569+
ABSL_DCHECK(arena != nullptr);
2570+
ABSL_DCHECK(result != nullptr);
2571+
2572+
return Split(delimiter, /*limit=*/-1, arena, result);
2573+
}
2574+
2575+
inline absl::StatusOr<Value> StringValue::Split(
2576+
const StringValue& delimiter, google::protobuf::Arena* absl_nonnull arena) const {
2577+
ABSL_DCHECK(arena != nullptr);
2578+
2579+
return Split(delimiter, /*limit=*/-1, arena);
2580+
}
2581+
2582+
inline absl::StatusOr<Value> StringValue::Replace(
2583+
const StringValue& needle, const StringValue& replacement, int64_t limit,
2584+
google::protobuf::Arena* absl_nonnull arena) const {
2585+
ABSL_DCHECK(arena != nullptr);
2586+
2587+
Value result;
2588+
CEL_RETURN_IF_ERROR(Replace(needle, replacement, limit, arena, &result));
2589+
return result;
2590+
}
2591+
2592+
inline absl::Status StringValue::Replace(const StringValue& needle,
2593+
const StringValue& replacement,
2594+
google::protobuf::Arena* absl_nonnull arena,
2595+
Value* absl_nonnull result) const {
2596+
ABSL_DCHECK(arena != nullptr);
2597+
ABSL_DCHECK(result != nullptr);
2598+
2599+
return Replace(needle, replacement, /*limit=*/-1, arena, result);
2600+
}
2601+
2602+
inline absl::StatusOr<Value> StringValue::Replace(
2603+
const StringValue& needle, const StringValue& replacement,
2604+
google::protobuf::Arena* absl_nonnull arena) const {
2605+
ABSL_DCHECK(arena != nullptr);
2606+
2607+
return Replace(needle, replacement, /*limit=*/-1, arena);
2608+
}
2609+
25402610
namespace common_internal {
25412611

25422612
template <typename Base>

0 commit comments

Comments
 (0)