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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -1
  3. data/lib/VERSION +1 -1
  4. data/lib/gloo_lang/app/args.rb +3 -2
  5. data/lib/gloo_lang/app/engine.rb +25 -26
  6. data/lib/gloo_lang/app/help.rb +10 -9
  7. data/lib/gloo_lang/app/log.rb +5 -3
  8. data/lib/gloo_lang/app/settings.rb +10 -9
  9. data/lib/gloo_lang/convert/converter.rb +9 -2
  10. data/lib/gloo_lang/core/baseo.rb +2 -1
  11. data/lib/gloo_lang/core/dictionary.rb +16 -6
  12. data/lib/gloo_lang/core/event_manager.rb +9 -8
  13. data/lib/gloo_lang/core/factory.rb +11 -10
  14. data/lib/gloo_lang/core/gloo_system.rb +9 -8
  15. data/lib/gloo_lang/core/heap.rb +5 -4
  16. data/lib/gloo_lang/core/here.rb +2 -2
  17. data/lib/gloo_lang/core/obj.rb +9 -8
  18. data/lib/gloo_lang/core/obj_finder.rb +3 -3
  19. data/lib/gloo_lang/core/parser.rb +6 -5
  20. data/lib/gloo_lang/core/pn.rb +20 -16
  21. data/lib/gloo_lang/core/verb.rb +2 -1
  22. data/lib/gloo_lang/exec/dispatch.rb +8 -8
  23. data/lib/gloo_lang/exec/exec_env.rb +7 -6
  24. data/lib/gloo_lang/exec/runner.rb +10 -10
  25. data/lib/gloo_lang/exec/script.rb +6 -5
  26. data/lib/gloo_lang/exec/stack.rb +8 -7
  27. data/lib/gloo_lang/expr/expression.rb +3 -2
  28. data/lib/gloo_lang/objs/basic/alias.rb +4 -4
  29. data/lib/gloo_lang/objs/basic/boolean.rb +3 -3
  30. data/lib/gloo_lang/objs/basic/container.rb +2 -2
  31. data/lib/gloo_lang/objs/basic/decimal.rb +3 -3
  32. data/lib/gloo_lang/objs/basic/integer.rb +3 -3
  33. data/lib/gloo_lang/objs/basic/script.rb +1 -1
  34. data/lib/gloo_lang/objs/basic/string.rb +3 -3
  35. data/lib/gloo_lang/objs/basic/text.rb +2 -2
  36. data/lib/gloo_lang/objs/ctrl/each.rb +3 -3
  37. data/lib/gloo_lang/objs/ctrl/repeat.rb +2 -2
  38. data/lib/gloo_lang/objs/data/markdown.rb +2 -2
  39. data/lib/gloo_lang/objs/data/query.rb +4 -4
  40. data/lib/gloo_lang/objs/data/table.rb +3 -3
  41. data/lib/gloo_lang/objs/dt/date.rb +1 -1
  42. data/lib/gloo_lang/objs/dt/datetime.rb +2 -2
  43. data/lib/gloo_lang/objs/dt/time.rb +1 -1
  44. data/lib/gloo_lang/objs/ror/erb.rb +2 -2
  45. data/lib/gloo_lang/objs/ror/eval.rb +3 -3
  46. data/lib/gloo_lang/objs/web/http_get.rb +3 -3
  47. data/lib/gloo_lang/objs/web/http_post.rb +8 -8
  48. data/lib/gloo_lang/objs/web/json.rb +5 -5
  49. data/lib/gloo_lang/objs/web/slack.rb +1 -1
  50. data/lib/gloo_lang/objs/web/teams.rb +1 -1
  51. data/lib/gloo_lang/objs/web/uri.rb +6 -6
  52. data/lib/gloo_lang/persist/file_loader.rb +6 -5
  53. data/lib/gloo_lang/persist/file_saver.rb +2 -1
  54. data/lib/gloo_lang/persist/file_storage.rb +6 -5
  55. data/lib/gloo_lang/persist/persist_man.rb +9 -8
  56. data/lib/gloo_lang/utils/stats.rb +5 -4
  57. data/lib/gloo_lang/verbs/context.rb +4 -4
  58. data/lib/gloo_lang/verbs/create.rb +3 -3
  59. data/lib/gloo_lang/verbs/execute.rb +4 -4
  60. data/lib/gloo_lang/verbs/help.rb +23 -23
  61. data/lib/gloo_lang/verbs/if.rb +3 -3
  62. data/lib/gloo_lang/verbs/list.rb +7 -7
  63. data/lib/gloo_lang/verbs/load.rb +3 -3
  64. data/lib/gloo_lang/verbs/move.rb +6 -6
  65. data/lib/gloo_lang/verbs/put.rb +6 -6
  66. data/lib/gloo_lang/verbs/quit.rb +1 -1
  67. data/lib/gloo_lang/verbs/run.rb +5 -5
  68. data/lib/gloo_lang/verbs/save.rb +1 -1
  69. data/lib/gloo_lang/verbs/show.rb +5 -5
  70. data/lib/gloo_lang/verbs/tell.rb +5 -4
  71. data/lib/gloo_lang/verbs/unless.rb +3 -3
  72. data/lib/gloo_lang/verbs/version.rb +1 -1
  73. data/lib/gloo_lang/verbs/wait.rb +1 -1
  74. metadata +2 -4
  75. data/lib/gloo_lang/objs/data/mysql.rb +0 -192
  76. 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 = $engine.factory
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 = $engine.factory
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
- $engine.heap.it.set_to result
99
+ @engine.heap.it.set_to result
100
100
  rescue => e
