diff options
Diffstat (limited to 'logic/cartridge/tools.rb')
-rw-r--r-- | logic/cartridge/tools.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/logic/cartridge/tools.rb b/logic/cartridge/tools.rb new file mode 100644 index 0000000..6a45bf0 --- /dev/null +++ b/logic/cartridge/tools.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require_relative 'fetch' +require_relative 'affixes' +require_relative 'adapters' + +module NanoBot + module Logic + module Cartridge + module Tools + def self.fetch_from_interface(cartridge, interface, action, path) + Fetch.cascate(cartridge, [ + [:interfaces, interface, :tools, action].concat(path), + [:interfaces, :tools, action].concat(path), + %i[interfaces tools].concat(path) + ]) + end + + def self.feedback?(cartridge, interface, action) + Fetch.cascate(cartridge, [ + [:interfaces, interface, :tools, action, :feedback], + [:interfaces, :tools, action, :feedback], + %i[interfaces tools feedback] + ]) + end + + def self.input(cartridge, interface, content) + lua = Adapter.expression(cartridge, interface, :input, :lua) + fennel = Adapter.expression(cartridge, interface, :input, :fennel) + + prefix = Affixes.get(cartridge, interface, :input, :prefix) + suffix = Affixes.get(cartridge, interface, :input, :suffix) + + { content:, prefix:, suffix:, lua:, fennel: } + end + + def self.output(cartridge, interface, result, streaming, _finished) + if streaming + result[:message] = { content: result[:message], lua: nil, fennel: nil } + return result + end + + lua = Adapter.expression(cartridge, interface, :output, :lua) + fennel = Adapter.expression(cartridge, interface, :output, :fennel) + + result[:message] = { content: result[:message], lua:, fennel: } + + result + end + end + end + end +end |