From dd3cea4ef6fc759543c6457e419c31dc7df6140a Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Thu, 19 Nov 2020 12:10:36 -0600 Subject: More robust loading of command interpreter modules --- app/lib/command_tag/commands/variables.rb | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/lib/command_tag/commands/variables.rb (limited to 'app/lib/command_tag/commands/variables.rb') diff --git a/app/lib/command_tag/commands/variables.rb b/app/lib/command_tag/commands/variables.rb new file mode 100644 index 000000000..36ba0abd3 --- /dev/null +++ b/app/lib/command_tag/commands/variables.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +module CommandTag::Commands::Variables + def handle_000_variables_startup + @vars.merge!(persistent_vars_from(@account.metadata.fields)) if @account.metadata.present? + end + + def handle_999_variables_shutdown + @account.metadata.update!(fields: nonpersistent_vars_from(@account.metadata.fields).merge(persistent_vars_from(@vars))) + end + + def handle_set_at_start(args) + return if args.blank? + + args[0] = normalize(args[0]) + + case args.count + when 1 + @vars.delete(args[0]) + else + @vars[args[0]] = args[1..-1] + end + end + + def do_unset_at_start(args) + args.each do |arg| + @vars.delete(normalize(arg)) + end + end + + private + + def persistent_vars_from(vars) + vars.select { |key, value| key.start_with?('persist:') && value.present? && value.is_a?(Array) } + end + + def nonpersistent_vars_from(vars) + vars.reject { |key, value| key.start_with?('persist:') || value.blank? } + end +end -- cgit