101
- $engine.err e.message
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 = $engine.factory
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
- $log.debug url
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 = $engine.factory
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
- $log.debug "posting to: #{uri}"
114
+ @engine.log.debug "posting to: #{uri}"
115
115
  body = self.body_as_json
116
- $log.debug "posting body: #{body}"
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
- $log.debug result.code
140
- $log.debug result.message
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
- # $log.debug result.code
161
- # $log.debug result.message
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
- $engine.heap.it.set_to field
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
- $engine.err 'Destination path for parsed objects does not exist'
97
+ @engine.err 'Destination path for parsed objects does not exist'
98
98
  return
99
99
  end
100
100
  else
101
- $engine.err 'Destination path for parsed objects is required'
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 = $engine.factory
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 = $engine.factory
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
- $engine.heap.it.set_to o
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
- $engine.heap.it.set_to o
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
- $engine.heap.it.set_to o
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
- $engine.heap.it.set_to o
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
- $engine.heap.it.set_to o
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
- $engine.heap.it.set_to o
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
- $log.error "File '#{@pn}' does not exist."
37
+ @engine.log.error "File '#{@pn}' does not exist."
37
38
  return
38
39
  end
39
40
 
40
- $log.debug "Loading file '#{@pn}'"
41
+ @engine.log.debug "Loading file '#{@pn}'"
41
42
  @tabs = 0
42
43
  @parent_stack = []
43
- @parent = $engine.heap.root
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 = $engine.factory.create( params )
154
+ @last = @engine.factory.create( params )
154
155
 
155
156
  if value.empty? && @last&.multiline_value?
156
157
  @multi_indent = 0
@@ -11,7 +11,8 @@ module GlooLang
11
11
  #
12
12
  # Set up a file storage for an object.
13
13
  #
14
- def initialize( pn, obj )
14
+ def initialize( engine, pn, obj )
15
+ @engine = engine
15
16
  @pn = pn
16
17
  @obj = obj
17
18
  end
@@ -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
- $log.debug "Loaded object: #{@obj.name}"
38
+ @engine.log.debug "Loaded object: #{@obj.name}"
38
39
  else
