Class: LcpRuby::Workflow::ValueResolver
- Inherits:
-
Object
- Object
- LcpRuby::Workflow::ValueResolver
- Defined in:
- lib/lcp_ruby/workflow/value_resolver.rb
Class Method Summary collapse
-
.resolve(expression, record:, user:) ⇒ Object
Resolves a set_fields value expression to a concrete value.
Class Method Details
.resolve(expression, record:, user:) ⇒ Object
Resolves a set_fields value expression to a concrete value.
Supported shapes:
"current_user.id" / "record.title" / "current_date" / "current_datetime"
→ routed through DynamicReferences::Resolver
{ "value" => "literal" } → string literal
{ "value" => "null" } → nil
{ "value" => 42 } → 42
:now / :today (symbol) → migrated to "current_datetime" / "current_date"
anything else (string, number, true/false, nil) → itself
Legacy hash forms (date:, current_user:, field_ref:) are no longer accepted — callers should use the dotted-string form.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/lcp_ruby/workflow/value_resolver.rb', line 17 def self.resolve(expression, record:, user:) if expression.is_a?(Symbol) && %i[now today].include?(expression) raise WorkflowError, "set_fields: bare symbol :#{expression} is no longer supported. " \ "Use 'current_datetime' (for :now) or 'current_date' (for :today)." end if expression.is_a?(String) && DynamicReferences::Resolver.recognized?(expression) return DynamicReferences::Resolver.resolve( expression, context: { user: user, record: record } ) end return expression unless expression.is_a?(Hash) normalized = expression.transform_keys(&:to_s) if normalized.key?("value") resolve_literal(normalized["value"]) elsif normalized.key?("date") || normalized.key?("current_user") || normalized.key?("field_ref") raise WorkflowError, "set_fields: hash-form dynamic references ({date:}, {current_user:}, {field_ref:}) " \ "are no longer supported. Use the dotted string form — " \ "e.g. 'current_datetime', 'current_user.id', 'record.<field>'. Got: #{expression.inspect}" else expression end end |