Class: RubyLLM::Contract::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/contract/contract/definition.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Definition

Returns a new instance of Definition.



8
9
10
11
12
13
14
# File 'lib/ruby_llm/contract/contract/definition.rb', line 8

def initialize(&block)
  @parse_strategy = :text
  @invariants = []
  instance_eval(&block) if block
  @invariants = @invariants.freeze
  freeze
end

Instance Attribute Details

#invariantsObject (readonly)

Returns the value of attribute invariants.



6
7
8
# File 'lib/ruby_llm/contract/contract/definition.rb', line 6

def invariants
  @invariants
end

#parse_strategyObject (readonly)

Returns the value of attribute parse_strategy.



6
7
8
# File 'lib/ruby_llm/contract/contract/definition.rb', line 6

def parse_strategy
  @parse_strategy
end

Class Method Details

.buildObject



25
26
27
# File 'lib/ruby_llm/contract/contract/definition.rb', line 25

def self.build(&)
  new(&)
end

.merge(base, extra_invariants: [], parse_override: nil) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/ruby_llm/contract/contract/definition.rb', line 29

def self.merge(base, extra_invariants: [], parse_override: nil)
  new do
    parse(parse_override || base.parse_strategy)
    (base.invariants + extra_invariants).each do |inv|
      @invariants << inv
    end
  end
end

Instance Method Details

#invariant(description, &block) ⇒ Object Also known as: validate



20
21
22
# File 'lib/ruby_llm/contract/contract/definition.rb', line 20

def invariant(description, &block)
  @invariants << Invariant.new(description, block)
end

#parse(strategy) ⇒ Object



16
17
18
# File 'lib/ruby_llm/contract/contract/definition.rb', line 16

def parse(strategy)
  @parse_strategy = strategy
end