summaryrefslogtreecommitdiff
path: root/controllers/interfaces
diff options
context:
space:
mode:
authoricebaker <icebaker@proton.me>2023-05-27 12:40:53 -0300
committericebaker <icebaker@proton.me>2023-05-27 12:40:53 -0300
commit3723b08d1ff2b87c51e9595398e9c214f498f748 (patch)
tree4e71e396831a64fceb4b90e28fd9fb3a44548abb /controllers/interfaces
parent084923fe46390b3f38350650574503d71d42cc89 (diff)
improving repl apis
Diffstat (limited to 'controllers/interfaces')
-rw-r--r--controllers/interfaces/eval.rb8
-rw-r--r--controllers/interfaces/repl.rb25
2 files changed, 21 insertions, 12 deletions
diff --git a/controllers/interfaces/eval.rb b/controllers/interfaces/eval.rb
index 851770b..5f472ad 100644
--- a/controllers/interfaces/eval.rb
+++ b/controllers/interfaces/eval.rb
@@ -10,13 +10,13 @@ module NanoBot
module Controllers
module Interfaces
module Eval
- def self.evaluate(input, cartridge, session)
- prefix = Logic::Cartridge::Affixes.get(cartridge, :eval, :output, :prefix)
- suffix = Logic::Cartridge::Affixes.get(cartridge, :eval, :output, :suffix)
+ def self.evaluate(input, cartridge, session, mode)
+ prefix = Logic::Cartridge::Affixes.get(cartridge, mode.to_sym, :output, :prefix)
+ suffix = Logic::Cartridge::Affixes.get(cartridge, mode.to_sym, :output, :suffix)
session.print(prefix) unless prefix.nil?
- session.evaluate_and_print(input, mode: 'eval')
+ session.evaluate_and_print(input, mode:)
session.print(suffix) unless suffix.nil?
end
diff --git a/controllers/interfaces/repl.rb b/controllers/interfaces/repl.rb
index ee6234b..fd16ea6 100644
--- a/controllers/interfaces/repl.rb
+++ b/controllers/interfaces/repl.rb
@@ -10,18 +10,26 @@ module NanoBot
module Controllers
module Interfaces
module REPL
+ def self.boot(cartridge, session, prefix = nil, suffix = nil, as: 'repl')
+ return unless Logic::Helpers::Hash.fetch(cartridge, %i[behaviors boot instruction])
+
+ prefix ||= Logic::Cartridge::Affixes.get(cartridge, as.to_sym, :output, :prefix)
+ suffix ||= Logic::Cartridge::Affixes.get(cartridge, as.to_sym, :output, :suffix)
+
+ session.print(prefix) unless prefix.nil?
+ session.boot(mode: as)
+ session.print(suffix) unless suffix.nil?
+ end
+
def self.start(cartridge, session)
prefix = Logic::Cartridge::Affixes.get(cartridge, :repl, :output, :prefix)
suffix = Logic::Cartridge::Affixes.get(cartridge, :repl, :output, :suffix)
- if Logic::Helpers::Hash.fetch(cartridge, %i[behaviors boot instruction])
- session.print(prefix) unless prefix.nil?
- session.boot(mode: 'repl')
- session.print(suffix) unless suffix.nil?
- session.print("\n")
- end
+ boot(cartridge, session, prefix, suffix)
+
+ session.print("\n") if Logic::Helpers::Hash.fetch(cartridge, %i[behaviors boot instruction])
- prompt = build_prompt(Logic::Helpers::Hash.fetch(cartridge, %i[interfaces repl prompt]))
+ prompt = self.prompt(cartridge)
Pry.config.prompt = Pry::Prompt.new(
'REPL',
@@ -40,7 +48,8 @@ module NanoBot
Pry.start
end
- def self.build_prompt(prompt)
+ def self.prompt(cartridge)
+ prompt = Logic::Helpers::Hash.fetch(cartridge, %i[interfaces repl prompt])
result = ''
if prompt.is_a?(Array)