gloo-lang 0.9.6 → 0.9.9
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/Gemfile.lock +3 -1
- data/lib/VERSION +1 -1
- data/lib/gloo_lang/app/args.rb +3 -2
- data/lib/gloo_lang/app/engine.rb +25 -26
- data/lib/gloo_lang/app/help.rb +10 -9
- data/lib/gloo_lang/app/log.rb +5 -3
- data/lib/gloo_lang/app/settings.rb +10 -9
- data/lib/gloo_lang/convert/converter.rb +9 -2
- data/lib/gloo_lang/core/baseo.rb +2 -1
- data/lib/gloo_lang/core/dictionary.rb +16 -6
- data/lib/gloo_lang/core/event_manager.rb +9 -8
- data/lib/gloo_lang/core/factory.rb +11 -10
- data/lib/gloo_lang/core/gloo_system.rb +9 -8
- data/lib/gloo_lang/core/heap.rb +5 -4
- data/lib/gloo_lang/core/here.rb +2 -2
- data/lib/gloo_lang/core/obj.rb +9 -8
- data/lib/gloo_lang/core/obj_finder.rb +3 -3
- data/lib/gloo_lang/core/parser.rb +6 -5
- data/lib/gloo_lang/core/pn.rb +20 -16
- data/lib/gloo_lang/core/verb.rb +2 -1
- data/lib/gloo_lang/exec/dispatch.rb +8 -8
- data/lib/gloo_lang/exec/exec_env.rb +7 -6
- data/lib/gloo_lang/exec/runner.rb +10 -10
- data/lib/gloo_lang/exec/script.rb +6 -5
- data/lib/gloo_lang/exec/stack.rb +8 -7
- data/lib/gloo_lang/expr/expression.rb +3 -2
- data/lib/gloo_lang/objs/basic/alias.rb +4 -4
- data/lib/gloo_lang/objs/basic/boolean.rb +3 -3
- data/lib/gloo_lang/objs/basic/container.rb +2 -2
- data/lib/gloo_lang/objs/basic/decimal.rb +3 -3
- data/lib/gloo_lang/objs/basic/integer.rb +3 -3
- data/lib/gloo_lang/objs/basic/script.rb +1 -1
- data/lib/gloo_lang/objs/basic/string.rb +3 -3
- data/lib/gloo_lang/objs/basic/text.rb +2 -2
- data/lib/gloo_lang/objs/ctrl/each.rb +3 -3
- data/lib/gloo_lang/objs/ctrl/repeat.rb +2 -2
- data/lib/gloo_lang/objs/data/markdown.rb +2 -2
- data/lib/gloo_lang/objs/data/query.rb +4 -4
- data/lib/gloo_lang/objs/data/table.rb +3 -3
- data/lib/gloo_lang/objs/dt/date.rb +1 -1
- data/lib/gloo_lang/objs/dt/datetime.rb +2 -2
- data/lib/gloo_lang/objs/dt/time.rb +1 -1
- data/lib/gloo_lang/objs/ror/erb.rb +2 -2
- data/lib/gloo_lang/objs/ror/eval.rb +3 -3
- data/lib/gloo_lang/objs/web/http_get.rb +3 -3
- data/lib/gloo_lang/objs/web/http_post.rb +8 -8
- data/lib/gloo_lang/objs/web/json.rb +5 -5
- data/lib/gloo_lang/objs/web/slack.rb +1 -1
- data/lib/gloo_lang/objs/web/teams.rb +1 -1
- data/lib/gloo_lang/objs/web/uri.rb +6 -6
- data/lib/gloo_lang/persist/file_loader.rb +6 -5
- data/lib/gloo_lang/persist/file_saver.rb +2 -1
- data/lib/gloo_lang/persist/file_storage.rb +6 -5
- data/lib/gloo_lang/persist/persist_man.rb +9 -8
- data/lib/gloo_lang/utils/stats.rb +5 -4
- data/lib/gloo_lang/verbs/context.rb +4 -4
- data/lib/gloo_lang/verbs/create.rb +3 -3
- data/lib/gloo_lang/verbs/execute.rb +4 -4
- data/lib/gloo_lang/verbs/help.rb +23 -23
- data/lib/gloo_lang/verbs/if.rb +3 -3
- data/lib/gloo_lang/verbs/list.rb +7 -7
- data/lib/gloo_lang/verbs/load.rb +3 -3
- data/lib/gloo_lang/verbs/move.rb +6 -6
- data/lib/gloo_lang/verbs/put.rb +6 -6
- data/lib/gloo_lang/verbs/quit.rb +1 -1
- data/lib/gloo_lang/verbs/run.rb +5 -5
- data/lib/gloo_lang/verbs/save.rb +1 -1
- data/lib/gloo_lang/verbs/show.rb +5 -5
- data/lib/gloo_lang/verbs/tell.rb +5 -4
- data/lib/gloo_lang/verbs/unless.rb +3 -3
- data/lib/gloo_lang/verbs/version.rb +1 -1
- data/lib/gloo_lang/verbs/wait.rb +1 -1
- metadata +2 -4
- data/lib/gloo_lang/objs/data/mysql.rb +0 -192
- data/lib/gloo_lang/objs/data/sqlite.rb +0 -159
@@ -57,7 +57,7 @@ module GlooLang
|
|
57
57
|
|
58
58
|
body = find_child PARAMS
|
59
59
|
body.children.each do |child|
|
60
|
-
child = GlooLang::Objs::Alias.resolve_alias( child )
|
60
|
+
child = GlooLang::Objs::Alias.resolve_alias( @engine, child )
|
61
61
|
h[ child.name ] = child.value
|
62
62
|
end
|
63
63
|
|
@@ -83,7 +83,7 @@ module GlooLang
|
|
83
83
|
# for default configurations.
|
84
84
|
#
|
85
85
|
def add_default_children
|
86
|
-
fac =
|
86
|
+
fac = @engine.factory
|
87
87
|
fac.create_text TEMPLATE, '', self
|
88
88
|
fac.create_can PARAMS, self
|
89
89
|
fac.create_text RESULT, '', self
|
@@ -68,7 +68,7 @@ module GlooLang
|
|
68
68
|
# for default configurations.
|
69
69
|
#
|
70
70
|
def add_default_children
|
71
|
-
fac =
|
71
|
+
fac = @engine.factory
|
72
72
|
fac.create_string CMD, DEFAULT_CMD, self
|
73
73
|
fac.create_string RESULT, nil, self
|
74
74
|
end
|
@@ -96,9 +96,9 @@ module GlooLang
|
|
96
96
|
result = eval cmd
|
97
97
|
# rubocop:enable Security/Eval
|
98
98
|
set_result result
|
99
|
-
|
99
|
+
@engine.heap.it.set_to result
|
100
100
|
rescue => e
|
101
|
-
|
101
|
+
@engine.err e.message
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -53,7 +53,7 @@ module GlooLang
|
|
53
53
|
# for default configurations.
|
54
54
|
#
|
55
55
|
def add_default_children
|
56
|
-
fac =
|
56
|
+
fac = @engine.factory
|
57
57
|
fac.create_string URL, DEFAULT_URL, self
|
58
58
|
fac.create_can PARAMS, self
|
59
59
|
fac.create_string RESULT, nil, self
|
@@ -75,7 +75,7 @@ module GlooLang
|
|
75
75
|
#
|
76
76
|
def msg_run
|
77
77
|
url = full_url_value
|
78
|
-
|
78
|
+
@engine.log.debug url
|
79
79
|
r = GlooLang::Objs::HttpGet.invoke_request( url, skip_ssl_verify? )
|
80
80
|
update_result r
|
81
81
|
end
|
@@ -146,7 +146,7 @@ module GlooLang
|
|
146
146
|
params.children.each do |child|
|
147
147
|
p << ( p.empty? ? '?' : '&' )
|
148
148
|
|
149
|
-
child = GlooLang::Objs::Alias.resolve_alias( child )
|
149
|
+
child = GlooLang::Objs::Alias.resolve_alias( @engine, child )
|
150
150
|
|
151
151
|
# TODO: Quote URL params for safety
|
152
152
|
p << "#{child.name}=#{child.value}"
|
@@ -52,7 +52,7 @@ module GlooLang
|
|
52
52
|
|
53
53
|
body = find_child BODY
|
54
54
|
body.children.each do |child|
|
55
|
-
child_val = GlooLang::Objs::Alias.resolve_alias( child )
|
55
|
+
child_val = GlooLang::Objs::Alias.resolve_alias( @engine, child )
|
56
56
|
h[ child.name ] = child_val.value
|
57
57
|
end
|
58
58
|
|
@@ -88,7 +88,7 @@ module GlooLang
|
|
88
88
|
# for default configurations.
|
89
89
|
#
|
90
90
|
def add_default_children
|
91
|
-
fac =
|
91
|
+
fac = @engine.factory
|
92
92
|
fac.create_string URL, 'https://web.site/', self
|
93
93
|
fac.create_can BODY, self
|
94
94
|
end
|
@@ -111,9 +111,9 @@ module GlooLang
|
|
111
111
|
uri = uri_value
|
112
112
|
return unless uri
|
113
113
|
|
114
|
-
|
114
|
+
@engine.log.debug "posting to: #{uri}"
|
115
115
|
body = self.body_as_json
|
116
|
-
|
116
|
+
@engine.log.debug "posting body: #{body}"
|
117
117
|
data = GlooLang::Objs::HttpPost.post_json( uri, body, skip_ssl_verify? )
|
118
118
|
self.update_result data
|
119
119
|
end
|
@@ -136,8 +136,8 @@ module GlooLang
|
|
136
136
|
request.body = body
|
137
137
|
|
138
138
|
result = http.request request # Net::HTTPResponse object
|
139
|
-
|
140
|
-
|
139
|
+
@engine.log.debug result.code
|
140
|
+
@engine.log.debug result.message
|
141
141
|
return result.body
|
142
142
|
end
|
143
143
|
end
|
@@ -157,8 +157,8 @@ module GlooLang
|
|
157
157
|
#
|
158
158
|
# # Send the payload to the endpoint.
|
159
159
|
# result = n.start { |http| http.request( request ) }
|
160
|
-
#
|
161
|
-
#
|
160
|
+
# @engine.log.debug result.code
|
161
|
+
# @engine.log.debug result.message
|
162
162
|
# return result.body
|
163
163
|
# end
|
164
164
|
|
@@ -74,14 +74,14 @@ module GlooLang
|
|
74
74
|
#
|
75
75
|
def msg_get
|
76
76
|
if @params&.token_count&.positive?
|
77
|
-
expr = GlooLang::Expr::Expression.new( @params.tokens )
|
77
|
+
expr = GlooLang::Expr::Expression.new( @engine, @params.tokens )
|
78
78
|
data = expr.evaluate
|
79
79
|
end
|
80
80
|
return unless data
|
81
81
|
|
82
82
|
h = JSON.parse( self.value )
|
83
83
|
field = h[ data ]
|
84
|
-
|
84
|
+
@engine.heap.it.set_to field
|
85
85
|
return field
|
86
86
|
end
|
87
87
|
|
@@ -92,13 +92,13 @@ module GlooLang
|
|
92
92
|
#
|
93
93
|
def msg_parse
|
94
94
|
if @params&.token_count&.positive?
|
95
|
-
pn = GlooLang::Core::Pn.new @params.tokens.first
|
95
|
+
pn = GlooLang::Core::Pn.new( @engine, @params.tokens.first )
|
96
96
|
unless pn&.exists?
|
97
|
-
|
97
|
+
@engine.err 'Destination path for parsed objects does not exist'
|
98
98
|
return
|
99
99
|
end
|
100
100
|
else
|
101
|
-
|
101
|
+
@engine.err 'Destination path for parsed objects is required'
|
102
102
|
return
|
103
103
|
end
|
104
104
|
parent = pn.resolve
|
@@ -96,7 +96,7 @@ module GlooLang
|
|
96
96
|
# for default configurations.
|
97
97
|
#
|
98
98
|
def add_default_children
|
99
|
-
fac =
|
99
|
+
fac = @engine.factory
|
100
100
|
fac.create_string URL, 'https://hooks.slack.com/services/...', self
|
101
101
|
fac.create_string MSG, 'textual message', self
|
102
102
|
fac.create_string USER, 'Slack Bot', self
|
@@ -84,7 +84,7 @@ module GlooLang
|
|
84
84
|
# for default configurations.
|
85
85
|
#
|
86
86
|
def add_default_children
|
87
|
-
fac =
|
87
|
+
fac = @engine.factory
|
88
88
|
fac.create_string URL, DEFAULT_URL, self
|
89
89
|
fac.create_string TITLE, '', self
|
90
90
|
fac.create_string COLOR, DEFAULT_COLOR, self
|
@@ -68,7 +68,7 @@ module GlooLang
|
|
68
68
|
cert = response.peer_cert
|
69
69
|
o = cert.not_after
|
70
70
|
|
71
|
-
|
71
|
+
@engine.heap.it.set_to o
|
72
72
|
return o
|
73
73
|
end
|
74
74
|
|
@@ -80,7 +80,7 @@ module GlooLang
|
|
80
80
|
return unless value
|
81
81
|
|
82
82
|
o = URI( value ).fragment
|
83
|
-
|
83
|
+
@engine.heap.it.set_to o
|
84
84
|
return o
|
85
85
|
end
|
86
86
|
|
@@ -92,7 +92,7 @@ module GlooLang
|
|
92
92
|
return unless value
|
93
93
|
|
94
94
|
o = URI( value ).query
|
95
|
-
|
95
|
+
@engine.heap.it.set_to o
|
96
96
|
return o
|
97
97
|
end
|
98
98
|
|
@@ -104,7 +104,7 @@ module GlooLang
|
|
104
104
|
return unless value
|
105
105
|
|
106
106
|
o = URI( value ).path
|
107
|
-
|
107
|
+
@engine.heap.it.set_to o
|
108
108
|
return o
|
109
109
|
end
|
110
110
|
|
@@ -116,7 +116,7 @@ module GlooLang
|
|
116
116
|
return unless value
|
117
117
|
|
118
118
|
o = URI( value ).host
|
119
|
-
|
119
|
+
@engine.heap.it.set_to o
|
120
120
|
return o
|
121
121
|
end
|
122
122
|
|
@@ -128,7 +128,7 @@ module GlooLang
|
|
128
128
|
return unless value
|
129
129
|
|
130
130
|
o = URI( value ).scheme
|
131
|
-
|
131
|
+
@engine.heap.it.set_to o
|
132
132
|
return o
|
133
133
|
end
|
134
134
|
|
@@ -17,7 +17,8 @@ module GlooLang
|
|
17
17
|
#
|
18
18
|
# Set up a file storage for an object.
|
19
19
|
#
|
20
|
-
def initialize( pn )
|
20
|
+
def initialize( engine, pn )
|
21
|
+
@engine = engine
|
21
22
|
@pn = pn
|
22
23
|
@tabs = 0
|
23
24
|
@obj = nil
|
@@ -33,14 +34,14 @@ module GlooLang
|
|
33
34
|
#
|
34
35
|
def load
|
35
36
|
unless File.exist?( @pn )
|
36
|
-
|
37
|
+
@engine.log.error "File '#{@pn}' does not exist."
|
37
38
|
return
|
38
39
|
end
|
39
40
|
|
40
|
-
|
41
|
+
@engine.log.debug "Loading file '#{@pn}'"
|
41
42
|
@tabs = 0
|
42
43
|
@parent_stack = []
|
43
|
-
@parent =
|
44
|
+
@parent = @engine.heap.root
|
44
45
|
@parent_stack.push @parent
|
45
46
|
f = File.open( @pn, 'r' )
|
46
47
|
f.each_line do |line|
|
@@ -150,7 +151,7 @@ module GlooLang
|
|
150
151
|
@block_value = ''
|
151
152
|
end
|
152
153
|
params = { name: name, type: type, value: value, parent: @parent }
|
153
|
-
@last =
|
154
|
+
@last = @engine.factory.create( params )
|
154
155
|
|
155
156
|
if value.empty? && @last&.multiline_value?
|
156
157
|
@multi_indent = 0
|
@@ -13,7 +13,8 @@ module GlooLang
|
|
13
13
|
#
|
14
14
|
# Set up a file storage for an object.
|
15
15
|
#
|
16
|
-
def initialize( pn, obj = nil )
|
16
|
+
def initialize( engine, pn, obj = nil )
|
17
|
+
@engine = engine
|
17
18
|
@obj = obj
|
18
19
|
@pn = pn
|
19
20
|
end
|
@@ -22,7 +23,7 @@ module GlooLang
|
|
22
23
|
# Save the object to the file.
|
23
24
|
#
|
24
25
|
def save
|
25
|
-
fs = FileSaver.new @pn, @obj
|
26
|
+
fs = FileSaver.new( @engine, @pn, @obj )
|
26
27
|
fs.save
|
27
28
|
end
|
28
29
|
|
@@ -30,13 +31,13 @@ module GlooLang
|
|
30
31
|
# Load the object from the file.
|
31
32
|
#
|
32
33
|
def load
|
33
|
-
fl = FileLoader.new @pn
|
34
|
+
fl = FileLoader.new( @engine, @pn )
|
34
35
|
fl.load
|
35
36
|
@obj = fl.obj
|
36
37
|
if @obj
|
37
|
-
|
38
|
+
@engine.log.debug "Loaded object: #{@obj.name}"
|
38
39
|
else
|
39
|
-
|
40
|
+
@engine.log.error "Error loading file at #{@pn}"
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
@@ -15,7 +15,8 @@ module GlooLang
|
|
15
15
|
#
|
16
16
|
# Contructor for the persistence manager.
|
17
17
|
#
|
18
|
-
def initialize
|
18
|
+
def initialize( engine )
|
19
|
+
@engine = engine
|
19
20
|
@maps = []
|
20
21
|
end
|
21
22
|
|
@@ -41,10 +42,10 @@ module GlooLang
|
|
41
42
|
# Save one object to the file.
|
42
43
|
#
|
43
44
|
def save_one( name )
|
44
|
-
ref = GlooLang::Core::Pn.new name
|
45
|
+
ref = GlooLang::Core::Pn.new( @engine, name )
|
45
46
|
obj = ref.resolve
|
46
47
|
pn = get_full_path_name name
|
47
|
-
fs = GlooLang::Persist::FileStorage.new( pn, obj )
|
48
|
+
fs = GlooLang::Persist::FileStorage.new( @engine, pn, obj )
|
48
49
|
fs.save
|
49
50
|
end
|
50
51
|
|
@@ -56,11 +57,11 @@ module GlooLang
|
|
56
57
|
return unless pns
|
57
58
|
|
58
59
|
pns.each do |pn|
|
59
|
-
|
60
|
-
fs = GlooLang::Persist::FileStorage.new( pn )
|
60
|
+
@engine.log.debug "Load file(s) at: #{pn}"
|
61
|
+
fs = GlooLang::Persist::FileStorage.new( @engine, pn )
|
61
62
|
fs.load
|
62
63
|
@maps << fs
|
63
|
-
|
64
|
+
@engine.event_manager.on_load fs.obj
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
@@ -72,7 +73,7 @@ module GlooLang
|
|
72
73
|
|
73
74
|
if name.strip[ -1 ] == '*'
|
74
75
|
pns = []
|
75
|
-
dir = File.join(
|
76
|
+
dir = File.join( @engine.settings.project_path, name[ 0..-2 ] )
|
76
77
|
Dir.glob( "#{dir}*.gloo" ).each do |f|
|
77
78
|
pns << f
|
78
79
|
end
|
@@ -82,7 +83,7 @@ module GlooLang
|
|
82
83
|
return [ ext_path ] if self.gloo_file?( ext_path )
|
83
84
|
|
84
85
|
full_name = "#{name}#{file_ext}"
|
85
|
-
return [ File.join(
|
86
|
+
return [ File.join( @engine.settings.project_path, full_name ) ]
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
@@ -17,7 +17,8 @@ module GlooLang
|
|
17
17
|
#
|
18
18
|
# Create a stats utility class for the given directory.
|
19
19
|
#
|
20
|
-
def initialize( dir, types, skip = [] )
|
20
|
+
def initialize( engine, dir, types, skip = [] )
|
21
|
+
@engine = engine
|
21
22
|
@dir = dir
|
22
23
|
setup_loc types
|
23
24
|
@skip = skip
|
@@ -34,8 +35,8 @@ module GlooLang
|
|
34
35
|
def valid?
|
35
36
|
return true if @dir && File.directory?( @dir )
|
36
37
|
|
37
|
-
|
38
|
-
|
38
|
+
@engine.err DIR_NOT_FOUND_ERR
|
39
|
+
@engine.heap.it.set_to false
|
39
40
|
|
40
41
|
return false
|
41
42
|
end
|
@@ -136,7 +137,7 @@ module GlooLang
|
|
136
137
|
def generate
|
137
138
|
return if @folders
|
138
139
|
|
139
|
-
|
140
|
+
@engine.log.debug 'Generating...'
|
140
141
|
@folders = []
|
141
142
|
@types = {}
|
142
143
|
@file_cnt = 0
|
@@ -24,7 +24,7 @@ module GlooLang
|
|
24
24
|
# Show the current context.
|
25
25
|
#
|
26
26
|
def show_context
|
27
|
-
|
27
|
+
@engine.log.show "Context: #{@engine.heap.context}"
|
28
28
|
end
|
29
29
|
|
30
30
|
#
|
@@ -52,9 +52,9 @@ module GlooLang
|
|
52
52
|
#
|
53
53
|
def set_context
|
54
54
|
path = @tokens.second
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
@engine.heap.context.set_to path
|
56
|
+
@engine.heap.it.set_to path
|
57
|
+
@engine.log.debug "Context set to #{@engine.heap.context}"
|
58
58
|
end
|
59
59
|
|
60
60
|
end
|
@@ -23,7 +23,7 @@ module GlooLang
|
|
23
23
|
value = @tokens.after_token( VAL )
|
24
24
|
|
25
25
|
unless name
|
26
|
-
|
26
|
+
@engine.err NO_NAME_ERR
|
27
27
|
return
|
28
28
|
end
|
29
29
|
create name, type, value
|
@@ -57,10 +57,10 @@ module GlooLang
|
|
57
57
|
if GlooLang::Expr::LString.string?( value )
|
58
58
|
value = GlooLang::Expr::LString.strip_quotes( value )
|
59
59
|
end
|
60
|
-
obj =
|
60
|
+
obj = @engine.factory.create( { name: name, type: type, value: value } )
|
61
61
|
|
62
62
|
obj.add_default_children if obj&.add_children_on_create?
|
63
|
-
|
63
|
+
@engine.heap.it.set_to value
|
64
64
|
end
|
65
65
|
|
66
66
|
end
|
@@ -17,20 +17,20 @@ module GlooLang
|
|
17
17
|
#
|
18
18
|
def run
|
19
19
|
if @tokens.token_count < 2
|
20
|
-
|
20
|
+
@engine.err MISSING_EXPR_ERR
|
21
21
|
return
|
22
22
|
end
|
23
23
|
|
24
|
-
expr = GlooLang::Expr::Expression.new( @tokens.params )
|
24
|
+
expr = GlooLang::Expr::Expression.new( @engine, @tokens.params )
|
25
25
|
cmd = expr.evaluate
|
26
|
-
|
26
|
+
@engine.log.debug "starting cmd: #{cmd}"
|
27
27
|
|
28
28
|
pid = fork { exec( cmd ) }
|
29
29
|
Process.wait pid
|
30
30
|
|
31
31
|
# pid = spawn cmd
|
32
32
|
# Process.wait pid
|
33
|
-
|
33
|
+
@engine.log.debug "done executing cmd: #{cmd}"
|
34
34
|
|
35
35
|
# system expr.evaluate #, chdir: Dir.pwd
|
36
36
|
# `#{expr.evaluate}`
|
data/lib/gloo_lang/verbs/help.rb
CHANGED
@@ -36,7 +36,7 @@ module GlooLang
|
|
36
36
|
if opts
|
37
37
|
dispatch opts
|
38
38
|
else
|
39
|
-
|
39
|
+
@engine.help.page_topic DEFAULT_HELP
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -46,7 +46,7 @@ module GlooLang
|
|
46
46
|
def get_verb_list
|
47
47
|
out = "Verbs:\n"
|
48
48
|
str = ''
|
49
|
-
verbs =
|
49
|
+
verbs = @engine.dictionary.get_verbs.sort_by( &:keyword )
|
50
50
|
verbs.each_with_index do |v, i|
|
51
51
|
cut = v.keyword_shortcut.ljust( 5, ' ' )
|
52
52
|
str << " #{cut} #{v.keyword.ljust( 20, ' ' )}"
|
@@ -72,7 +72,7 @@ module GlooLang
|
|
72
72
|
def get_obj_list
|
73
73
|
out = "Object Types:\n"
|
74
74
|
str = ''
|
75
|
-
objs =
|
75
|
+
objs = @engine.dictionary.get_obj_types.sort_by( &:typename )
|
76
76
|
objs.each_with_index do |o, i|
|
77
77
|
name = o.typename
|
78
78
|
if o.short_typename != o.typename
|
@@ -94,7 +94,7 @@ module GlooLang
|
|
94
94
|
def get_topics
|
95
95
|
out = "Help Topics:\n"
|
96
96
|
str = ''
|
97
|
-
objs =
|
97
|
+
objs = @engine.help.topics.keys.sort
|
98
98
|
objs.each_with_index do |o, i|
|
99
99
|
str << " #{o.ljust( 30, ' ' )}"
|
100
100
|
if ( ( i + 1 ) % 4 ).zero?
|
@@ -130,7 +130,7 @@ module GlooLang
|
|
130
130
|
# Report an error with the inline help.
|
131
131
|
#
|
132
132
|
def report_help_error( opts )
|
133
|
-
|
133
|
+
@engine.err "#{HELP_NOT_FOUND_ERR} '#{opts}'"
|
134
134
|
end
|
135
135
|
|
136
136
|
#
|
@@ -139,13 +139,13 @@ module GlooLang
|
|
139
139
|
def dispatch( opts )
|
140
140
|
return if dispatch_help_page( opts )
|
141
141
|
|
142
|
-
|
142
|
+
@engine.log.debug 'looking for built in help topic'
|
143
143
|
cmd = DISPATCH[ opts.to_sym ]
|
144
144
|
if cmd
|
145
|
-
|
145
|
+
@engine.log.debug 'found help index'
|
146
146
|
send cmd
|
147
147
|
else
|
148
|
-
|
148
|
+
@engine.log.debug 'looking for entity help'
|
149
149
|
entity_help opts
|
150
150
|
end
|
151
151
|
rescue
|
@@ -156,16 +156,16 @@ module GlooLang
|
|
156
156
|
# Dispatch to a help page if we can find one.
|
157
157
|
#
|
158
158
|
def dispatch_help_page( opts )
|
159
|
-
if
|
160
|
-
|
161
|
-
|
159
|
+
if @engine.help.topic? opts
|
160
|
+
@engine.log.debug 'found expanded help topic'
|
161
|
+
@engine.help.page_topic opts
|
162
162
|
return true
|
163
163
|
end
|
164
164
|
|
165
|
-
key =
|
166
|
-
if
|
167
|
-
|
168
|
-
|
165
|
+
key = @engine.dictionary.lookup_keyword opts
|
166
|
+
if @engine.help.topic? key
|
167
|
+
@engine.log.debug 'found expanded help topic'
|
168
|
+
@engine.help.page_topic key
|
169
169
|
return true
|
170
170
|
end
|
171
171
|
|
@@ -177,8 +177,8 @@ module GlooLang
|
|
177
177
|
# silent mode.
|
178
178
|
#
|
179
179
|
def show_output( out )
|
180
|
-
|
181
|
-
puts out unless
|
180
|
+
@engine.heap.it.set_to out
|
181
|
+
puts out unless @engine.args.quiet?
|
182
182
|
end
|
183
183
|
|
184
184
|
#
|
@@ -205,8 +205,8 @@ module GlooLang
|
|
205
205
|
# information about.
|
206
206
|
#
|
207
207
|
def try_verb_help( opts )
|
208
|
-
if
|
209
|
-
t =
|
208
|
+
if @engine.dictionary.verb?( opts )
|
209
|
+
t = @engine.dictionary.find_verb( opts )
|
210
210
|
out = t.send 'help'
|
211
211
|
show_output out
|
212
212
|
return true
|
@@ -220,8 +220,8 @@ module GlooLang
|
|
220
220
|
# information about.
|
221
221
|
#
|
222
222
|
def try_object_help( opts )
|
223
|
-
if
|
224
|
-
t =
|
223
|
+
if @engine.dictionary.obj?( opts )
|
224
|
+
t = @engine.dictionary.find_obj( opts )
|
225
225
|
out = t.send 'help'
|
226
226
|
show_output out
|
227
227
|
return true
|
@@ -234,14 +234,14 @@ module GlooLang
|
|
234
234
|
# Show application settings.
|
235
235
|
#
|
236
236
|
def show_settings
|
237
|
-
|
237
|
+
@engine.settings.show
|
238
238
|
end
|
239
239
|
|
240
240
|
#
|
241
241
|
# Show all keywords: verbs and objects.
|
242
242
|
#
|
243
243
|
def show_keywords
|
244
|
-
|
244
|
+
@engine.dictionary.show_keywords
|
245
245
|
end
|
246
246
|
|
247
247
|
#
|
data/lib/gloo_lang/verbs/if.rb
CHANGED
@@ -55,7 +55,7 @@ module GlooLang
|
|
55
55
|
# The first token is the verb, so we drop it.
|
56
56
|
value = value[ 1..-1 ]
|
57
57
|
else
|
58
|
-
|
58
|
+
@engine.err MISSING_EXPR_ERR
|
59
59
|
end
|
60
60
|
|
61
61
|
return value
|
@@ -67,7 +67,7 @@ module GlooLang
|
|
67
67
|
def evals_true( value )
|
68
68
|
eval_result = false
|
69
69
|
if value.count.positive?
|
70
|
-
expr = GlooLang::Expr::Expression.new( value )
|
70
|
+
expr = GlooLang::Expr::Expression.new( @engine, value )
|
71
71
|
result = expr.evaluate
|
72
72
|
eval_result = true if result == true
|
73
73
|
eval_result = true if result.is_a?( Numeric ) && result != 0
|
@@ -81,7 +81,7 @@ module GlooLang
|
|
81
81
|
#
|
82
82
|
def run_then
|
83
83
|
cmd = @tokens.expr_after( THEN )
|
84
|
-
i =
|
84
|
+
i = @engine.parser.parse_immediate cmd
|
85
85
|
return unless i
|
86
86
|
|
87
87
|
i.run
|
data/lib/gloo_lang/verbs/list.rb
CHANGED
@@ -22,7 +22,7 @@ module GlooLang
|
|
22
22
|
if obj
|
23
23
|
show_target( obj, levels )
|
24
24
|
else
|
25
|
-
|
25
|
+
@engine.err "#{TARGET_MISSING_ERR} #{target}"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -30,9 +30,9 @@ module GlooLang
|
|
30
30
|
# Determine the target object for the show command.
|
31
31
|
#
|
32
32
|
def determine_target
|
33
|
-
return
|
33
|
+
return @engine.heap.context if @tokens.token_count == 1
|
34
34
|
|
35
|
-
return GlooLang::Core::Pn.new( @tokens.second )
|
35
|
+
return GlooLang::Core::Pn.new( @engine, @tokens.second )
|
36
36
|
end
|
37
37
|
|
38
38
|
#
|
@@ -72,12 +72,12 @@ module GlooLang
|
|
72
72
|
#
|
73
73
|
def show_obj( obj, indent = ' ' )
|
74
74
|
if obj.multiline_value? && obj.value_is_array?
|
75
|
-
|
75
|
+
@engine.log.show "#{indent}#{obj.name} [#{obj.type_display}] :"
|
76
76
|
obj.value.each do |line|
|
77
|
-
|
77
|
+
@engine.log.show "#{indent} #{line}"
|
78
78
|
end
|
79
79
|
else
|
80
|
-
|
80
|
+
@engine.log.show "#{indent}#{obj.name} [#{obj.type_display}] : #{obj.value}"
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -86,7 +86,7 @@ module GlooLang
|
|
86
86
|
#
|
87
87
|
def determine_levels
|
88
88
|
# Check settings for the default value.
|
89
|
-
levels =
|
89
|
+
levels = @engine.settings.list_indent
|
90
90
|
return levels if levels
|
91
91
|
|
92
92
|
# Last chance: use the default
|