Module: RubyLLM::Schema::DSL::Conditionals
- Included in:
- RubyLLM::Schema::DSL
- Defined in:
- lib/ruby_llm/schema/dsl/conditionals.rb
Instance Method Summary collapse
- #conditions ⇒ Object
- #dependencies ⇒ Object
- #dependent(property, &block) ⇒ Object
- #given(**properties, &block) ⇒ Object
Instance Method Details
#conditions ⇒ Object
7 8 9 |
# File 'lib/ruby_llm/schema/dsl/conditionals.rb', line 7 def conditions @conditions ||= [] end |
#dependencies ⇒ Object
11 12 13 |
# File 'lib/ruby_llm/schema/dsl/conditionals.rb', line 11 def dependencies @dependencies ||= {} end |
#dependent(property, &block) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/ruby_llm/schema/dsl/conditionals.rb', line 15 def dependent(property, &block) builder = ConditionalBuilder.new builder.instance_eval(&block) dependencies[property.to_s] = builder end |
#given(**properties, &block) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ruby_llm/schema/dsl/conditionals.rb', line 22 def given(**properties, &block) raise ArgumentError, "given requires at least one property condition" if properties.empty? if_schema = { properties: properties.transform_keys(&:to_s).transform_values { |v| coerce_condition(v) }, required: properties.keys.map(&:to_s) } then_builder = ConditionalBuilder.new else_builder = ConditionalBuilder.new context = ConditionalContext.new(then_builder, else_builder) context.instance_eval(&block) condition = {if: if_schema, then: then_builder.to_schema} condition[:else] = else_builder.to_schema unless else_builder.empty? conditions << condition end |