| 231 | } |
| 232 | |
| 233 | absl::Status RegisterRegexExtensionFunctions(FunctionRegistry& registry, |
| 234 | bool disable_extract, |
| 235 | int regex_max_program_size) { |
| 236 | if (!disable_extract) { |
| 237 | CEL_RETURN_IF_ERROR(( |
| 238 | BinaryFunctionAdapter<absl::StatusOr<Value>, StringValue, StringValue>:: |
| 239 | RegisterGlobalOverload( |
| 240 | "regex.extract", |
| 241 | absl::bind_front(&Extract, regex_max_program_size), registry))); |
| 242 | } |
| 243 | CEL_RETURN_IF_ERROR( |
| 244 | (BinaryFunctionAdapter<absl::StatusOr<Value>, StringValue, StringValue>:: |
| 245 | RegisterGlobalOverload( |
| 246 | "regex.extractAll", |
| 247 | absl::bind_front(&ExtractAll, regex_max_program_size), |
| 248 | registry))); |
| 249 | CEL_RETURN_IF_ERROR( |
| 250 | (TernaryFunctionAdapter< |
| 251 | absl::StatusOr<Value>, StringValue, StringValue, |
| 252 | StringValue>::RegisterGlobalOverload("regex.replace", |
| 253 | absl::bind_front( |
| 254 | &ReplaceAll, |
| 255 | regex_max_program_size), |
| 256 | registry))); |
| 257 | CEL_RETURN_IF_ERROR( |
| 258 | (QuaternaryFunctionAdapter<absl::StatusOr<Value>, StringValue, |
| 259 | StringValue, StringValue, int64_t>:: |
| 260 | RegisterGlobalOverload( |
| 261 | "regex.replace", |
| 262 | absl::bind_front(&ReplaceN, regex_max_program_size), registry))); |
| 263 | return absl::OkStatus(); |
| 264 | } |
| 265 | |
| 266 | const Type& OptionalStringType() { |
| 267 | static absl::NoDestructor<Type> kInstance( |