Class: Vedeu::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/vedeu/configuration/configuration.rb

Overview

Allows the customisation of Vedeu’s behaviour through the configuration API or command-line arguments.

Provides access to Vedeu’s configuration, which was set with sensible defaults (influenced by environment variables), overridden by client application settings (via the configuration API), or any command-line arguments provided.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Create a new singleton instance of Vedeu::Configuration.



225
226
227
# File 'lib/vedeu/configuration/configuration.rb', line 225

def initialize
  @options = defaults
end

Instance Attribute Details

#optionsHash (readonly)

Returns:

  • (Hash)


220
221
222
# File 'lib/vedeu/configuration/configuration.rb', line 220

def options
  @options
end

Class Method Details

.colour_modeFixnum

Returns the chosen colour mode.

Returns:

  • (Fixnum)


63
64
65
# File 'lib/vedeu/configuration/configuration.rb', line 63

def colour_mode
  instance.options[:colour_mode]
end

.configurationVedeu::Configuration

Returns the configuration singleton.



56
57
58
# File 'lib/vedeu/configuration/configuration.rb', line 56

def configuration
  instance
end

.configure(args = [], opts = {}, &block) ⇒ Hash

Configure Vedeu with sensible defaults. If the client application sets options, override the defaults with those, and if command-line arguments are provided at application invocation, override any options with the arguments provided.

Parameters:

  • args (Array) (defaults to: [])
  • opts (Hash) (defaults to: {})
  • block (Proc)

Options Hash (opts):

  • stdin (File|IO)
  • stdout (File|IO)
  • stderr (File|IO)

Returns:

  • (Hash)

Raises:

  • (InvalidSyntax)

    When the required block is not given.



49
50
51
# File 'lib/vedeu/configuration/configuration.rb', line 49

def configure(args = [], opts = {}, &block)
  instance.configure(args, opts, &block)
end

.debug?Boolean Also known as: debug

Returns whether debugging is enabled or disabled. Default is false; meaning nothing apart from warnings are written to the log file.

Returns:

  • (Boolean)


71
72
73
# File 'lib/vedeu/configuration/configuration.rb', line 71

def debug?
  instance.options[:debug]
end

.default_system_keysHash

Vedeu’s default system keys. Use system_keys.

Returns:

  • (Hash)


194
195
196
197
198
199
200
201
# File 'lib/vedeu/configuration/configuration.rb', line 194

def default_system_keys
  {
    exit:        'q',
    focus_next:  :tab,
    focus_prev:  :shift_tab,
    mode_switch: :escape,
  }
end

.drb?Boolean Also known as: drb

Returns whether the DRb server is enabled or disabled. Default is false.

Returns:

  • (Boolean)


79
80
81
# File 'lib/vedeu/configuration/configuration.rb', line 79

def drb?
  instance.options[:drb]
end

.drb_heightFixnum

Returns the height for the fake terminal in the DRb server.

Returns:

  • (Fixnum)


101
102
103
# File 'lib/vedeu/configuration/configuration.rb', line 101

def drb_height
  instance.options[:drb_height]
end

.drb_hostString

Returns the hostname for the DRb server.

Returns:

  • (String)


87
88
89
# File 'lib/vedeu/configuration/configuration.rb', line 87

def drb_host
  instance.options[:drb_host]
end

.drb_portString

Returns the port for the DRb server.

Returns:

  • (String)


94
95
96
# File 'lib/vedeu/configuration/configuration.rb', line 94

def drb_port
  instance.options[:drb_port]
end

.drb_widthFixnum

Returns the width for the fake terminal in the DRb server.

Returns:

  • (Fixnum)


108
109
110
# File 'lib/vedeu/configuration/configuration.rb', line 108

def drb_width
  instance.options[:drb_width]
end

.interactive?Boolean Also known as: interactive

Returns whether the application is interactive (required user input) or standalone (will run until terminates of natural causes.) Default is true; meaning the application will require user input.

Returns:

  • (Boolean)


117
118
119
# File 'lib/vedeu/configuration/configuration.rb', line 117

def interactive?
  instance.options[:interactive]
end

.logString

Returns the path to the log file.

Returns:

  • (String)


125
126
127
# File 'lib/vedeu/configuration/configuration.rb', line 125

def log
  instance.options[:log]
end

.once?Boolean Also known as: once

Returns whether the application will run through its main loop once or not. Default is false; meaning the application will loop forever or until terminated by the user.

