gloo 0.4.0 → 0.5.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/.DS_Store +0 -0
- data/.rubocop.yml +1 -1
- data/Gemfile.lock +80 -81
- data/Rakefile +1 -0
- data/gloo.gemspec +2 -1
- data/lib/gloo/app/engine.rb +48 -3
- data/lib/gloo/app/info.rb +1 -1
- data/lib/gloo/app/settings.rb +12 -5
- data/lib/gloo/convert/string_to_datetime.rb +21 -0
- data/lib/gloo/convert/string_to_decimal.rb +20 -0
- data/lib/gloo/convert/string_to_integer.rb +20 -0
- data/lib/gloo/core/event_manager.rb +2 -6
- data/lib/gloo/core/factory.rb +58 -1
- data/lib/gloo/core/gloo_system.rb +72 -0
- data/lib/gloo/core/obj.rb +50 -1
- data/lib/gloo/core/parser.rb +3 -1
- data/lib/gloo/core/pn.rb +3 -2
- data/lib/gloo/exec/dispatch.rb +30 -0
- data/lib/gloo/exec/runner.rb +43 -0
- data/lib/gloo/expr/expression.rb +1 -0
- data/lib/gloo/expr/l_decimal.rb +34 -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/objs/basic/alias.rb +111 -0
- data/lib/gloo/objs/basic/container.rb +11 -1
- data/lib/gloo/objs/basic/decimal.rb +96 -0
- data/lib/gloo/objs/basic/integer.rb +5 -0
- data/lib/gloo/objs/basic/string.rb +9 -1
- data/lib/gloo/objs/basic/text.rb +27 -2
- data/lib/gloo/objs/cli/banner.rb +137 -0
- data/lib/gloo/objs/cli/bar.rb +141 -0
- data/lib/gloo/objs/cli/colorize.rb +1 -1
- data/lib/gloo/objs/cli/menu.rb +236 -0
- data/lib/gloo/objs/cli/menu_item.rb +128 -0
- data/lib/gloo/objs/cli/pastel.rb +120 -0
- data/lib/gloo/objs/cli/prompt.rb +19 -11
- data/lib/gloo/objs/cli/select.rb +153 -0
- data/lib/gloo/objs/ctrl/each.rb +45 -16
- data/lib/gloo/objs/ctrl/repeat.rb +129 -0
- data/lib/gloo/objs/data/markdown.rb +109 -0
- data/lib/gloo/objs/data/table.rb +168 -0
- data/lib/gloo/objs/dt/date.rb +72 -0
- data/lib/gloo/objs/dt/datetime.rb +84 -0
- data/lib/gloo/objs/dt/time.rb +72 -0
- data/lib/gloo/objs/ror/erb.rb +1 -0
- data/lib/gloo/objs/system/file_handle.rb +50 -1
- data/lib/gloo/objs/web/http_get.rb +24 -4
- data/lib/gloo/objs/web/http_post.rb +1 -0
- data/lib/gloo/objs/web/json.rb +155 -0
- data/lib/gloo/objs/web/uri.rb +160 -0
- data/lib/gloo/persist/file_loader.rb +17 -6
- data/lib/gloo/persist/line_splitter.rb +7 -2
- data/lib/gloo/persist/persist_man.rb +37 -13
- data/lib/gloo/verbs/cls.rb +67 -0
- data/lib/gloo/verbs/help.rb +9 -0
- data/lib/gloo/verbs/if.rb +1 -0
- data/lib/gloo/verbs/load.rb +3 -2
- data/lib/gloo/verbs/move.rb +128 -0
- data/lib/gloo/verbs/run.rb +21 -7
- data/lib/gloo/verbs/tell.rb +1 -1
- data/lib/gloo/verbs/unless.rb +1 -0
- data/lib/gloo/verbs/wait.rb +73 -0
- metadata +36 -5
- data/lib/gloo/core/runner.rb +0 -26
@@ -0,0 +1,120 @@
|
|
1
|
+
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
+
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
3
|
+
#
|
4
|
+
# Show colorized output with the pastel gem.
|
5
|
+
#
|
6
|
+
require 'pastel'
|
7
|
+
|
8
|
+
module Gloo
|
9
|
+
module Objs
|
10
|
+
class Pastel < Gloo::Core::Obj
|
11
|
+
|
12
|
+
KEYWORD = 'pastel'.freeze
|
13
|
+
KEYWORD_SHORT = 'pastel'.freeze
|
14
|
+
TEXT = 'text'.freeze
|
15
|
+
COLOR = 'color'.freeze
|
16
|
+
|
17
|
+
#
|
18
|
+
# The name of the object type.
|
19
|
+
#
|
20
|
+
def self.typename
|
21
|
+
return KEYWORD
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# The short name of the object type.
|
26
|
+
#
|
27
|
+
def self.short_typename
|
28
|
+
return KEYWORD_SHORT
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# Get the text from the child object.
|
33
|
+
#
|
34
|
+
def text_value
|
35
|
+
o = find_child TEXT
|
36
|
+
return '' unless o
|
37
|
+
|
38
|
+
return o.value
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Get the color from the child object.
|
43
|
+
#
|
44
|
+
def color_value
|
45
|
+
o = find_child COLOR
|
46
|
+
return '' unless o
|
47
|
+
|
48
|
+
return o.value
|
49
|
+
end
|
50
|
+
|
51
|
+
# ---------------------------------------------------------------------
|
52
|
+
# Children
|
53
|
+
# ---------------------------------------------------------------------
|
54
|
+
|
55
|
+
# Does this object have children to add when an object
|
56
|
+
# is created in interactive mode?
|
57
|
+
# This does not apply during obj load, etc.
|
58
|
+
def add_children_on_create?
|
59
|
+
return true
|
60
|
+
end
|
61
|
+
|
62
|
+
# Add children to this object.
|
63
|
+
# This is used by containers to add children needed
|
64
|
+
# for default configurations.
|
65
|
+
def add_default_children
|
66
|
+
fac = $engine.factory
|
67
|
+
fac.create_string TEXT, '', self
|
68
|
+
fac.create_string COLOR, '', self
|
69
|
+
end
|
70
|
+
|
71
|
+
# ---------------------------------------------------------------------
|
72
|
+
# Messages
|
73
|
+
# ---------------------------------------------------------------------
|
74
|
+
|
75
|
+
#
|
76
|
+
# Get a list of message names that this object receives.
|
77
|
+
#
|
78
|
+
def self.messages
|
79
|
+
return super + %w[show]
|
80
|
+
end
|
81
|
+
|
82
|
+
#
|
83
|
+
# Show the banner bar
|
84
|
+
#
|
85
|
+
def msg_show
|
86
|
+
pastel = ::Pastel.new
|
87
|
+
c = self.color_value.split( ' ' ).map( &:to_sym )
|
88
|
+
puts pastel.decorate( self.text_value, *c )
|
89
|
+
end
|
90
|
+
|
91
|
+
# ---------------------------------------------------------------------
|
92
|
+
# Help
|
93
|
+
# ---------------------------------------------------------------------
|
94
|
+
|
95
|
+
#
|
96
|
+
# Get help for this object type.
|
97
|
+
#
|
98
|
+
def self.help
|
99
|
+
return <<~TEXT
|
100
|
+
PASTEL OBJECT TYPE
|
101
|
+
NAME: pastel
|
102
|
+
SHORTCUT: pastel
|
103
|
+
|
104
|
+
DESCRIPTION
|
105
|
+
Show colorized text with the pastel gem.
|
106
|
+
|
107
|
+
CHILDREN
|
108
|
+
text - string
|
109
|
+
The text that will be colorized.
|
110
|
+
color - string
|
111
|
+
The colors. See pastel for options.
|
112
|
+
|
113
|
+
MESSAGES
|
114
|
+
show - Show the colorized text.
|
115
|
+
TEXT
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
data/lib/gloo/objs/cli/prompt.rb
CHANGED
@@ -28,7 +28,7 @@ module Gloo
|
|
28
28
|
end
|
29
29
|
|
30
30
|
#
|
31
|
-
# Get the
|
31
|
+
# Get the prompt from the child object.
|
32
32
|
# Returns nil if there is none.
|
33
33
|
#
|
34
34
|
def prompt_value
|
@@ -64,14 +64,8 @@ module Gloo
|
|
64
64
|
# for default configurations.
|
65
65
|
def add_default_children
|
66
66
|
fac = $engine.factory
|
67
|
-
fac.
|
68
|
-
|
69
|
-
:value => '> ',
|
70
|
-
:parent => self } )
|
71
|
-
fac.create( { :name => 'result',
|
72
|
-
:type => 'string',
|
73
|
-
:value => nil,
|
74
|
-
:parent => self } )
|
67
|
+
fac.create_string PROMPT, '>', self
|
68
|
+
fac.create_string RESULT, nil, self
|
75
69
|
end
|
76
70
|
|
77
71
|
# ---------------------------------------------------------------------
|
@@ -82,10 +76,23 @@ module Gloo
|
|
82
76
|
# Get a list of message names that this object receives.
|
83
77
|
#
|
84
78
|
def self.messages
|
85
|
-
return super + [
|
79
|
+
return super + %w[run multiline]
|
86
80
|
end
|
87
81
|
|
88
|
-
#
|
82
|
+
#
|
83
|
+
# Show a multiline prompt and get the user's input.
|
84
|
+
#
|
85
|
+
def msg_multiline
|
86
|
+
prompt = prompt_value
|
87
|
+
return unless prompt
|
88
|
+
|
89
|
+
result = $prompt.multiline( prompt )
|
90
|
+
set_result result.join
|
91
|
+
end
|
92
|
+
|
93
|
+
#
|
94
|
+
# Show the prompt and get the user's input.
|
95
|
+
#
|
89
96
|
def msg_run
|
90
97
|
prompt = prompt_value
|
91
98
|
return unless prompt
|
@@ -118,6 +125,7 @@ module Gloo
|
|
118
125
|
|
119
126
|
MESSAGES
|
120
127
|
run - Prompt the user and then set the result.
|
128
|
+
multiline - Show a multiline prompt.
|
121
129
|
TEXT
|
122
130
|
end
|
123
131
|
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
+
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
3
|
+
#
|
4
|
+
# Show a CLI prompt and user selection from a list.
|
5
|
+
#
|
6
|
+
|
7
|
+
module Gloo
|
8
|
+
module Objs
|
9
|
+
class Select < Gloo::Core::Obj
|
10
|
+
|
11
|
+
KEYWORD = 'select'.freeze
|
12
|
+
KEYWORD_SHORT = 'sel'.freeze
|
13
|
+
PROMPT = 'prompt'.freeze
|
14
|
+
OPTIONS = 'options'.freeze
|
15
|
+
RESULT = 'result'.freeze
|
16
|
+
|
17
|
+
#
|
18
|
+
# The name of the object type.
|
19
|
+
#
|
20
|
+
def self.typename
|
21
|
+
return KEYWORD
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# The short name of the object type.
|
26
|
+
#
|
27
|
+
def self.short_typename
|
28
|
+
return KEYWORD_SHORT
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# Get the prompt from the child object.
|
33
|
+
# Returns nil if there is none.
|
34
|
+
#
|
35
|
+
def prompt_value
|
36
|
+
o = find_child PROMPT
|
37
|
+
return nil unless o
|
38
|
+
|
39
|
+
return o.value
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# Get the list of options for selection.
|
44
|
+
#
|
45
|
+
def options
|
46
|
+
o = find_child OPTIONS
|
47
|
+
return [] unless o
|
48
|
+
|
49
|
+
return o.children.map( &:name )
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Get the value of the selected item.
|
54
|
+
#
|
55
|
+
def key_for_option( selected )
|
56
|
+
o = find_child OPTIONS
|
57
|
+
return nil unless o
|
58
|
+
|
59
|
+
o.children.each do |c|
|
60
|
+
return c.value if c.name == selected
|
61
|
+
end
|
62
|
+
|
63
|
+
return nil
|
64
|
+
end
|
65
|
+
|
66
|
+
#
|
67
|
+
# Set the result of the system call.
|
68
|
+
#
|
69
|
+
def set_result( data )
|
70
|
+
r = find_child RESULT
|
71
|
+
return nil unless r
|
72
|
+
|
73
|
+
r.set_value data
|
74
|
+
end
|
75
|
+
|
76
|
+
# ---------------------------------------------------------------------
|
77
|
+
# Children
|
78
|
+
# ---------------------------------------------------------------------
|
79
|
+
|
80
|
+
# Does this object have children to add when an object
|
81
|
+
# is created in interactive mode?
|
82
|
+
# This does not apply during obj load, etc.
|
83
|
+
def add_children_on_create?
|
84
|
+
return true
|
85
|
+
end
|
86
|
+
|
87
|
+
# Add children to this object.
|
88
|
+
# This is used by containers to add children needed
|
89
|
+
# for default configurations.
|
90
|
+
def add_default_children
|
91
|
+
fac = $engine.factory
|
92
|
+
fac.create_string PROMPT, '>', self
|
93
|
+
fac.create_can OPTIONS, self
|
94
|
+
fac.create_string RESULT, nil, self
|
95
|
+
end
|
96
|
+
|
97
|
+
# ---------------------------------------------------------------------
|
98
|
+
# Messages
|
99
|
+
# ---------------------------------------------------------------------
|
100
|
+
|
101
|
+
#
|
102
|
+
# Get a list of message names that this object receives.
|
103
|
+
#
|
104
|
+
def self.messages
|
105
|
+
return super + %w[run]
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Show the prompt and get the user's selection.
|
110
|
+
#
|
111
|
+
def msg_run
|
112
|
+
prompt = prompt_value
|
113
|
+
return unless prompt
|
114
|
+
|
115
|
+
per = Gloo::App::Settings.page_size
|
116
|
+
result = $prompt.select( prompt, options, :per_page => per )
|
117
|
+
set_result self.key_for_option( result )
|
118
|
+
end
|
119
|
+
|
120
|
+
# ---------------------------------------------------------------------
|
121
|
+
# Help
|
122
|
+
# ---------------------------------------------------------------------
|
123
|
+
|
124
|
+
#
|
125
|
+
# Get help for this object type.
|
126
|
+
#
|
127
|
+
def self.help
|
128
|
+
return <<~TEXT
|
129
|
+
SELECT OBJECT TYPE
|
130
|
+
NAME: select
|
131
|
+
SHORTCUT: sel
|
132
|
+
|
133
|
+
DESCRIPTION
|
134
|
+
Prompt for user to select from a list of options.
|
135
|
+
|
136
|
+
CHILDREN
|
137
|
+
prompt - string - '> '
|
138
|
+
The prompt displayed to the user.
|
139
|
+
options - container
|
140
|
+
The list of options for the selection list.
|
141
|
+
The name of each option will be presented to the user, but
|
142
|
+
the value will be put in the result.
|
143
|
+
result - string - none
|
144
|
+
The result with the user's selection.
|
145
|
+
|
146
|
+
MESSAGES
|
147
|
+
run - Prompt the user for a selection and then set the result.
|
148
|
+
TEXT
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
data/lib/gloo/objs/ctrl/each.rb
CHANGED
@@ -15,6 +15,7 @@ module Gloo
|
|
15
15
|
|
16
16
|
KEYWORD = 'each'.freeze
|
17
17
|
KEYWORD_SHORT = 'each'.freeze
|
18
|
+
CHILD = 'child'.freeze
|
18
19
|
WORD = 'word'.freeze
|
19
20
|
LINE = 'line'.freeze
|
20
21
|
FILE = 'file'.freeze
|
@@ -48,7 +49,9 @@ module Gloo
|
|
48
49
|
# Run the do script once.
|
49
50
|
def run_do
|
50
51
|
o = find_child DO
|
51
|
-
|
52
|
+
return unless o
|
53
|
+
|
54
|
+
Gloo::Exec::Dispatch.message 'run', o
|
52
55
|
end
|
53
56
|
|
54
57
|
# ---------------------------------------------------------------------
|
@@ -67,18 +70,9 @@ module Gloo
|
|
67
70
|
# for default configurations.
|
68
71
|
def add_default_children
|
69
72
|
fac = $engine.factory
|
70
|
-
fac.
|
71
|
-
|
72
|
-
|
73
|
-
:parent => self } )
|
74
|
-
fac.create( { :name => 'in',
|
75
|
-
:type => 'string',
|
76
|
-
:value => '',
|
77
|
-
:parent => self } )
|
78
|
-
fac.create( { :name => 'do',
|
79
|
-
:type => 'script',
|
80
|
-
:value => '',
|
81
|
-
:parent => self } )
|
73
|
+
fac.create_string WORD, '', self
|
74
|
+
fac.create_string IN, '', self
|
75
|
+
fac.create_script DO, '', self
|
82
76
|
end
|
83
77
|
|
84
78
|
# ---------------------------------------------------------------------
|
@@ -94,7 +88,9 @@ module Gloo
|
|
94
88
|
|
95
89
|
# Run the system command.
|
96
90
|
def msg_run
|
97
|
-
if
|
91
|
+
if each_child?
|
92
|
+
run_each_child
|
93
|
+
elsif each_word?
|
98
94
|
run_each_word
|
99
95
|
elsif each_line?
|
100
96
|
run_each_line
|
@@ -103,6 +99,39 @@ module Gloo
|
|
103
99
|
end
|
104
100
|
end
|
105
101
|
|
102
|
+
# ---------------------------------------------------------------------
|
103
|
+
# Child Object
|
104
|
+
# ---------------------------------------------------------------------
|
105
|
+
|
106
|
+
# Is it set up to run for each word?
|
107
|
+
# If there is a child object by the name "word"
|
108
|
+
# then we will loop for each word in the string.
|
109
|
+
def each_child?
|
110
|
+
return true if contains_child? CHILD
|
111
|
+
|
112
|
+
return false
|
113
|
+
end
|
114
|
+
|
115
|
+
# Run for each word.
|
116
|
+
def run_each_child
|
117
|
+
o = find_child IN
|
118
|
+
return unless o
|
119
|
+
|
120
|
+
o = Gloo::Objs::Alias.resolve_alias( o )
|
121
|
+
o.children.each do |child|
|
122
|
+
set_child child
|
123
|
+
run_do
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# Set the child alias.
|
128
|
+
def set_child( obj )
|
129
|
+
o = find_child CHILD
|
130
|
+
return unless o
|
131
|
+
|
132
|
+
o.set_value obj.pn
|
133
|
+
end
|
134
|
+
|
106
135
|
# ---------------------------------------------------------------------
|
107
136
|
# Word
|
108
137
|
# ---------------------------------------------------------------------
|
@@ -153,7 +182,7 @@ module Gloo
|
|
153
182
|
str = in_value
|
154
183
|
return unless str
|
155
184
|
|
156
|
-
str.
|
185
|
+
str.each_line do |line|
|
157
186
|
set_line line
|
158
187
|
run_do
|
159
188
|
end
|
@@ -229,7 +258,7 @@ module Gloo
|
|
229
258
|
Perform an action for each item in a collection.
|
230
259
|
|
231
260
|
CHILDREN
|
232
|
-
word | line | repo - string - none
|
261
|
+
child | word | line | repo - string - none
|
233
262
|
The entity we want to loop for.
|
234
263
|
It will hold the current value while the script is running.
|
235
264
|
in - string - none
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
+
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
3
|
+
#
|
4
|
+
# A looping construct...do something x times.
|
5
|
+
#
|
6
|
+
|
7
|
+
module Gloo
|
8
|
+
module Objs
|
9
|
+
class Repeat < Gloo::Core::Obj
|
10
|
+
|
11
|
+
KEYWORD = 'repeat'.freeze
|
12
|
+
KEYWORD_SHORT = 'repeat'.freeze
|
13
|
+
TIMES = 'times'.freeze
|
14
|
+
INDEX = 'index'.freeze
|
15
|
+
DO = 'do'.freeze
|
16
|
+
|
17
|
+
#
|
18
|
+
# The name of the object type.
|
19
|
+
#
|
20
|
+
def self.typename
|
21
|
+
return KEYWORD
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# The short name of the object type.
|
26
|
+
#
|
27
|
+
def self.short_typename
|
28
|
+
return KEYWORD_SHORT
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# Get the URI from the child object.
|
33
|
+
# Returns nil if there is none.
|
34
|
+
#
|
35
|
+
def times
|
36
|
+
o = find_child TIMES
|
37
|
+
return o ? o.value : 0
|
38
|
+
end
|
39
|
+
|
40
|
+
# Run the do script once.
|
41
|
+
def run_do
|
42
|
+
o = find_child DO
|
43
|
+
return unless o
|
44
|
+
|
45
|
+
Gloo::Exec::Dispatch.message 'run', o
|
46
|
+
end
|
47
|
+
|
48
|
+
# Set the index of the current iteration.
|
49
|
+
def set_index( index )
|
50
|
+
o = find_child INDEX
|
51
|
+
return unless o
|
52
|
+
|
53
|
+
o.set_value index
|
54
|
+
end
|
55
|
+
|
56
|
+
# ---------------------------------------------------------------------
|
57
|
+
# Children
|
58
|
+
# ---------------------------------------------------------------------
|
59
|
+
|
60
|
+
# Does this object have children to add when an object
|
61
|
+
# is created in interactive mode?
|
62
|
+
# This does not apply during obj load, etc.
|
63
|
+
def add_children_on_create?
|
64
|
+
return true
|
65
|
+
end
|
66
|
+
|
67
|
+
# Add children to this object.
|
68
|
+
# This is used by containers to add children needed
|
69
|
+
# for default configurations.
|
70
|
+
def add_default_children
|
71
|
+
fac = $engine.factory
|
72
|
+
fac.create_int TIMES, 0, self
|
73
|
+
fac.create_int INDEX, 0, self
|
74
|
+
fac.create_script DO, '', self
|
75
|
+
end
|
76
|
+
|
77
|
+
# ---------------------------------------------------------------------
|
78
|
+
# Messages
|
79
|
+
# ---------------------------------------------------------------------
|
80
|
+
|
81
|
+
#
|
82
|
+
# Get a list of message names that this object receives.
|
83
|
+
#
|
84
|
+
def self.messages
|
85
|
+
return super + [ 'run' ]
|
86
|
+
end
|
87
|
+
|
88
|
+
#
|
89
|
+
# Run the repeat loop.
|
90
|
+
#
|
91
|
+
def msg_run
|
92
|
+
times.times do |index|
|
93
|
+
set_index index
|
94
|
+
run_do
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# ---------------------------------------------------------------------
|
99
|
+
# Help
|
100
|
+
# ---------------------------------------------------------------------
|
101
|
+
|
102
|
+
#
|
103
|
+
# Get help for this object type.
|
104
|
+
#
|
105
|
+
def self.help
|
106
|
+
return <<~TEXT
|
107
|
+
REPEAT OBJECT TYPE
|
108
|
+
NAME: repeat
|
109
|
+
SHORTCUT: repeat
|
110
|
+
|
111
|
+
DESCRIPTION
|
112
|
+
Run a script a given number of times.
|
113
|
+
|
114
|
+
CHILDREN
|
115
|
+
times integer - 0
|
116
|
+
The number of times to run the script.
|
117
|
+
index integer - 0
|
118
|
+
The current iteration when the repeat loop is running.
|
119
|
+
do - script - none
|
120
|
+
The action we want to perform for iteration of the loop.
|
121
|
+
|
122
|
+
MESSAGES
|
123
|
+
run - Run the script for the given number of times.
|
124
|
+
TEXT
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|