Class: Bristow::Function

Inherits:
Object
  • Object
show all
Includes:
Delegate, Sgetter
Defined in:
lib/bristow/function.rb

Direct Known Subclasses

Bristow::Functions::Delegate

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Delegate

included

Methods included from Sgetter

included

Constructor Details

#initialize(function_name: self.class.function_name, description: self.class.description, parameters: self.class.parameters) ⇒ Function

Returns a new instance of Function.



12
13
14
15
16
17
18
19
20
# File 'lib/bristow/function.rb', line 12

def initialize(
  function_name: self.class.function_name,
  description: self.class.description,
  parameters: self.class.parameters
)
  @function_name = function_name
  @description = description
  @parameters = parameters
end

Class Method Details

.callObject



31
32
33
# File 'lib/bristow/function.rb', line 31

def self.call(...)
  new.call(...)
end

.to_schemaObject



22
23
24
25
26
27
28
# File 'lib/bristow/function.rb', line 22

def self.to_schema
  {
    name: function_name,
    description: description,
    parameters: parameters
  }
end

Instance Method Details

#call(**kwargs) ⇒ Object



35
36
37
38
39
# File 'lib/bristow/function.rb', line 35

def call(**kwargs)
  validation_errors = validate_required_parameters!(kwargs)
  return validation_errors unless validation_errors.nil?
  perform(**kwargs)
end

#performObject

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/bristow/function.rb', line 41

def perform(...)
  raise NotImplementedError, "#{self.class.name}#perform must be implemented"
end