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.

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).

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVedeu::Configuration

Create a new singleton instance of Vedeu::Configuration.



268
269
270
# File 'lib/vedeu/configuration/configuration.rb', line 268

def initialize
  @options = defaults
end

Instance Attribute Details

#optionsHash (readonly)

Returns:

  • (Hash)


263
264
265
# File 'lib/vedeu/configuration/configuration.rb', line 263

def options
  @options
end

Class Method Details

.base_pathString

Returns the base_path value.

Returns:

  • (String)


40
41
42
# File 'lib/vedeu/configuration/configuration.rb', line 40

def base_path
  instance.options[:base_path]
end

.colour_modeFixnum

Returns the chosen colour mode.

Returns:

  • (Fixnum)


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

def colour_mode
  instance.options[:colour_mode]
end

.compressionBoolean Also known as: compression?

Returns the compression value.

Returns:

  • (Boolean)


47
48
49
# File 'lib/vedeu/configuration/configuration.rb', line 47

def compression
  instance.options[:compression]
end

.configurationVedeu::Configuration

Returns the configuration singleton. Append configuration methods to access the configuration variable.



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

def configuration
  instance
end

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

Provides the mechanism to configure Vedeu. If the client application sets options, override the defaults with those.

Examples:

Vedeu.configure do
  # ...
end

Parameters:

  • opts (Hash) (defaults to: {})
  • block (Proc)

Options Hash (opts):

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

Returns:

  • (Hash)

Raises:



68
69
70
# File 'lib/vedeu/configuration/configuration.rb', line 68

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

.debug?Boolean Also known as: debug

Returns whether debugging is enabled or disabled. Default is false; meaning only the top line of a backtrace from an exception is shown to the user of the client application.

Returns:

  • (Boolean)


96
97
98
# File 'lib/vedeu/configuration/configuration.rb', line 96

def debug?
  instance.options[:debug]
end

.drb?Boolean Also known as: drb

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

Returns:

  • (Boolean)


105
106
107
# File 'lib/vedeu/configuration/configuration.rb', line 105

def drb?
  instance.options[:drb]
end

.drb_heightFixnum

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

Returns:

  • (Fixnum)


127
128
129
# File 'lib/vedeu/configuration/configuration.rb', line 127

def drb_height
  instance.options[:drb_height]
end

.drb_hostString

Returns the hostname for the DRb server.

Returns:

  • (String)


113
114
115
# File 'lib/vedeu/configuration/configuration.rb', line 113

def drb_host
  instance.options[:drb_host]
end

.drb_portString

Returns the port for the DRb server.

Returns:

  • (String)


120
121
122
# File 'lib/vedeu/configuration/configuration.rb', line 120

def drb_port
  instance.options[:drb_port]
end

.drb_widthFixnum

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

Returns:

  • (Fixnum)


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

def drb_width
  instance.options[:drb_width]
end

.heightFixnum

Returns the client defined height for the terminal.

Returns:

  • (Fixnum)


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

def height
  instance.options[:height]
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)


151
152
153
# File 'lib/vedeu/configuration/configuration.rb', line 151

def interactive?
  instance.options[:interactive]
end

.logString

Returns the path to the log file.

Returns:

  • (String)


159
160
161
# File 'lib/vedeu/configuration/configuration.rb', line 159

def log
  instance.options[:log]
end

.log?Boolean

Returns a boolean indicating whether the log has been configured.

Returns:

  • (Boolean)


167
168
169
# File 'lib/vedeu/configuration/configuration.rb', line 167

def log?
  log != nil
end

.log_onlyArray<Symbol>

Returns:

  • (Array<Symbol>)


172
173
174
# File 'lib/vedeu/configuration/configuration.rb', line 172

def log_only
  instance.options[:log_only] || []
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)


181
182
183
# File 'lib/vedeu/configuration/configuration.rb', line 181

def once?
  instance.options[:once]
end

.options=(value) ⇒ void

This method returns an undefined value.

Parameters:

  • value (void)


248
249
250
# File 'lib/vedeu/configuration/configuration.rb', line 248

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

.profile?Boolean Also known as: profile

Returns a boolean indicating whether profiling has been enabled.

Returns:

  • (Boolean)


190
191
192
# File 'lib/vedeu/configuration/configuration.rb', line 190

def profile?
  instance.options[:profile]
end

.renderersArray<Class>

Returns the renderers which should receive output.

Returns:

  • (Array<Class>)


198
199
200
# File 'lib/vedeu/configuration/configuration.rb', line 198

def renderers
  instance.options[:renderers]
end

.reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


255
256
257
# File 'lib/vedeu/configuration/configuration.rb', line 255

def reset!
  instance.reset!
end

.rootClass

Returns the root of the client application. Vedeu will execute this controller first.

Returns:

  • (Class)


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

def root
  instance.options[:root]
end

.stderrFile|IO

Returns the redefined setting for STDERR.

Returns:

  • (File|IO)


227
228
229
# File 'lib/vedeu/configuration/configuration.rb', line 227

def stderr
  instance.options[:stderr]
end

.stdinFile|IO

Returns the redefined setting for STDIN.

Returns:

  • (File|IO)


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

def stdin
  instance.options[:stdin]
end

.stdoutFile|IO

Returns the redefined setting for STDOUT.

Returns:

  • (File|IO)


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

def stdout
  instance.options[:stdout]
end

.terminal_modeSymbol

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

Returns:

  • (Symbol)


235
236
237
# File 'lib/vedeu/configuration/configuration.rb', line 235

def terminal_mode
  instance.options[:terminal_mode]
end

.widthFixnum

Returns the client defined width for the terminal.

Returns:

  • (Fixnum)


242
243
244
# File 'lib/vedeu/configuration/configuration.rb', line 242

def width
  instance.options[:width]
end

Instance Method Details

#base_pathString (private)

Returns:

  • (String)


342
343
344
# File 'lib/vedeu/configuration/configuration.rb', line 342

def base_path
  File.expand_path('.')
end

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

Set up default configuration and then allow the client application to modify it via the configuration API.

Parameters:

  • block (Proc)

Returns:

  • (Hash)


277
278
279
280
281
282
283
284
285
# File 'lib/vedeu/configuration/configuration.rb', line 277

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

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

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

  Vedeu::Configuration
end

#defaultsHash<Symbol => void> (private)

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

Returns:

  • (Hash<Symbol => void>)


300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# File 'lib/vedeu/configuration/configuration.rb', line 300

def defaults
  {
    base_path:     base_path,
    colour_mode:   detect_colour_mode,
    compression:   true,
    debug:         false,
    drb:           false,
    drb_host:      nil,
    drb_port:      nil,
    drb_height:    25,
    drb_width:     80,
    height:        nil,
    interactive:   true,
    log:           nil,
    log_only:      [],
    once:          false,
    profile:       false,
    renderers:     [Vedeu::Renderers::Terminal.new],
    root:          nil,
    stdin:         nil,
    stdout:        nil,
    stderr:        nil,
    terminal_mode: :raw,
    width:         nil,
  }
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)


332
333
334
335
336
337
338
339
# File 'lib/vedeu/configuration/configuration.rb', line 332

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)


290
291
292
# File 'lib/vedeu/configuration/configuration.rb', line 290

def reset!
  @options = defaults
end