gloo 0.5.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/lib/gloo/app/args.rb +48 -6
- data/lib/gloo/app/engine.rb +60 -38
- data/lib/gloo/app/help.rb +137 -16
- data/lib/gloo/app/info.rb +3 -1
- data/lib/gloo/app/log.rb +23 -0
- data/lib/gloo/app/mode.rb +2 -0
- data/lib/gloo/app/settings.rb +98 -47
- data/lib/gloo/convert/converter.rb +35 -0
- data/lib/gloo/convert/string_to_datetime.rb +1 -1
- data/lib/gloo/convert/string_to_decimal.rb +1 -1
- data/lib/gloo/convert/string_to_integer.rb +1 -1
- data/lib/gloo/core/dictionary.rb +99 -22
- data/lib/gloo/core/error.rb +19 -8
- data/lib/gloo/core/event_manager.rb +4 -0
- data/lib/gloo/core/factory.rb +13 -2
- data/lib/gloo/core/gloo_system.rb +1 -1
- data/lib/gloo/core/heap.rb +11 -3
- data/lib/gloo/core/here.rb +36 -0
- data/lib/gloo/core/it.rb +6 -0
- data/lib/gloo/core/literal.rb +5 -0
- data/lib/gloo/core/obj.rb +22 -0
- data/lib/gloo/core/op.rb +7 -0
- data/lib/gloo/core/parser.rb +6 -0
- data/lib/gloo/core/pn.rb +38 -0
- data/lib/gloo/core/tokens.rb +66 -22
- data/lib/gloo/core/verb.rb +12 -0
- data/lib/gloo/exec/action.rb +48 -0
- data/lib/gloo/exec/dispatch.rb +15 -5
- data/lib/gloo/exec/exec_env.rb +74 -0
- data/lib/gloo/exec/runner.rb +4 -2
- data/lib/gloo/{core → exec}/script.rb +21 -9
- data/lib/gloo/exec/stack.rb +78 -0
- data/lib/gloo/expr/expression.rb +26 -4
- data/lib/gloo/expr/l_boolean.rb +6 -0
- data/lib/gloo/expr/l_decimal.rb +5 -0
- data/lib/gloo/expr/l_integer.rb +7 -0
- data/lib/gloo/expr/l_string.rb +7 -0
- data/lib/gloo/expr/op_div.rb +2 -0
- data/lib/gloo/expr/op_minus.rb +2 -0
- data/lib/gloo/expr/op_mult.rb +2 -0
- data/lib/gloo/expr/op_plus.rb +2 -0
- data/lib/gloo/help/app/application.txt +22 -0
- data/lib/gloo/help/app/configuration.txt +7 -0
- data/lib/gloo/help/app/default_help.txt +14 -0
- data/lib/gloo/help/app/logging.txt +16 -0
- data/lib/gloo/help/core/color.txt +31 -0
- data/lib/gloo/help/core/error.txt +33 -0
- data/lib/gloo/help/core/events.txt +21 -0
- data/lib/gloo/help/core/gloo_system.txt +54 -0
- data/lib/gloo/help/core/here.txt +30 -0
- data/lib/gloo/help/core/it.txt +23 -0
- data/lib/gloo/help/core/ops.txt +16 -0
- data/lib/gloo/help/core/pathname.txt +29 -0
- data/lib/gloo/help/objs/basic/alias.txt +36 -0
- data/lib/gloo/help/objs/basic/boolean.txt +28 -0
- data/lib/gloo/help/objs/basic/container.txt +33 -0
- data/lib/gloo/help/objs/basic/decimal.txt +28 -0
- data/lib/gloo/help/objs/basic/integer.txt +27 -0
- data/lib/gloo/help/objs/basic/script.txt +29 -0
- data/lib/gloo/help/objs/basic/string.txt +28 -0
- data/lib/gloo/help/objs/basic/text.txt +27 -0
- data/lib/gloo/help/objs/basic/untyped.txt +22 -0
- data/lib/gloo/help/objs/cli/banner.txt +49 -0
- data/lib/gloo/help/objs/cli/bar.txt +34 -0
- data/lib/gloo/help/objs/cli/colorize.txt +33 -0
- data/lib/gloo/help/objs/cli/confirm.txt +26 -0
- data/lib/gloo/help/objs/cli/menu.txt +44 -0
- data/lib/gloo/help/objs/cli/menu_item.txt +26 -0
- data/lib/gloo/help/objs/cli/pastel.txt +43 -0
- data/lib/gloo/help/objs/cli/prompt.txt +27 -0
- data/lib/gloo/help/objs/cli/select.txt +34 -0
- data/lib/gloo/help/objs/ctrl/each.txt +48 -0
- data/lib/gloo/help/objs/ctrl/repeat.txt +38 -0
- data/lib/gloo/help/objs/data/markdown.txt +25 -0
- data/lib/gloo/help/objs/data/table.txt +46 -0
- data/lib/gloo/help/objs/dev/git_repo.txt +35 -0
- data/lib/gloo/help/objs/dt/date.txt +23 -0
- data/lib/gloo/help/objs/dt/datetime.txt +24 -0
- data/lib/gloo/help/objs/dt/time.txt +23 -0
- data/lib/gloo/help/objs/ror/erb.txt +37 -0
- data/lib/gloo/help/objs/ror/eval.txt +24 -0
- data/lib/gloo/help/objs/snd/play.txt +23 -0
- data/lib/gloo/help/objs/snd/say.txt +28 -0
- data/lib/gloo/help/objs/system/file.txt +41 -0
- data/lib/gloo/help/objs/system/system.txt +32 -0
- data/lib/gloo/help/objs/web/http_get.txt +35 -0
- data/lib/gloo/help/objs/web/http_post.txt +32 -0
- data/lib/gloo/help/objs/web/json.txt +34 -0
- data/lib/gloo/help/objs/web/slack.txt +33 -0
- data/lib/gloo/help/objs/web/teams.txt +30 -0
- data/lib/gloo/help/objs/web/uri.txt +37 -0
- data/lib/gloo/help/verbs/alert.txt +33 -0
- data/lib/gloo/help/verbs/beep.txt +25 -0
- data/lib/gloo/help/verbs/cls.txt +24 -0
- data/lib/gloo/help/verbs/context.txt +43 -0
- data/lib/gloo/help/verbs/create.txt +33 -0
- data/lib/gloo/help/verbs/help.txt +34 -0
- data/lib/gloo/help/verbs/if.txt +37 -0
- data/lib/gloo/help/verbs/list.txt +34 -0
- data/lib/gloo/help/verbs/load.txt +38 -0
- data/lib/gloo/help/verbs/move.txt +42 -0
- data/lib/gloo/help/verbs/put.txt +38 -0
- data/lib/gloo/help/verbs/quit.txt +25 -0
- data/lib/gloo/help/verbs/run.txt +41 -0
- data/lib/gloo/help/verbs/save.txt +26 -0
- data/lib/gloo/help/verbs/show.txt +30 -0
- data/lib/gloo/help/verbs/tell.txt +34 -0
- data/lib/gloo/help/verbs/unless.txt +38 -0
- data/lib/gloo/help/verbs/version.txt +32 -0
- data/lib/gloo/help/verbs/wait.txt +29 -0
- data/lib/gloo/objs/basic/alias.rb +0 -33
- data/lib/gloo/objs/basic/boolean.rb +6 -27
- data/lib/gloo/objs/basic/container.rb +0 -33
- data/lib/gloo/objs/basic/decimal.rb +8 -28
- data/lib/gloo/objs/basic/integer.rb +5 -26
- data/lib/gloo/objs/basic/script.rb +1 -27
- data/lib/gloo/objs/basic/string.rb +6 -26
- data/lib/gloo/objs/basic/text.rb +0 -25
- data/lib/gloo/objs/basic/untyped.rb +0 -26
- data/lib/gloo/objs/cli/banner.rb +0 -29
- data/lib/gloo/objs/cli/bar.rb +0 -29
- data/lib/gloo/objs/cli/colorize.rb +4 -34
- data/lib/gloo/objs/cli/confirm.rb +6 -36
- data/lib/gloo/objs/cli/menu.rb +6 -36
- data/lib/gloo/objs/cli/menu_item.rb +0 -33
- data/lib/gloo/objs/cli/pastel.rb +4 -27
- data/lib/gloo/objs/cli/prompt.rb +4 -28
- data/lib/gloo/objs/cli/select.rb +4 -31
- data/lib/gloo/objs/ctrl/each.rb +33 -33
- data/lib/gloo/objs/ctrl/repeat.rb +8 -29
- data/lib/gloo/objs/data/markdown.rb +0 -25
- data/lib/gloo/objs/data/table.rb +4 -32
- data/lib/gloo/objs/dev/git.rb +12 -30
- data/lib/gloo/objs/dt/date.rb +3 -25
- data/lib/gloo/objs/dt/datetime.rb +4 -26
- data/lib/gloo/objs/dt/time.rb +3 -25
- data/lib/gloo/objs/ror/erb.rb +11 -45
- data/lib/gloo/objs/ror/eval.rb +11 -38
- data/lib/gloo/objs/snd/play.rb +2 -25
- data/lib/gloo/objs/snd/say.rb +9 -31
- data/lib/gloo/objs/system/file_handle.rb +0 -38
- data/lib/gloo/objs/system/system.rb +16 -46
- data/lib/gloo/objs/web/http_get.rb +57 -83
- data/lib/gloo/objs/web/http_post.rb +24 -31
- data/lib/gloo/objs/web/json.rb +11 -31
- data/lib/gloo/objs/web/slack.rb +7 -34
- data/lib/gloo/objs/web/teams.rb +13 -48
- data/lib/gloo/objs/web/uri.rb +0 -29
- data/lib/gloo/persist/file_loader.rb +8 -0
- data/lib/gloo/persist/file_saver.rb +6 -0
- data/lib/gloo/persist/file_storage.rb +2 -0
- data/lib/gloo/persist/line_splitter.rb +2 -0
- data/lib/gloo/persist/persist_man.rb +6 -0
- data/lib/gloo/verbs/alert.rb +30 -44
- data/lib/gloo/verbs/beep.rb +0 -30
- data/lib/gloo/verbs/cls.rb +0 -30
- data/lib/gloo/verbs/context.rb +9 -39
- data/lib/gloo/verbs/create.rb +17 -32
- data/lib/gloo/verbs/help.rb +151 -115
- data/lib/gloo/verbs/if.rb +46 -44
- data/lib/gloo/verbs/list.rb +36 -54
- data/lib/gloo/verbs/load.rb +8 -37
- data/lib/gloo/verbs/move.rb +12 -51
- data/lib/gloo/verbs/put.rb +28 -52
- data/lib/gloo/verbs/quit.rb +0 -31
- data/lib/gloo/verbs/run.rb +23 -39
- data/lib/gloo/verbs/save.rb +0 -33
- data/lib/gloo/verbs/show.rb +6 -31
- data/lib/gloo/verbs/tell.rb +31 -31
- data/lib/gloo/verbs/unless.rb +47 -46
- data/lib/gloo/verbs/version.rb +0 -30
- data/lib/gloo/verbs/wait.rb +0 -31
- metadata +77 -3
data/lib/gloo/verbs/beep.rb
CHANGED
|
@@ -35,36 +35,6 @@ module Gloo
|
|
|
35
35
|
return KEYWORD_SHORT
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
# ---------------------------------------------------------------------
|
|
39
|
-
# Help
|
|
40
|
-
# ---------------------------------------------------------------------
|
|
41
|
-
|
|
42
|
-
#
|
|
43
|
-
# Get help for this verb.
|
|
44
|
-
#
|
|
45
|
-
def self.help
|
|
46
|
-
return <<~TEXT
|
|
47
|
-
BEEP VERB
|
|
48
|
-
NAME: beep
|
|
49
|
-
SHORTCUT: b
|
|
50
|
-
|
|
51
|
-
DESCRIPTION
|
|
52
|
-
Play a standard system beep sound.
|
|
53
|
-
|
|
54
|
-
SYNTAX
|
|
55
|
-
beep
|
|
56
|
-
|
|
57
|
-
PARAMETERS
|
|
58
|
-
None
|
|
59
|
-
|
|
60
|
-
RESULT
|
|
61
|
-
None
|
|
62
|
-
|
|
63
|
-
ERRORS
|
|
64
|
-
None
|
|
65
|
-
TEXT
|
|
66
|
-
end
|
|
67
|
-
|
|
68
38
|
end
|
|
69
39
|
end
|
|
70
40
|
end
|
data/lib/gloo/verbs/cls.rb
CHANGED
|
@@ -32,36 +32,6 @@ module Gloo
|
|
|
32
32
|
return KEYWORD_SHORT
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
# ---------------------------------------------------------------------
|
|
36
|
-
# Help
|
|
37
|
-
# ---------------------------------------------------------------------
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
# Get help for this verb.
|
|
41
|
-
#
|
|
42
|
-
def self.help
|
|
43
|
-
return <<~TEXT
|
|
44
|
-
CLS VERB
|
|
45
|
-
NAME: cls
|
|
46
|
-
SHORTCUT: cls
|
|
47
|
-
|
|
48
|
-
DESCRIPTION
|
|
49
|
-
Clear the console screen.
|
|
50
|
-
|
|
51
|
-
SYNTAX
|
|
52
|
-
cls
|
|
53
|
-
|
|
54
|
-
PARAMETERS
|
|
55
|
-
None
|
|
56
|
-
|
|
57
|
-
RESULT
|
|
58
|
-
The screen is cleared and cursor set to the top.
|
|
59
|
-
|
|
60
|
-
ERRORS
|
|
61
|
-
None
|
|
62
|
-
TEXT
|
|
63
|
-
end
|
|
64
|
-
|
|
65
35
|
end
|
|
66
36
|
end
|
|
67
37
|
end
|
data/lib/gloo/verbs/context.rb
CHANGED
|
@@ -20,16 +20,6 @@ module Gloo
|
|
|
20
20
|
show_context
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
#
|
|
24
|
-
# Set the context to the given path.
|
|
25
|
-
#
|
|
26
|
-
def set_context
|
|
27
|
-
path = @tokens.second
|
|
28
|
-
$engine.heap.context.set_to path
|
|
29
|
-
$engine.heap.it.set_to path
|
|
30
|
-
$log.debug "Context set to #{$engine.heap.context}"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
23
|
#
|
|
34
24
|
# Show the current context.
|
|
35
25
|
#
|
|
@@ -52,39 +42,19 @@ module Gloo
|
|
|
52
42
|
end
|
|
53
43
|
|
|
54
44
|
# ---------------------------------------------------------------------
|
|
55
|
-
#
|
|
45
|
+
# Private functions
|
|
56
46
|
# ---------------------------------------------------------------------
|
|
57
47
|
|
|
48
|
+
private
|
|
49
|
+
|
|
58
50
|
#
|
|
59
|
-
#
|
|
51
|
+
# Set the context to the given path.
|
|
60
52
|
#
|
|
61
|
-
def
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
DESCRIPTION
|
|
68
|
-
Get or set the current context.
|
|
69
|
-
When no parameter is provided, the context will be shown.
|
|
70
|
-
Whe the optional path paramter is provided, the context will
|
|
71
|
-
be set to that path.
|
|
72
|
-
Use 'context root' to set the context back to the root level.
|
|
73
|
-
|
|
74
|
-
SYNTAX
|
|
75
|
-
context <path.to.new.context>
|
|
76
|
-
|
|
77
|
-
PARAMETERS
|
|
78
|
-
path.to.new.context - Optional. The path to the new context.
|
|
79
|
-
|
|
80
|
-
RESULT
|
|
81
|
-
Context is optionally set.
|
|
82
|
-
<it> will be set to the new context path when we are changing context.
|
|
83
|
-
Context is show in either case.
|
|
84
|
-
|
|
85
|
-
ERRORS
|
|
86
|
-
None
|
|
87
|
-
TEXT
|
|
53
|
+
def set_context
|
|
54
|
+
path = @tokens.second
|
|
55
|
+
$engine.heap.context.set_to path
|
|
56
|
+
$engine.heap.it.set_to path
|
|
57
|
+
$log.debug "Context set to #{$engine.heap.context}"
|
|
88
58
|
end
|
|
89
59
|
|
|
90
60
|
end
|
data/lib/gloo/verbs/create.rb
CHANGED
|
@@ -12,6 +12,7 @@ module Gloo
|
|
|
12
12
|
KEYWORD_SHORT = '`'.freeze
|
|
13
13
|
AS = 'as'.freeze
|
|
14
14
|
VAL = ':'.freeze
|
|
15
|
+
NO_NAME_ERR = 'Object name is missing!'.freeze
|
|
15
16
|
|
|
16
17
|
#
|
|
17
18
|
# Run the verb.
|
|
@@ -21,13 +22,11 @@ module Gloo
|
|
|
21
22
|
type = @tokens.after_token( AS )
|
|
22
23
|
value = @tokens.after_token( VAL )
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
unless name
|
|
26
|
+
$engine.err NO_NAME_ERR
|
|
27
|
+
return
|
|
26
28
|
end
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
obj.add_default_children if obj&.add_children_on_create?
|
|
30
|
-
$engine.heap.it.set_to value
|
|
29
|
+
create name, type, value
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
#
|
|
@@ -45,37 +44,23 @@ module Gloo
|
|
|
45
44
|
end
|
|
46
45
|
|
|
47
46
|
# ---------------------------------------------------------------------
|
|
48
|
-
#
|
|
47
|
+
# Private functions
|
|
49
48
|
# ---------------------------------------------------------------------
|
|
50
49
|
|
|
50
|
+
private
|
|
51
|
+
|
|
51
52
|
#
|
|
52
|
-
#
|
|
53
|
+
# Create an object with given name of given type with
|
|
54
|
+
# the given initial value.
|
|
53
55
|
#
|
|
54
|
-
def
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
DESCRIPTION
|
|
61
|
-
Create a new object of given type with given value.
|
|
62
|
-
Both type and value are optional when creating an object.
|
|
63
|
-
|
|
64
|
-
SYNTAX
|
|
65
|
-
create <new.object.path> as <type> : <value>
|
|
66
|
-
|
|
67
|
-
PARAMETERS
|
|
68
|
-
new.object.path - The path and name of the new object
|
|
69
|
-
type - The type of the new object
|
|
70
|
-
value - The initial value for the new object
|
|
71
|
-
|
|
72
|
-
RESULT
|
|
73
|
-
The new object will be created and added to the object heap.
|
|
74
|
-
<it> will be set to the new object's intitial value.
|
|
56
|
+
def create( name, type, value )
|
|
57
|
+
if Gloo::Expr::LString.string?( value )
|
|
58
|
+
value = Gloo::Expr::LString.strip_quotes( value )
|
|
59
|
+
end
|
|
60
|
+
obj = $engine.factory.create( { name: name, type: type, value: value } )
|
|
75
61
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
TEXT
|
|
62
|
+
obj.add_default_children if obj&.add_children_on_create?
|
|
63
|
+
$engine.heap.it.set_to value
|
|
79
64
|
end
|
|
80
65
|
|
|
81
66
|
end
|
data/lib/gloo/verbs/help.rb
CHANGED
|
@@ -10,16 +10,20 @@ module Gloo
|
|
|
10
10
|
|
|
11
11
|
KEYWORD = 'help'.freeze
|
|
12
12
|
KEYWORD_SHORT = '?'.freeze
|
|
13
|
+
DEFAULT_HELP = 'default_help'.freeze
|
|
14
|
+
HELP_NOT_FOUND_ERR = 'Help command could not be found:'.freeze
|
|
13
15
|
|
|
14
16
|
DISPATCH = {
|
|
15
17
|
settings: 'show_settings',
|
|
18
|
+
keywords: 'show_keywords',
|
|
16
19
|
verb: 'show_verbs',
|
|
17
20
|
verbs: 'show_verbs',
|
|
18
21
|
v: 'show_verbs',
|
|
19
22
|
obj: 'show_objs',
|
|
20
23
|
object: 'show_objs',
|
|
21
24
|
objects: 'show_objs',
|
|
22
|
-
o: 'show_objs'
|
|
25
|
+
o: 'show_objs',
|
|
26
|
+
topics: 'show_topics'
|
|
23
27
|
}.freeze
|
|
24
28
|
|
|
25
29
|
#
|
|
@@ -30,26 +34,161 @@ module Gloo
|
|
|
30
34
|
opts = opts.strip.downcase if opts
|
|
31
35
|
|
|
32
36
|
if opts
|
|
33
|
-
|
|
37
|
+
dispatch opts
|
|
34
38
|
else
|
|
35
|
-
|
|
39
|
+
$engine.help.page_topic DEFAULT_HELP
|
|
36
40
|
end
|
|
37
41
|
end
|
|
38
42
|
|
|
43
|
+
#
|
|
44
|
+
# Get the text for the list of verbs.
|
|
45
|
+
#
|
|
46
|
+
def get_verb_list
|
|
47
|
+
out = "Verbs:\n"
|
|
48
|
+
str = ''
|
|
49
|
+
verbs = $engine.dictionary.get_verbs.sort_by( &:keyword )
|
|
50
|
+
verbs.each_with_index do |v, i|
|
|
51
|
+
cut = v.keyword_shortcut.ljust( 5, ' ' )
|
|
52
|
+
str << " #{cut} #{v.keyword.ljust( 20, ' ' )}"
|
|
53
|
+
if ( ( i + 1 ) % 3 ).zero?
|
|
54
|
+
out << "#{str}\n"
|
|
55
|
+
str = ''
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
return out
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
#
|
|
63
|
+
# Lookup the opts in the dispatch table.
|
|
64
|
+
#
|
|
65
|
+
def lookup_opts( opts )
|
|
66
|
+
return DISPATCH[ opts.to_sym ]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
#
|
|
70
|
+
# Get the text for the list of verbs.
|
|
71
|
+
#
|
|
72
|
+
def get_obj_list
|
|
73
|
+
out = "Object Types:\n"
|
|
74
|
+
str = ''
|
|
75
|
+
objs = $engine.dictionary.get_obj_types.sort_by( &:typename )
|
|
76
|
+
objs.each_with_index do |o, i|
|
|
77
|
+
name = o.typename
|
|
78
|
+
if o.short_typename != o.typename
|
|
79
|
+
name = "#{name} (#{o.short_typename})"
|
|
80
|
+
end
|
|
81
|
+
str << " #{name.ljust( 30, ' ' )}"
|
|
82
|
+
if ( ( i + 1 ) % 4 ).zero?
|
|
83
|
+
out << "#{str}\n"
|
|
84
|
+
str = ''
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
return out
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
#
|
|
92
|
+
# Get the list of help topics.
|
|
93
|
+
#
|
|
94
|
+
def get_topics
|
|
95
|
+
out = "Help Topics:\n"
|
|
96
|
+
str = ''
|
|
97
|
+
objs = $engine.help.topics.keys.sort
|
|
98
|
+
objs.each_with_index do |o, i|
|
|
99
|
+
str << " #{o.ljust( 30, ' ' )}"
|
|
100
|
+
if ( ( i + 1 ) % 4 ).zero?
|
|
101
|
+
out << "#{str}\n"
|
|
102
|
+
str = ''
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
return out
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
#
|
|
110
|
+
# Get the Verb's keyword.
|
|
111
|
+
#
|
|
112
|
+
def self.keyword
|
|
113
|
+
return KEYWORD
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
#
|
|
117
|
+
# Get the Verb's keyword shortcut.
|
|
118
|
+
#
|
|
119
|
+
def self.keyword_shortcut
|
|
120
|
+
return KEYWORD_SHORT
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# ---------------------------------------------------------------------
|
|
124
|
+
# Private functions
|
|
125
|
+
# ---------------------------------------------------------------------
|
|
126
|
+
|
|
127
|
+
private
|
|
128
|
+
|
|
129
|
+
#
|
|
130
|
+
# Report an error with the inline help.
|
|
131
|
+
#
|
|
132
|
+
def report_help_error( opts )
|
|
133
|
+
$engine.err "#{HELP_NOT_FOUND_ERR} '#{opts}'"
|
|
134
|
+
end
|
|
135
|
+
|
|
39
136
|
#
|
|
40
137
|
# Dispatch the help to the right place.
|
|
41
138
|
#
|
|
42
139
|
def dispatch( opts )
|
|
140
|
+
return if dispatch_help_page( opts )
|
|
141
|
+
|
|
142
|
+
$log.debug 'looking for built in help topic'
|
|
43
143
|
cmd = DISPATCH[ opts.to_sym ]
|
|
44
144
|
if cmd
|
|
145
|
+
$log.debug 'found help index'
|
|
45
146
|
send cmd
|
|
46
147
|
else
|
|
148
|
+
$log.debug 'looking for entity help'
|
|
47
149
|
entity_help opts
|
|
48
150
|
end
|
|
49
151
|
rescue
|
|
50
152
|
report_help_error opts
|
|
51
153
|
end
|
|
52
154
|
|
|
155
|
+
#
|
|
156
|
+
# Dispatch to a help page if we can find one.
|
|
157
|
+
#
|
|
158
|
+
def dispatch_help_page( opts )
|
|
159
|
+
if $engine.help.topic? opts
|
|
160
|
+
$log.debug 'found expanded help topic'
|
|
161
|
+
$engine.help.page_topic opts
|
|
162
|
+
return true
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
key = $engine.dictionary.lookup_keyword opts
|
|
166
|
+
if $engine.help.topic? key
|
|
167
|
+
$log.debug 'found expanded help topic'
|
|
168
|
+
$engine.help.page_topic key
|
|
169
|
+
return true
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
return false
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
#
|
|
176
|
+
# Write output to it and show it unless we are in
|
|
177
|
+
# silent mode.
|
|
178
|
+
#
|
|
179
|
+
def show_output( out )
|
|
180
|
+
$engine.heap.it.set_to out
|
|
181
|
+
puts out unless $engine.args.quiet?
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
#
|
|
185
|
+
# List all help topics (articles)
|
|
186
|
+
#
|
|
187
|
+
def show_topics
|
|
188
|
+
out = self.get_topics
|
|
189
|
+
show_output out
|
|
190
|
+
end
|
|
191
|
+
|
|
53
192
|
#
|
|
54
193
|
# Dispatch the help command to a verb or object
|
|
55
194
|
# if we can find one matching the request.
|
|
@@ -69,7 +208,7 @@ module Gloo
|
|
|
69
208
|
if $engine.dictionary.verb?( opts )
|
|
70
209
|
t = $engine.dictionary.find_verb( opts )
|
|
71
210
|
out = t.send 'help'
|
|
72
|
-
|
|
211
|
+
show_output out
|
|
73
212
|
return true
|
|
74
213
|
end
|
|
75
214
|
|
|
@@ -84,36 +223,13 @@ module Gloo
|
|
|
84
223
|
if $engine.dictionary.obj?( opts )
|
|
85
224
|
t = $engine.dictionary.find_obj( opts )
|
|
86
225
|
out = t.send 'help'
|
|
87
|
-
|
|
226
|
+
show_output out
|
|
88
227
|
return true
|
|
89
228
|
end
|
|
90
229
|
|
|
91
230
|
return false
|
|
92
231
|
end
|
|
93
232
|
|
|
94
|
-
#
|
|
95
|
-
# Lookup the opts in the dispatch table.
|
|
96
|
-
#
|
|
97
|
-
def lookup_opts( opts )
|
|
98
|
-
return DISPATCH[ opts.to_sym ]
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
# Report an error with the inline help.
|
|
103
|
-
#
|
|
104
|
-
def report_help_error( opts )
|
|
105
|
-
msg = "Help command '#{opts}' could not be found"
|
|
106
|
-
$log.warn msg
|
|
107
|
-
$engine.heap.error.set_to msg
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
#
|
|
111
|
-
# If no parameter is given, show the default help page.
|
|
112
|
-
#
|
|
113
|
-
def show_default
|
|
114
|
-
$engine.run_help( true )
|
|
115
|
-
end
|
|
116
|
-
|
|
117
233
|
#
|
|
118
234
|
# Show application settings.
|
|
119
235
|
#
|
|
@@ -122,22 +238,17 @@ module Gloo
|
|
|
122
238
|
end
|
|
123
239
|
|
|
124
240
|
#
|
|
125
|
-
#
|
|
241
|
+
# Show all keywords: verbs and objects.
|
|
126
242
|
#
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
self.show_output out
|
|
243
|
+
def show_keywords
|
|
244
|
+
$engine.dictionary.show_keywords
|
|
130
245
|
end
|
|
131
246
|
|
|
132
247
|
#
|
|
133
|
-
#
|
|
248
|
+
# List the verbs
|
|
134
249
|
#
|
|
135
|
-
def
|
|
136
|
-
|
|
137
|
-
$engine.dictionary.get_verbs.each do |v|
|
|
138
|
-
out << " #{v.keyword_shortcut} - #{v.keyword}\n"
|
|
139
|
-
end
|
|
140
|
-
return out
|
|
250
|
+
def show_verbs
|
|
251
|
+
show_output get_verb_list
|
|
141
252
|
end
|
|
142
253
|
|
|
143
254
|
#
|
|
@@ -145,82 +256,7 @@ module Gloo
|
|
|
145
256
|
#
|
|
146
257
|
def show_objs
|
|
147
258
|
out = self.get_obj_list
|
|
148
|
-
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
#
|
|
152
|
-
# Get the text for the list of verbs.
|
|
153
|
-
#
|
|
154
|
-
def get_obj_list
|
|
155
|
-
out = "Object Types:\n"
|
|
156
|
-
$engine.dictionary.get_obj_types.each do |v|
|
|
157
|
-
out << " #{v.short_typename} - #{v.typename}\n"
|
|
158
|
-
end
|
|
159
|
-
return out
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
#
|
|
163
|
-
# Write output to it and show it unless we are in
|
|
164
|
-
# silent mode.
|
|
165
|
-
#
|
|
166
|
-
def show_output( out )
|
|
167
|
-
$engine.heap.it.set_to out
|
|
168
|
-
puts out unless $engine.args.quiet?
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
#
|
|
172
|
-
# Get the Verb's keyword.
|
|
173
|
-
#
|
|
174
|
-
def self.keyword
|
|
175
|
-
return KEYWORD
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
#
|
|
179
|
-
# Get the Verb's keyword shortcut.
|
|
180
|
-
#
|
|
181
|
-
def self.keyword_shortcut
|
|
182
|
-
return KEYWORD_SHORT
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
# ---------------------------------------------------------------------
|
|
186
|
-
# Help
|
|
187
|
-
# ---------------------------------------------------------------------
|
|
188
|
-
|
|
189
|
-
#
|
|
190
|
-
# Get help for this verb.
|
|
191
|
-
#
|
|
192
|
-
def self.help
|
|
193
|
-
return <<~TEXT
|
|
194
|
-
HELP VERB
|
|
195
|
-
NAME: helps
|
|
196
|
-
SHORTCUT: ?
|
|
197
|
-
|
|
198
|
-
DESCRIPTION
|
|
199
|
-
Show information about the application.
|
|
200
|
-
The help command can also be used to show a list of objects,
|
|
201
|
-
verbs, or to show detail about a single object or a
|
|
202
|
-
single verb.
|
|
203
|
-
|
|
204
|
-
SYNTAX
|
|
205
|
-
help <about>
|
|
206
|
-
|
|
207
|
-
PARAMETERS
|
|
208
|
-
about - Optional parameter.
|
|
209
|
-
If no parameter is given, shows the default help screen
|
|
210
|
-
settings - Show application settings
|
|
211
|
-
verbs - List available verbs
|
|
212
|
-
objects - List available objects
|
|
213
|
-
<verb> - Look up detail about a verb
|
|
214
|
-
<object> - Look up detail about an object
|
|
215
|
-
|
|
216
|
-
RESULT
|
|
217
|
-
The help screen will be shown with relevant information.
|
|
218
|
-
<it> will also contain the help text.
|
|
219
|
-
|
|
220
|
-
ERRORS
|
|
221
|
-
Trying to access a help topic that does not exist will result
|
|
222
|
-
in an error.
|
|
223
|
-
TEXT
|
|
259
|
+
show_output out
|
|
224
260
|
end
|
|
225
261
|
|
|
226
262
|
end
|