39
- $log.error "Error loading file at #{@pn}"
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
- $log.debug "Load file(s) at: #{pn}"
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
- $engine.event_manager.on_load fs.obj
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( $settings.project_path, name[ 0..-2 ] )
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( $settings.project_path, full_name ) ]
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
- $engine.err DIR_NOT_FOUND_ERR
38
- $engine.heap.it.set_to false
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
- $log.debug 'Generating...'
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
- $log.show "Context: #{$engine.heap.context}"
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
- $engine.heap.context.set_to path
56
- $engine.heap.it.set_to path
57
- $log.debug "Context set to #{$engine.heap.context}"
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
- $engine.err NO_NAME_ERR
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 = $engine.factory.create( { name: name, type: type, value: value } )
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
- $engine.heap.it.set_to value
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
- $engine.err MISSING_EXPR_ERR
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
- $log.debug "starting cmd: #{cmd}"
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
- $log.debug "done executing cmd: #{cmd}"
33
+ @engine.log.debug "done executing cmd: #{cmd}"
34
34
 
35
35
  # system expr.evaluate #, chdir: Dir.pwd
36
36
  # `#{expr.evaluate}`
@@ -36,7 +36,7 @@ module GlooLang
36
36
  if opts
37
37
  dispatch opts
38
38
  else
39
- $engine.help.page_topic DEFAULT_HELP
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 = $engine.dictionary.get_verbs.sort_by( &:keyword )
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 = $engine.dictionary.get_obj_types.sort_by( &:typename )
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 = $engine.help.topics.keys.sort
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
- $engine.err "#{HELP_NOT_FOUND_ERR} '#{opts}'"
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
- $log.debug 'looking for built in help topic'
142
+ @engine.log.debug 'looking for built in help topic'
143
143
  cmd = DISPATCH[ opts.to_sym ]
144
144
  if cmd
145
- $log.debug 'found help index'
145
+ @engine.log.debug 'found help index'
146
146
  send cmd
147
147
  else
148
- $log.debug 'looking for entity help'
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 $engine.help.topic? opts
160
- $log.debug 'found expanded help topic'
161
- $engine.help.page_topic opts
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 = $engine.dictionary.lookup_keyword opts
166
- if $engine.help.topic? key
167
- $log.debug 'found expanded help topic'
168
- $engine.help.page_topic key
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
- $engine.heap.it.set_to out
181
- puts out unless $engine.args.quiet?
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 $engine.dictionary.verb?( opts )
209
- t = $engine.dictionary.find_verb( opts )
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 $engine.dictionary.obj?( opts )
224
- t = $engine.dictionary.find_obj( opts )
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
- $settings.show
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
- $engine.dictionary.show_keywords
244
+ @engine.dictionary.show_keywords
245
245
  end
246
246
 
247
247
  #
@@ -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
- $engine.err MISSING_EXPR_ERR
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 = $engine.parser.parse_immediate cmd
84
+ i = @engine.parser.parse_immediate cmd
85
85
  return unless i
86
86
 
87
87
  i.run
@@ -22,7 +22,7 @@ module GlooLang
22
22
  if obj
23
23
  show_target( obj, levels )
24
24
  else
25
- $engine.err "#{TARGET_MISSING_ERR} #{target}"
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 $engine.heap.context if @tokens.token_count == 1
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
- $log.show "#{indent}#{obj.name} [#{obj.type_display}] :"
75
+ @engine.log.show "#{indent}#{obj.name} [#{obj.type_display}] :"
76
76
  obj.value.each do |line|
77
- $log.show "#{indent} #{line}"
77
+ @engine.log.show "#{indent} #{line}"
78
78
  end
79
79
  else
80
- $log.show "#{indent}#{obj.name} [#{obj.type_display}] : #{obj.value}"
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 = $settings.list_indent
89
+ levels = @engine.settings.list_indent
90
90
  return levels if levels
91
91
 
92
92
  # Last chance: use the default