Returns:

  • (Boolean)


134
135
136
# File 'lib/vedeu/configuration/configuration.rb', line 134

def once?
  instance.options[:once]
end

.options=(value) ⇒ void

This method returns an undefined value.

Parameters:

  • value (void)


205
206
207
# File 'lib/vedeu/configuration/configuration.rb', line 205

def options=(value)
  instance.options = value
end

.renderersArray<Class>

Returns the renderers which should receive output.

Returns:

  • (Array<Class>)


142
143
144
# File 'lib/vedeu/configuration/configuration.rb', line 142

def renderers
  instance.options[:renderers]
end

.reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


212
213
214
# File 'lib/vedeu/configuration/configuration.rb', line 212

def reset!
  instance.reset!
end

.stderrFile|IO

Returns the redefined setting for STDERR.

Returns:

  • (File|IO)


163
164
165
# File 'lib/vedeu/configuration/configuration.rb', line 163

def stderr
  instance.options[:stderr]
end

.stdinFile|IO

Returns the redefined setting for STDIN.

Returns:

  • (File|IO)


149
150
151
# File 'lib/vedeu/configuration/configuration.rb', line 149

def stdin
  instance.options[:stdin]
end

.stdoutFile|IO

Returns the redefined setting for STDOUT.

Returns:

  • (File|IO)


156
157
158
# File 'lib/vedeu/configuration/configuration.rb', line 156

def stdout
  instance.options[:stdout]
end

.system_keysHash

Returns the redefined system keys for vital Vedeu functions.

Returns:

  • (Hash)


170
171
172
# File 'lib/vedeu/configuration/configuration.rb', line 170

def system_keys
  instance.options[:system_keys]
end

.terminal_modeSymbol

Returns the terminal mode for the application. Default is ‘:raw`.

Returns:

  • (Symbol)


177
178
179
# File 'lib/vedeu/configuration/configuration.rb', line 177

def terminal_mode
  instance.options[:terminal_mode]
end

.trace?Boolean Also known as: trace

Returns whether tracing is enabled or disabled. Tracing is very noisy in the log file (logging method calls and events trigger). Default is false; meaning tracing is disabled.

Returns:

  • (Boolean)


186
187
188
# File 'lib/vedeu/configuration/configuration.rb', line 186

def trace?
  instance.options[:trace]
end

Instance Method Details

#configure(args = [], opts = {}, &block) ⇒ Hash

Set up default configuration and then allow the client application to modify it via the configuration API. After this, process any command line arguments as potential configuration and apply that.

Parameters:

  • args (Array) (defaults to: [])
  • block (Proc)

Returns:

  • (Hash)


236
237
238
239
240
241
242
243
244
245
# File 'lib/vedeu/configuration/configuration.rb', line 236

def configure(args = [], opts = {}, &block)
  @options.merge!(opts)

  @options.merge!(Config::API.configure(&block)) if block_given?
  @options.merge!(Config::CLI.configure(args)) if args.any?

  Vedeu::Renderers.renderer(*@options[:renderers])

  Vedeu::Configuration
end

#defaultsHash (private)

The Vedeu default options, which of course are influenced by environment variables also.

Returns:

  • (Hash)


260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# File 'lib/vedeu/configuration/configuration.rb', line 260

def defaults
  {
    colour_mode:   detect_colour_mode,
    debug:         false,
    drb:           false,
    drb_host:      nil,
    drb_port:      nil,
    drb_height:    25,
    drb_width:     80,
    interactive:   true,
    log:           '/tmp/vedeu.log',
    once:          false,
    renderers:     [Vedeu::Renderers::Terminal],
    stdin:         nil,
    stdout:        nil,
    stderr:        nil,
    system_keys:   Vedeu::Configuration.default_system_keys,
    terminal_mode: :raw,
    trace:         false,
  }
end

#detect_colour_modeFixnum (private)

Attempt to determine the terminal colour mode via $TERM environment variable, or be optimistic and settle for 256 colours.

Returns:

  • (Fixnum)


286
287
288
289
290
291
292
293
# File 'lib/vedeu/configuration/configuration.rb', line 286

def detect_colour_mode
  case ENV['TERM']
  when /-truecolor$/         then 16_777_216
  when /-256color$/, 'xterm' then 256
  when /-color$/, 'rxvt'     then 16
  else 256
  end
end

#reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


250
251
252
# File 'lib/vedeu/configuration/configuration.rb', line 250

def reset!
  @options = defaults
end