Sha256: 776048de22c143accdbecee6294c47e912c43ff632b57ed107361b4e2b0395ba

Contents?: true

Size: 1.28 KB

Versions: 10

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module Cryptum
  # Cryptum::UI Module used for Presenting the
  # Cryptum Curses Interface
  module UI
    # Gracefully Exit the UI and Attempt to Save event_history to Order Book Session File.
    module Exit
      # Supported Method Parameters::
      # Cryptum::UI::Exit.gracefully(
      #   event_history: 'optional - Pass in the event_history if available to save to order book'
      # )
      public_class_method def self.gracefully(opts = {})
        event_history = opts[:event_history]

        Curses.close_screen
        msg = 'Session Gracefully Terminated.'
        Cryptum::Log.append(level: :info, msg: msg, which_self: self, event_history: event_history)

        exit 0
      rescue Interrupt, StandardError => e
        # Produce a Stacktrace for anything else
        Cryptum::Log.append(level: :fatal, msg: e, which_self: self, event_history: event_history)
        exit 1
      ensure
        if event_history
          order_book_file = event_history.order_book[:path]
          File.write(
            order_book_file,
            JSON.pretty_generate(event_history.order_book)
          )
        end
      end

      # Display a List of Every UI Module

      public_class_method def self.help
        puts constants.sort
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
cryptum-0.0.431 lib/cryptum/ui/exit.rb
cryptum-0.0.430 lib/cryptum/ui/exit.rb
cryptum-0.0.429 lib/cryptum/ui/exit.rb
cryptum-0.0.428 lib/cryptum/ui/exit.rb
cryptum-0.0.427 lib/cryptum/ui/exit.rb
cryptum-0.0.426 lib/cryptum/ui/exit.rb
cryptum-0.0.425 lib/cryptum/ui/exit.rb
cryptum-0.0.424 lib/cryptum/ui/exit.rb
cryptum-0.0.423 lib/cryptum/ui/exit.rb
cryptum-0.0.422 lib/cryptum/ui/exit.rb