Storing all the Terminal settings in the instance
[nfoiled.git] / lib / nfoiled.rb
blob771db3d64b21228bcbc1eafe0b44facfbe7642e7
1 require 'ncurses'
3 ##
4 # See `README.markdown`.
5 module Nfoiled
6   Version = 0
7   
8   class <<self
9     @initialized = false
10     attr_accessor :initialized
11     alias_method :initialized?, :initialized
12   end
13   
14   ##
15   # This module method is responsible for setting up the entirety of Nfoiled's
16   # overall environment. It will be called before any other Nfoiled
17   # functionality is allowed. In most cases, this will be called for you.
18   # 
19   # This method also schedules `Nfoiled::finalize` to be automatically run
20   # `at_exit`.
21   def self.initialize!
22     self.initialized = true
23     at_exit { Nfoiled.finalize }
24   end
25   
26   ##
27   # This module method ensures that Nfoiled is initialized. It simply calls
28   # `Nfoiled::initialize!` if Nfoiled hasn't already been initialized.
29   def self.initialize
30     initialize! unless initialized?
31   end
32   
33   ##
34   # This method is responsible for tearing down any environment set up by the
35   # `Ncurses::initialize!` method.
36   def self.finalize!
37     self.initialized = false
38     ::Ncurses.endwin
39   end
40   
41   ##
42   # This module method ensures that Nfoiled is finalize. It simply calls
43   # `Nfoiled::finalize!` if Nfoiled hasn't already been finalized.
44   def self.finalize
45     # TODO: Ensure finalization on fatal errors or interrupts
46     finalize! if initialized?
47   end
48 end