Class: Vedeu::Config::API
- Inherits:
-
Object
- Object
- Vedeu::Config::API
- Includes:
- Vedeu::Common
- Defined in:
- lib/vedeu/configuration/api.rb
Overview
The Configuration::API class parses client application configuration into options used by Vedeu to affect certain behaviours.
Instance Attribute Summary collapse
- #default ⇒ Hash readonly protected
Class Method Summary collapse
Instance Method Summary collapse
-
#background(value = nil) ⇒ Vedeu::Colours::Background
-
#base_path(path = nil) ⇒ String
Override the base path for the application (for locating templates and other resources).
-
#colour(attrs = {}) ⇒ Hash<Symbol => void>
Sets the background and foreground of the terminal.
-
#colour_mode(value = nil) ⇒ Boolean
Sets the colour mode of the terminal.
-
#compression(value = true) ⇒ Boolean
(also: #compression!)
Compression reduces the number of escape sequences being sent to the terminal which improves redraw/render/refresh rate.
-
#configuration ⇒ Hash<Symbol => Boolean, Fixnum, String>
Returns the configuration options set up by the API DSL.
-
#cooked! ⇒ Boolean
(also: #cooked)
Sets the terminal mode to ‘cooked`.
-
#debug!(value = true) ⇒ Boolean
(also: #debug)
Sets boolean to enable/disable debugging.
-
#drb!(value = true) ⇒ Boolean
(also: #drb)
-
#drb_height(height = 25) ⇒ Fixnum
Sets the height of the fake terminal in the DRb server.
-
#drb_host(hostname = '') ⇒ String
-
#drb_port(port = '') ⇒ String
-
#drb_width(width = 80) ⇒ Fixnum
Sets the width of the fake terminal in the DRb server.
-
#fake! ⇒ Boolean
(also: #fake)
Sets the terminal mode to ‘fake`.
-
#foreground(value = nil) ⇒ Vedeu::Colours::Foreground
-
#height(height = 25) ⇒ Fixnum
(also: #height=)
Sets the height of the terminal.
-
#initialize(default, &block) ⇒ Vedeu::Configuration::API
constructor
Returns a new instance of Vedeu::Config::API.
-
#interactive!(value = true) ⇒ Boolean
(also: #interactive)
- #invalid_mode! ⇒ Object private
-
#log(filename_or_false = false) ⇒ NilClass|String
Sets the location of the log file, or disables the log.
-
#log_except(*types) ⇒ Array<Symbol>
Log specific message types except those given.
-
#log_only(*types) ⇒ Array<Symbol>
Only log specific message types.
- #log_options! ⇒ Hash private
-
#mouse!(value = true) ⇒ Boolean
(also: #mouse)
Sets boolean to enable/disable mouse support.
-
#options ⇒ Hash<Symbol => void>
private
Returns the options set via the configuration API DSL or an empty Hash when none were set.
-
#profile!(value = true) ⇒ Boolean
(also: #profile)
Sets boolean to enable/disable profiling.
-
#raw! ⇒ Boolean
(also: #raw)
Sets the terminal mode to ‘raw`.
-
#renderer(*renderer) ⇒ Array<Class>
(also: #renderers)
Sets the renderers for Vedeu.
-
#root(*args) ⇒ Class
Sets the root of the client application.
-
#run_once!(value = true) ⇒ Boolean
(also: #run_once)
-
#standalone!(value = true) ⇒ Boolean
(also: #standalone)
-
#stderr(io) ⇒ File|IO
Sets the value of STDERR.
-
#stdin(io) ⇒ File|IO
Sets the value of STDIN.
-
#stdout(io) ⇒ File|IO
Sets the value of STDOUT.
-
#terminal_mode(mode) ⇒ Symbol
(also: #terminal_mode=)
Sets the terminal mode.
-
#threaded(boolean) ⇒ Boolean
(also: #threaded=)
Instructs Vedeu to use threads to perform certain actions.
-
#valid_colour_mode?(value) ⇒ Boolean
private
Checks that the value provided to #colour_mode is valid.
-
#valid_mode?(mode) ⇒ Boolean
private
Checks that the mode provided is valid.
-
#width(width = 80) ⇒ Fixnum
(also: #width=)
Sets the width of the terminal.
Methods included from Vedeu::Common
#absent?, #array?, #boolean, #boolean?, #empty_value?, #escape?, #falsy?, #hash?, #line_model?, #numeric?, #positionable?, #present?, #snake_case, #stream_model?, #string?, #symbol?, #truthy?, #view_model?
Constructor Details
#initialize(default, &block) ⇒ Vedeu::Configuration::API
Returns a new instance of Vedeu::Config::API.
Configure Vedeu via a simple configuration API DSL. Options set here override the default Vedeu configuration set in Vedeu::Configuration#defaults.
Vedeu.configure do
# ...
end
33 34 35 36 37 |
# File 'lib/vedeu/configuration/api.rb', line 33 def initialize(default, &block) @default = default instance_eval(&block) if block_given? end |
Instance Attribute Details
#default ⇒ Hash (readonly, protected)
585 586 587 |
# File 'lib/vedeu/configuration/api.rb', line 585 def default @default end |
Class Method Details
.configure(default, &block) ⇒ Object
16 17 18 |
# File 'lib/vedeu/configuration/api.rb', line 16 def self.configure(default, &block) new(default, &block).configuration end |
Instance Method Details
#background(value = nil) ⇒ Vedeu::Colours::Background
532 533 534 535 536 |
# File 'lib/vedeu/configuration/api.rb', line 532 def background(value = nil) return [:background] unless value [:background] = value end |
#base_path(path = nil) ⇒ String
378 379 380 |
# File 'lib/vedeu/configuration/api.rb', line 378 def base_path(path = nil) [:base_path] = path end |
#colour(attrs = {}) ⇒ Hash<Symbol => void>
556 557 558 559 560 |
# File 'lib/vedeu/configuration/api.rb', line 556 def colour(attrs = {}) [:background] = attrs[:background] if attrs.key?(:background) [:foreground] = attrs[:foreground] if attrs.key?(:foreground) end |
#colour_mode(value = nil) ⇒ Boolean
iTerm 2 on Mac OSX will handle the true colour setting (16777216), whereas Terminator on Linux will not display colours correctly. For compatibility across platforms, it is recommended to either not set the colour mode at all and allow it to be detected, or use 256 here.
Sets the colour mode of the terminal.
Vedeu.configure do
colour_mode 256
# ...
end
220 221 222 223 224 225 226 227 |
# File 'lib/vedeu/configuration/api.rb', line 220 def colour_mode(value = nil) unless valid_colour_mode?(value) raise Vedeu::Error::InvalidSyntax, '`colour_mode` must be `8`, `16`, `256`, `16777216`.' end [:colour_mode] = value end |
#compression(value = true) ⇒ Boolean Also known as: compression!
Compression reduces the number of escape sequences being sent to the terminal which improves redraw/render/refresh rate. By default it is enabled.
Sets boolean to enable/disable compression. Vedeu’s default setting is for compression to be enabled. Setting ‘compression` to false will disable compression.
Vedeu.configure do
compression! # enabled (default)
# ...
end
Vedeu.configure do
compression false
# ...
end
-
Be aware that running an application without compression will affect performance.
459 460 461 |
# File 'lib/vedeu/configuration/api.rb', line 459 def compression(value = true) [:compression] = value end |
#configuration ⇒ Hash<Symbol => Boolean, Fixnum, String>
Returns the configuration options set up by the API DSL.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/vedeu/configuration/api.rb', line 42 def configuration if [:log].nil? || [:log] == false || empty_value?([:log]) Vedeu.log(type: :config, message: 'Logging has been disabled.') return end if [:log] != default[:log] Vedeu.log(message: "Switching to '#{[:log]}' for logging.\n") end end |
#cooked! ⇒ Boolean Also known as: cooked
142 143 144 |
# File 'lib/vedeu/configuration/api.rb', line 142 def cooked! [:terminal_mode] = :cooked end |
#debug!(value = true) ⇒ Boolean Also known as: debug
Sets boolean to enable/disable debugging. Vedeu’s default setting is for debugging to be disabled. Using ‘debug!` or setting `debug` to true will enable debugging.
Enabling debugging will:
-
Enable ‘Vedeu::Logging::Timer` meaning various timing information is output to the log file.
-
Produce a full a backtrace to STDOUT and the log file upon unrecoverable error or unhandled exception.
Vedeu.configure do
debug! # ...
end
Vedeu.configure do
debug false # ...
end
198 199 200 |
# File 'lib/vedeu/configuration/api.rb', line 198 def debug!(value = true) [:debug] = value end |
#drb!(value = true) ⇒ Boolean Also known as: drb
88 89 90 |
# File 'lib/vedeu/configuration/api.rb', line 88 def drb!(value = true) [:drb] = value end |
#drb_height(height = 25) ⇒ Fixnum
116 117 118 |
# File 'lib/vedeu/configuration/api.rb', line 116 def drb_height(height = 25) [:drb_height] = height end |
#drb_host(hostname = '') ⇒ String
96 97 98 |
# File 'lib/vedeu/configuration/api.rb', line 96 def drb_host(hostname = '') [:drb_host] = hostname end |
#drb_port(port = '') ⇒ String
103 104 105 |
# File 'lib/vedeu/configuration/api.rb', line 103 def drb_port(port = '') [:drb_port] = port end |
#drb_width(width = 80) ⇒ Fixnum
129 130 131 |
# File 'lib/vedeu/configuration/api.rb', line 129 def drb_width(width = 80) [:drb_width] = width end |
#fake! ⇒ Boolean Also known as: fake
Sets the terminal mode to ‘fake`. Default terminal mode is `raw`.
157 158 159 |
# File 'lib/vedeu/configuration/api.rb', line 157 def fake! [:terminal_mode] = :fake end |
#foreground(value = nil) ⇒ Vedeu::Colours::Foreground
541 542 543 544 545 |
# File 'lib/vedeu/configuration/api.rb', line 541 def foreground(value = nil) return [:foreground] unless value [:foreground] = value end |
#height(height = 25) ⇒ Fixnum Also known as: height=
243 244 245 |
# File 'lib/vedeu/configuration/api.rb', line 243 def height(height = 25) [:height] = height end |
#interactive!(value = true) ⇒ Boolean Also known as: interactive
64 65 66 |
# File 'lib/vedeu/configuration/api.rb', line 64 def interactive!(value = true) [:interactive] = value end |
#invalid_mode! ⇒ Object (private)
590 591 592 593 |
# File 'lib/vedeu/configuration/api.rb', line 590 def invalid_mode! raise Vedeu::Error::InvalidSyntax, 'Terminal mode can be set to either :cooked, :fake or :raw' end |
#log(filename_or_false = false) ⇒ NilClass|String
265 266 267 268 269 270 271 272 273 274 275 |
# File 'lib/vedeu/configuration/api.rb', line 265 def log(filename_or_false = false) [:log] = if filename_or_false.nil? || filename_or_false == false || empty_value?(filename_or_false) nil else filename_or_false end end |
#log_except(*types) ⇒ Array<Symbol>
Log specific message types except those given. A complete list of message types can be found at Vedeu::Configuration.log_types.
Vedeu.configure do
log_except :debug, :event
# or
log_except [:debug, :info]
# ...
end
293 294 295 |
# File 'lib/vedeu/configuration/api.rb', line 293 def log_except(*types) [:log_except] = types.flatten end |
#log_only(*types) ⇒ Array<Symbol>
Only log specific message types. A complete list of message types can be found at Vedeu::Configuration.log_types.
Vedeu.configure do
log_only :debug, :event
# or
log_only [:debug, :info]
# ...
end
312 313 314 |
# File 'lib/vedeu/configuration/api.rb', line 312 def log_only(*types) [:log_only] = types.flatten end |
#log_options! ⇒ Hash (private)
596 597 598 599 600 601 |
# File 'lib/vedeu/configuration/api.rb', line 596 def .each do |option, value| Vedeu.log(type: :config, message: "#{option}: #{value.inspect}") end end |
#mouse!(value = true) ⇒ Boolean Also known as: mouse
576 577 578 |
# File 'lib/vedeu/configuration/api.rb', line 576 def mouse!(value = true) [:mouse] = value end |
#options ⇒ Hash<Symbol => void> (private)
Returns the options set via the configuration API DSL or an empty Hash when none were set.
607 608 609 |
# File 'lib/vedeu/configuration/api.rb', line 607 def @options ||= {} end |
#profile!(value = true) ⇒ Boolean Also known as: profile
Be aware that running an application with profiling enabled will affect performance.
Vedeu.configure do
profile!
# ...
end
Vedeu.configure do
profile false
# ...
end
Sets boolean to enable/disable profiling. Vedeu’s default setting is for profiling to be disabled. Using ‘profile!` or setting `profile` to true will enable profiling.
Profile uses ‘ruby-prof’ to write a ‘vedeu_profile’ file to the /tmp directory which contains a call trace of the running application. Upon exit, this file can be examined to ascertain certain behaviours of Vedeu.
341 342 343 |
# File 'lib/vedeu/configuration/api.rb', line 341 def profile!(value = true) [:profile] = value end |
#raw! ⇒ Boolean Also known as: raw
171 172 173 |
# File 'lib/vedeu/configuration/api.rb', line 171 def raw! [:terminal_mode] = :raw end |
#renderer(*renderer) ⇒ Array<Class> Also known as: renderers
362 363 364 |
# File 'lib/vedeu/configuration/api.rb', line 362 def renderer(*renderer) [:renderers] = renderer.flatten end |
#root(*args) ⇒ Class
392 393 394 |
# File 'lib/vedeu/configuration/api.rb', line 392 def root(*args) [:root] = args end |
#run_once!(value = true) ⇒ Boolean Also known as: run_once
80 81 82 |
# File 'lib/vedeu/configuration/api.rb', line 80 def run_once!(value = true) [:once] = value end |
#standalone!(value = true) ⇒ Boolean Also known as: standalone
72 73 74 |
# File 'lib/vedeu/configuration/api.rb', line 72 def standalone!(value = true) [:interactive] = !value end |
#stderr(io) ⇒ File|IO
431 432 433 |
# File 'lib/vedeu/configuration/api.rb', line 431 def stderr(io) [:stderr] = io end |
#stdin(io) ⇒ File|IO
405 406 407 |
# File 'lib/vedeu/configuration/api.rb', line 405 def stdin(io) [:stdin] = io end |
#stdout(io) ⇒ File|IO
418 419 420 |
# File 'lib/vedeu/configuration/api.rb', line 418 def stdout(io) [:stdout] = io end |
#terminal_mode(mode) ⇒ Symbol Also known as: terminal_mode=
493 494 495 496 497 |
# File 'lib/vedeu/configuration/api.rb', line 493 def terminal_mode(mode) return invalid_mode! unless valid_mode?(mode) [:terminal_mode] = mode end |
#threaded(boolean) ⇒ Boolean Also known as: threaded=
Instructs Vedeu to use threads to perform certain actions. This can have a performance impact.
505 506 507 |
# File 'lib/vedeu/configuration/api.rb', line 505 def threaded(boolean) [:threaded] = boolean end |
#valid_colour_mode?(value) ⇒ Boolean (private)
Checks that the value provided to #colour_mode is valid.
615 616 617 |
# File 'lib/vedeu/configuration/api.rb', line 615 def valid_colour_mode?(value) numeric?(value) && [8, 16, 256, 16_777_216].include?(value) end |
#valid_mode?(mode) ⇒ Boolean (private)
Checks that the mode provided is valid.
623 624 625 |
# File 'lib/vedeu/configuration/api.rb', line 623 def valid_mode?(mode) [:cooked, :fake, :raw].include?(mode) end |