gloo 0.8.0 → 1.0.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/Gemfile.lock +32 -28
- data/LICENSE.txt +1 -1
- data/gloo.gemspec +11 -6
- data/lib/VERSION +1 -1
- data/lib/dependencies.rb +4 -4
- data/lib/gloo/app/info.rb +3 -1
- data/lib/gloo/app/log.rb +1 -29
- data/lib/gloo/app/platform.rb +142 -0
- data/lib/gloo/objs/cli/banner.rb +2 -2
- data/lib/gloo/objs/cli/bar.rb +4 -4
- data/lib/gloo/objs/cli/colorize.rb +3 -3
- data/lib/gloo/objs/cli/confirm.rb +3 -3
- data/lib/gloo/objs/cli/menu.rb +9 -9
- data/lib/gloo/objs/cli/menu_item.rb +2 -2
- data/lib/gloo/objs/cli/pastel.rb +2 -2
- data/lib/gloo/objs/cli/prompt.rb +4 -4
- data/lib/gloo/objs/cli/select.rb +4 -4
- data/lib/gloo/objs/dev/git.rb +7 -7
- data/lib/gloo/objs/dev/stats.rb +8 -5
- data/lib/gloo/objs/snd/play.rb +1 -1
- data/lib/gloo/objs/snd/say.rb +2 -2
- data/lib/gloo/objs/system/file_handle.rb +9 -9
- data/lib/gloo/objs/system/ssh_exec.rb +3 -3
- data/lib/gloo/objs/system/system.rb +2 -2
- data/lib/gloo/verbs/alert.rb +7 -7
- data/lib/gloo/verbs/beep.rb +1 -1
- data/lib/gloo/verbs/cls.rb +2 -2
- data/lib/gloo.rb +5 -1
- data/lib/run.rb +5 -1
- metadata +39 -145
- data/lib/gloo/app/args.rb +0 -112
- data/lib/gloo/app/engine.rb +0 -230
- data/lib/gloo/app/help.rb +0 -156
- data/lib/gloo/app/mode.rb +0 -27
- data/lib/gloo/app/settings.rb +0 -186
- data/lib/gloo/convert/converter.rb +0 -35
- data/lib/gloo/convert/string_to_datetime.rb +0 -21
- data/lib/gloo/convert/string_to_decimal.rb +0 -20
- data/lib/gloo/convert/string_to_integer.rb +0 -20
- data/lib/gloo/core/baseo.rb +0 -30
- data/lib/gloo/core/dictionary.rb +0 -181
- data/lib/gloo/core/error.rb +0 -61
- data/lib/gloo/core/event_manager.rb +0 -44
- data/lib/gloo/core/factory.rb +0 -210
- data/lib/gloo/core/gloo_system.rb +0 -266
- data/lib/gloo/core/heap.rb +0 -52
- data/lib/gloo/core/here.rb +0 -36
- data/lib/gloo/core/it.rb +0 -36
- data/lib/gloo/core/literal.rb +0 -30
- data/lib/gloo/core/obj.rb +0 -303
- data/lib/gloo/core/obj_finder.rb +0 -30
- data/lib/gloo/core/op.rb +0 -40
- data/lib/gloo/core/parser.rb +0 -59
- data/lib/gloo/core/pn.rb +0 -188
- data/lib/gloo/core/tokens.rb +0 -165
- data/lib/gloo/core/verb.rb +0 -86
- data/lib/gloo/exec/action.rb +0 -48
- data/lib/gloo/exec/dispatch.rb +0 -40
- data/lib/gloo/exec/exec_env.rb +0 -74
- data/lib/gloo/exec/runner.rb +0 -45
- data/lib/gloo/exec/script.rb +0 -49
- data/lib/gloo/exec/stack.rb +0 -78
- data/lib/gloo/expr/expression.rb +0 -118
- data/lib/gloo/expr/l_boolean.rb +0 -36
- data/lib/gloo/expr/l_decimal.rb +0 -39
- data/lib/gloo/expr/l_integer.rb +0 -37
- data/lib/gloo/expr/l_string.rb +0 -58
- data/lib/gloo/expr/op_div.rb +0 -22
- data/lib/gloo/expr/op_minus.rb +0 -22
- data/lib/gloo/expr/op_mult.rb +0 -22
- data/lib/gloo/expr/op_plus.rb +0 -24
- data/lib/gloo/objs/basic/alias.rb +0 -78
- data/lib/gloo/objs/basic/boolean.rb +0 -120
- data/lib/gloo/objs/basic/container.rb +0 -76
- data/lib/gloo/objs/basic/decimal.rb +0 -76
- data/lib/gloo/objs/basic/integer.rb +0 -73
- data/lib/gloo/objs/basic/script.rb +0 -99
- data/lib/gloo/objs/basic/string.rb +0 -77
- data/lib/gloo/objs/basic/text.rb +0 -87
- data/lib/gloo/objs/basic/untyped.rb +0 -41
- data/lib/gloo/objs/ctrl/each.rb +0 -279
- data/lib/gloo/objs/ctrl/repeat.rb +0 -108
- data/lib/gloo/objs/data/markdown.rb +0 -84
- data/lib/gloo/objs/data/mysql.rb +0 -192
- data/lib/gloo/objs/data/query.rb +0 -176
- data/lib/gloo/objs/data/sqlite.rb +0 -159
- data/lib/gloo/objs/data/table.rb +0 -140
- data/lib/gloo/objs/dt/date.rb +0 -50
- data/lib/gloo/objs/dt/datetime.rb +0 -62
- data/lib/gloo/objs/dt/time.rb +0 -50
- data/lib/gloo/objs/ror/erb.rb +0 -116
- data/lib/gloo/objs/ror/eval.rb +0 -107
- data/lib/gloo/objs/web/http_get.rb +0 -159
- data/lib/gloo/objs/web/http_post.rb +0 -183
- data/lib/gloo/objs/web/json.rb +0 -135
- data/lib/gloo/objs/web/slack.rb +0 -130
- data/lib/gloo/objs/web/teams.rb +0 -117
- data/lib/gloo/objs/web/uri.rb +0 -148
- data/lib/gloo/persist/file_loader.rb +0 -191
- data/lib/gloo/persist/file_saver.rb +0 -49
- data/lib/gloo/persist/file_storage.rb +0 -45
- data/lib/gloo/persist/line_splitter.rb +0 -81
- data/lib/gloo/persist/persist_man.rb +0 -120
- data/lib/gloo/utils/format.rb +0 -21
- data/lib/gloo/utils/stats.rb +0 -205
- data/lib/gloo/utils/words.rb +0 -19
- data/lib/gloo/verbs/context.rb +0 -62
- data/lib/gloo/verbs/create.rb +0 -68
- data/lib/gloo/verbs/execute.rb +0 -56
- data/lib/gloo/verbs/help.rb +0 -264
- data/lib/gloo/verbs/if.rb +0 -92
- data/lib/gloo/verbs/list.rb +0 -98
- data/lib/gloo/verbs/load.rb +0 -45
- data/lib/gloo/verbs/move.rb +0 -89
- data/lib/gloo/verbs/put.rb +0 -94
- data/lib/gloo/verbs/quit.rb +0 -40
- data/lib/gloo/verbs/run.rb +0 -75
- data/lib/gloo/verbs/save.rb +0 -39
- data/lib/gloo/verbs/show.rb +0 -64
- data/lib/gloo/verbs/tell.rb +0 -79
- data/lib/gloo/verbs/unless.rb +0 -92
- data/lib/gloo/verbs/version.rb +0 -37
- data/lib/gloo/verbs/wait.rb +0 -42
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# An object with an boolean value.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Objs
|
|
9
|
-
class Boolean < Gloo::Core::Obj
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'boolean'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'bool'.freeze
|
|
13
|
-
TRUE = 'true'.freeze
|
|
14
|
-
FALSE = 'false'.freeze
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
# The name of the object type.
|
|
18
|
-
#
|
|
19
|
-
def self.typename
|
|
20
|
-
return KEYWORD
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
# The short name of the object type.
|
|
25
|
-
#
|
|
26
|
-
def self.short_typename
|
|
27
|
-
return KEYWORD_SHORT
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# Set the value with any necessary type conversions.
|
|
32
|
-
#
|
|
33
|
-
def set_value( new_value )
|
|
34
|
-
self.value = Gloo::Objs::Boolean.coerse_to_bool( new_value )
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
#
|
|
38
|
-
# Coerse the new value to a boolean value.
|
|
39
|
-
#
|
|
40
|
-
def self.coerse_to_bool( new_value )
|
|
41
|
-
return false if new_value.nil?
|
|
42
|
-
|
|
43
|
-
# I should be able to use this:
|
|
44
|
-
# if new_value.kind_of?( String )
|
|
45
|
-
# but it doesn't work. I don't know why.
|
|
46
|
-
if new_value.class.name == 'String'
|
|
47
|
-
return true if new_value.strip.downcase == TRUE
|
|
48
|
-
return false if new_value.strip.downcase == FALSE
|
|
49
|
-
return true if new_value.strip.downcase == 't'
|
|
50
|
-
return false if new_value.strip.downcase == 'f'
|
|
51
|
-
elsif new_value.class.name == 'Integer'
|
|
52
|
-
return new_value.zero? ? false : true
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
return new_value == true
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
#
|
|
59
|
-
# Is the given token a boolean?
|
|
60
|
-
#
|
|
61
|
-
def self.boolean?( token )
|
|
62
|
-
return true if token == true
|
|
63
|
-
return true if token == false
|
|
64
|
-
|
|
65
|
-
if token.class.name == 'String'
|
|
66
|
-
return true if token.strip.downcase == TRUE
|
|
67
|
-
return true if token.strip.downcase == FALSE
|
|
68
|
-
end
|
|
69
|
-
return false
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
#
|
|
73
|
-
# Get the value for display purposes.
|
|
74
|
-
#
|
|
75
|
-
def value_display
|
|
76
|
-
return value ? TRUE : FALSE
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# ---------------------------------------------------------------------
|
|
80
|
-
# Messages
|
|
81
|
-
# ---------------------------------------------------------------------
|
|
82
|
-
|
|
83
|
-
#
|
|
84
|
-
# Get a list of message names that this object receives.
|
|
85
|
-
#
|
|
86
|
-
def self.messages
|
|
87
|
-
return super + %w[not true false]
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
# Set the value to the opposite of what it is.
|
|
92
|
-
#
|
|
93
|
-
def msg_not
|
|
94
|
-
v = !value
|
|
95
|
-
set_value v
|
|
96
|
-
$engine.heap.it.set_to v
|
|
97
|
-
return v
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
#
|
|
101
|
-
# Set the value to true.
|
|
102
|
-
#
|
|
103
|
-
def msg_true
|
|
104
|
-
set_value true
|
|
105
|
-
$engine.heap.it.set_to true
|
|
106
|
-
return true
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
#
|
|
110
|
-
# Set the value to false.
|
|
111
|
-
#
|
|
112
|
-
def msg_false
|
|
113
|
-
set_value false
|
|
114
|
-
$engine.heap.it.set_to false
|
|
115
|
-
return false
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# An object that contains a collection of other objects.
|
|
5
|
-
#
|
|
6
|
-
require 'tty-table'
|
|
7
|
-
require 'pastel'
|
|
8
|
-
|
|
9
|
-
module Gloo
|
|
10
|
-
module Objs
|
|
11
|
-
class Container < Gloo::Core::Obj
|
|
12
|
-
|
|
13
|
-
KEYWORD = 'container'.freeze
|
|
14
|
-
KEYWORD_SHORT = 'can'.freeze
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
# The name of the object type.
|
|
18
|
-
#
|
|
19
|
-
def self.typename
|
|
20
|
-
return KEYWORD
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
# The short name of the object type.
|
|
25
|
-
#
|
|
26
|
-
def self.short_typename
|
|
27
|
-
return KEYWORD_SHORT
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# ---------------------------------------------------------------------
|
|
31
|
-
# Messages
|
|
32
|
-
# ---------------------------------------------------------------------
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
# Get a list of message names that this object receives.
|
|
36
|
-
#
|
|
37
|
-
def self.messages
|
|
38
|
-
return super + %w[count delete_children show_key_value_table]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
#
|
|
42
|
-
# Count the number of children in the container.
|
|
43
|
-
#
|
|
44
|
-
def msg_count
|
|
45
|
-
i = child_count
|
|
46
|
-
$engine.heap.it.set_to i
|
|
47
|
-
return i
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
#
|
|
51
|
-
# Delete all children in the container.
|
|
52
|
-
#
|
|
53
|
-
def msg_delete_children
|
|
54
|
-
self.delete_children
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
# Show the given table data.
|
|
59
|
-
#
|
|
60
|
-
def msg_show_key_value_table
|
|
61
|
-
data = self.children.map { |o| [ o.name, o.value ] }
|
|
62
|
-
pastel = ::Pastel.new
|
|
63
|
-
table = TTY::Table.new rows: data
|
|
64
|
-
pad = [ 0, 1, 0, 1 ]
|
|
65
|
-
rendered = table.render( :ascii, indent: 2, padding: pad ) do |r|
|
|
66
|
-
r.border.style = :blue
|
|
67
|
-
r.filter = proc do |val, _row_index, col_index|
|
|
68
|
-
col_index.zero? ? pastel.blue( val ) : pastel.white( val )
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
puts "\n #{rendered}\n\n"
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# An object with a decimal value.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Objs
|
|
9
|
-
class Decimal < Gloo::Core::Obj
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'decimal'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'num'.freeze
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
# The name of the object type.
|
|
16
|
-
#
|
|
17
|
-
def self.typename
|
|
18
|
-
return KEYWORD
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# The short name of the object type.
|
|
23
|
-
#
|
|
24
|
-
def self.short_typename
|
|
25
|
-
return KEYWORD_SHORT
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# Set the value with any necessary type conversions.
|
|
30
|
-
#
|
|
31
|
-
def set_value( new_value )
|
|
32
|
-
if new_value.nil?
|
|
33
|
-
self.value = 0.0
|
|
34
|
-
return
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
unless new_value.is_a? Numeric
|
|
38
|
-
self.value = $engine.converter.convert( new_value, 'Decimal', 0.0 )
|
|
39
|
-
return
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
self.value = new_value.to_f
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# ---------------------------------------------------------------------
|
|
46
|
-
# Messages
|
|
47
|
-
# ---------------------------------------------------------------------
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
# Get a list of message names that this object receives.
|
|
51
|
-
#
|
|
52
|
-
def self.messages
|
|
53
|
-
return super + %w[round]
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
#
|
|
57
|
-
# Round the value to a whole value.
|
|
58
|
-
# If a parameter is included in the message,
|
|
59
|
-
# round to the precision given.
|
|
60
|
-
#
|
|
61
|
-
def msg_round
|
|
62
|
-
data = 0
|
|
63
|
-
if @params&.token_count&.positive?
|
|
64
|
-
expr = Gloo::Expr::Expression.new( @params.tokens )
|
|
65
|
-
data = expr.evaluate.to_i
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
i = self.value.round( data )
|
|
69
|
-
set_value i
|
|
70
|
-
$engine.heap.it.set_to i
|
|
71
|
-
return i
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# An object with an integer value.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Objs
|
|
9
|
-
class Integer < Gloo::Core::Obj
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'integer'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'int'.freeze
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
# The name of the object type.
|
|
16
|
-
#
|
|
17
|
-
def self.typename
|
|
18
|
-
return KEYWORD
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# The short name of the object type.
|
|
23
|
-
#
|
|
24
|
-
def self.short_typename
|
|
25
|
-
return KEYWORD_SHORT
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# Set the value with any necessary type conversions.
|
|
30
|
-
#
|
|
31
|
-
def set_value( new_value )
|
|
32
|
-
unless new_value.is_a? Numeric
|
|
33
|
-
self.value = $engine.converter.convert( new_value, 'Integer', 0 )
|
|
34
|
-
return
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
self.value = new_value.to_i
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# ---------------------------------------------------------------------
|
|
41
|
-
# Messages
|
|
42
|
-
# ---------------------------------------------------------------------
|
|
43
|
-
|
|
44
|
-
#
|
|
45
|
-
# Get a list of message names that this object receives.
|
|
46
|
-
#
|
|
47
|
-
def self.messages
|
|
48
|
-
return super + %w[inc dec]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
#
|
|
52
|
-
# Increment the integer
|
|
53
|
-
#
|
|
54
|
-
def msg_inc
|
|
55
|
-
i = value + 1
|
|
56
|
-
set_value i
|
|
57
|
-
$engine.heap.it.set_to i
|
|
58
|
-
return i
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
# Decrement the integer
|
|
63
|
-
#
|
|
64
|
-
def msg_dec
|
|
65
|
-
i = value - 1
|
|
66
|
-
set_value i
|
|
67
|
-
$engine.heap.it.set_to i
|
|
68
|
-
return i
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# A Script.
|
|
5
|
-
# A set of commands to be run.
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
module Gloo
|
|
9
|
-
module Objs
|
|
10
|
-
class Script < Gloo::Core::Obj
|
|
11
|
-
|
|
12
|
-
KEYWORD = 'script'.freeze
|
|
13
|
-
KEYWORD_SHORT = 'cmd'.freeze
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
# The name of the object type.
|
|
17
|
-
#
|
|
18
|
-
def self.typename
|
|
19
|
-
return KEYWORD
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
#
|
|
23
|
-
# The short name of the object type.
|
|
24
|
-
#
|
|
25
|
-
def self.short_typename
|
|
26
|
-
return KEYWORD_SHORT
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
# Set the value with any necessary type conversions.
|
|
31
|
-
#
|
|
32
|
-
def set_value( new_value )
|
|
33
|
-
self.value = new_value.to_s
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# Set the value as an array.
|
|
38
|
-
#
|
|
39
|
-
def set_array_value( arr )
|
|
40
|
-
self.value = arr
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
#
|
|
44
|
-
# Add a line (cmd) to the script.
|
|
45
|
-
#
|
|
46
|
-
def add_line( line )
|
|
47
|
-
if self.value_string?
|
|
48
|
-
first = self.value
|
|
49
|
-
self.set_array_value []
|
|
50
|
-
self.value << first unless first.empty?
|
|
51
|
-
elsif self.value_is_blank?
|
|
52
|
-
self.set_array_value []
|
|
53
|
-
end
|
|
54
|
-
self.value << line.strip
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
# Does this object support multi-line values?
|
|
59
|
-
# Initially only true for scripts.
|
|
60
|
-
#
|
|
61
|
-
def multiline_value?
|
|
62
|
-
return true
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
#
|
|
66
|
-
# Get the number of lines in this script.
|
|
67
|
-
#
|
|
68
|
-
def line_count
|
|
69
|
-
return self.value.count if self.value_is_array?
|
|
70
|
-
|
|
71
|
-
if self.value_string?
|
|
72
|
-
return self.value.strip.empty? ? 0 : 1
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
return 0
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# ---------------------------------------------------------------------
|
|
79
|
-
# Messages
|
|
80
|
-
# ---------------------------------------------------------------------
|
|
81
|
-
|
|
82
|
-
#
|
|
83
|
-
# Get a list of message names that this object receives.
|
|
84
|
-
#
|
|
85
|
-
def self.messages
|
|
86
|
-
return super + [ 'run' ]
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Send the object the unload message.
|
|
91
|
-
#
|
|
92
|
-
def msg_run
|
|
93
|
-
s = Gloo::Exec::Script.new self
|
|
94
|
-
s.run
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# A String.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Objs
|
|
9
|
-
class String < Gloo::Core::Obj
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'string'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'str'.freeze
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
# The name of the object type.
|
|
16
|
-
#
|
|
17
|
-
def self.typename
|
|
18
|
-
return KEYWORD
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# The short name of the object type.
|
|
23
|
-
#
|
|
24
|
-
def self.short_typename
|
|
25
|
-
return KEYWORD_SHORT
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
# Set the value with any necessary type conversions.
|
|
30
|
-
#
|
|
31
|
-
def set_value( new_value )
|
|
32
|
-
self.value = new_value.to_s
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# ---------------------------------------------------------------------
|
|
36
|
-
# Messages
|
|
37
|
-
# ---------------------------------------------------------------------
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
# Get a list of message names that this object receives.
|
|
41
|
-
#
|
|
42
|
-
def self.messages
|
|
43
|
-
return super + %w[up down size]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
# Get the size of the string.
|
|
48
|
-
#
|
|
49
|
-
def msg_size
|
|
50
|
-
s = value.size
|
|
51
|
-
$engine.heap.it.set_to s
|
|
52
|
-
return s
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
#
|
|
56
|
-
# Convert string to upper case
|
|
57
|
-
#
|
|
58
|
-
def msg_up
|
|
59
|
-
s = value.upcase
|
|
60
|
-
set_value s
|
|
61
|
-
$engine.heap.it.set_to s
|
|
62
|
-
return s
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
#
|
|
66
|
-
# Convert string to lower case
|
|
67
|
-
#
|
|
68
|
-
def msg_down
|
|
69
|
-
s = value.downcase
|
|
70
|
-
set_value s
|
|
71
|
-
$engine.heap.it.set_to s
|
|
72
|
-
return s
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
data/lib/gloo/objs/basic/text.rb
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# A [multiline] block of text.
|
|
5
|
-
#
|
|
6
|
-
require 'tty-editor'
|
|
7
|
-
require 'tty-pager'
|
|
8
|
-
|
|
9
|
-
module Gloo
|
|
10
|
-
module Objs
|
|
11
|
-
class Text < Gloo::Core::Obj
|
|
12
|
-
|
|
13
|
-
KEYWORD = 'text'.freeze
|
|
14
|
-
KEYWORD_SHORT = 'txt'.freeze
|
|
15
|
-
DEFAULT_TMP_FILE = 'tmp.txt'.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
|
-
# Set the value with any necessary type conversions.
|
|
33
|
-
#
|
|
34
|
-
def set_value( new_value )
|
|
35
|
-
self.value = new_value.to_s
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
#
|
|
39
|
-
# Does this object support multi-line values?
|
|
40
|
-
# Initially only true for scripts.
|
|
41
|
-
#
|
|
42
|
-
def multiline_value?
|
|
43
|
-
return false
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
# Get the number of lines of text.
|
|
48
|
-
#
|
|
49
|
-
def line_count
|
|
50
|
-
return value.split( "\n" ).count
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# ---------------------------------------------------------------------
|
|
54
|
-
# Messages
|
|
55
|
-
# ---------------------------------------------------------------------
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
# Get a list of message names that this object receives.
|
|
59
|
-
#
|
|
60
|
-
def self.messages
|
|
61
|
-
return super + %w[edit page]
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
#
|
|
65
|
-
# Show the contents of the file, paginated.
|
|
66
|
-
#
|
|
67
|
-
def msg_page
|
|
68
|
-
return unless value
|
|
69
|
-
|
|
70
|
-
# pager = TTY::Pager::SystemPager.new command: 'less -R'
|
|
71
|
-
pager = TTY::Pager.new
|
|
72
|
-
pager.page( value )
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
#
|
|
76
|
-
# Edit the text in the default editor.
|
|
77
|
-
#
|
|
78
|
-
def msg_edit
|
|
79
|
-
tmp = File.join( $settings.tmp_path, DEFAULT_TMP_FILE )
|
|
80
|
-
File.open( tmp, 'w' ) { |file| file.write( self.value ) }
|
|
81
|
-
TTY::Editor.open( tmp )
|
|
82
|
-
set_value File.read( tmp )
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# An Untyped Object.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Objs
|
|
9
|
-
class Untyped < Gloo::Core::Obj
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'untyped'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'un'.freeze
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
# The name of the object type.
|
|
16
|
-
#
|
|
17
|
-
def self.typename
|
|
18
|
-
return KEYWORD
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# The short name of the object type.
|
|
23
|
-
#
|
|
24
|
-
def self.short_typename
|
|
25
|
-
return KEYWORD_SHORT
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# ---------------------------------------------------------------------
|
|
29
|
-
# Messages
|
|
30
|
-
# ---------------------------------------------------------------------
|
|
31
|
-
|
|
32
|
-
#
|
|
33
|
-
# Get a list of message names that this object receives.
|
|
34
|
-
#
|
|
35
|
-
def self.messages
|
|
36
|
-
return super # + [ "run" ]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|