Class: Prompt

Inherits:
Gloo::Core::Obj
  • Object
show all
Defined in:
lib/prompt.rb

Overview

Author

Eric Crane (eric.crane@mac.com)

Copyright

Copyright © 2019 Eric Crane. All rights reserved.

Show a CLI prompt and collect user input.

Constant Summary collapse

KEYWORD =
'prompt'.freeze
KEYWORD_SHORT =
'ask'.freeze
PROMPT =
'prompt'.freeze
RESULT =
'result'.freeze
DEFAULT =
'default'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.messagesObject

Get a list of message names that this object receives.



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

def self.messages
  return super + %w[run multiline]
end

.short_typenameObject

The short name of the object type.



25
26
27
# File 'lib/prompt.rb', line 25

def self.short_typename
  return KEYWORD_SHORT
end

.typenameObject

The name of the object type.



18
19
20
# File 'lib/prompt.rb', line 18

def self.typename
  return KEYWORD
end

Instance Method Details

#add_children_on_create?Boolean

Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.

Returns:

  • (Boolean)


73
74
75
# File 'lib/prompt.rb', line 73

def add_children_on_create?
  return true
end

#add_default_childrenObject

Add children to this object. This is used by containers to add children needed for default configurations.



82
83
84
85
86
# File 'lib/prompt.rb', line 82

def add_default_children
  fac = @engine.factory
  fac.create_string PROMPT, '>', self
  fac.create_string RESULT, nil, self
end

#default_valueObject

Get the default value. This is an optional field. If present, it starts the prompt with the default value. Returns nil if there is none.



46
47
48
49
50
51
# File 'lib/prompt.rb', line 46

def default_value
  o = find_child DEFAULT
  return nil unless o

  return o.value
end

#msg_multilineObject

Show a multiline prompt and get the user’s input.



103
104
105
106
107
108
109
# File 'lib/prompt.rb', line 103

def msg_multiline
  prompt = prompt_value
  return unless prompt

  result = @engine.platform.prompt.multiline( prompt )
  set_result result.join
end

#msg_runObject

Show the prompt and get the user’s input.



114
115
116
117
118
119
120
# File 'lib/prompt.rb', line 114

def msg_run
  prompt = prompt_value
  return unless prompt

  result = @engine.platform.prompt.ask( prompt, default_value )
  set_result result
end

#prompt_valueObject

Get the prompt from the child object. Returns nil if there is none.



33
34
35
36
37
38
# File 'lib/prompt.rb', line 33

def prompt_value
  o = find_child PROMPT
  return nil unless o

  return o.value
end

#set_result(data) ⇒ Object

Set the result of the system call.



56
57
58
59
60
61
# File 'lib/prompt.rb', line 56

def set_result( data )
  r = find_child RESULT
  return nil unless r

  r.set_value data
end