Class: Twterm::PersistableConfigurationProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/twterm/persistable_configuration_proxy.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instance, filepath) ⇒ PersistableConfigurationProxy

Returns a new instance of PersistableConfigurationProxy.

Parameters:



7
8
9
10
# File 'lib/twterm/persistable_configuration_proxy.rb', line 7

def initialize(instance, filepath)
  @instance = instance
  @filepath = filepath
end

Class Method Details

.getcObject



21
22
23
24
25
26
# File 'lib/twterm/persistable_configuration_proxy.rb', line 21

def self.getc
  system('stty raw -echo')
  STDIN.getc
ensure
  system('stty -raw echo')
end

.load_from_file!(klass, filepath) ⇒ Twterm::PersistableConfigurationProxy

Loads a configuration file from and returns a proxy. Falls back to the default value when the specified file does not exist.

Parameters:

Returns:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/twterm/persistable_configuration_proxy.rb', line 34

def self.load_from_file!(klass, filepath)
  config = TomlRB.load_file(filepath, symbolize_keys: true)
  new(klass.new(config), filepath).migrate!
rescue Errno::ENOENT
  new(klass.default, filepath)
rescue TomlRB::ParseError, TomlRB::ValueOverwriteError => e
  msg =
    case e
    when TomlRB::ParseError
      "Your configuration file could not be parsed"
    when TomlRB::ValueOverwriteError
      "`#{e.key}` is declared more than once"
    end

  warn "\\e[1mCould not load the configuration file: \#{filepath}\\e[0m\n(\#{msg})\n\nFalling back to the default key assignments\n\nCheck the syntax and edit the file manually,\nor remove it and launch twterm again to restore\n\nPress any key to continue\n  EOS\n\n  getc\n\n  new(klass.default, filepath)\nend\n"

Instance Method Details

#[](*args) ⇒ Object



12
13
14
# File 'lib/twterm/persistable_configuration_proxy.rb', line 12

def [](*args)
  instance.[](*args)
end

#[]=(*args) ⇒ Object



16
17
18
19
# File 'lib/twterm/persistable_configuration_proxy.rb', line 16

def []=(*args)
  instance.[]=(*args)
  persist!
end

#migrate!self

Returns:

  • (self)


66
67
68
69
70
71
# File 'lib/twterm/persistable_configuration_proxy.rb', line 66

def migrate!
  instance.complete_missing_items!
  persist!

  self
end