gloo-lang 0.9.8 → 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +14 -1
  3. data/gloo-lang.gemspec +1 -1
  4. data/lib/VERSION +1 -1
  5. data/lib/gloo_lang/app/args.rb +3 -2
  6. data/lib/gloo_lang/app/engine.rb +25 -25
  7. data/lib/gloo_lang/app/engine_context.rb +25 -0
  8. data/lib/gloo_lang/app/help.rb +10 -9
  9. data/lib/gloo_lang/app/log.rb +5 -3
  10. data/lib/gloo_lang/app/settings.rb +30 -37
  11. data/lib/gloo_lang/convert/converter.rb +9 -2
  12. data/lib/gloo_lang/core/baseo.rb +2 -1
  13. data/lib/gloo_lang/core/dictionary.rb +16 -6
  14. data/lib/gloo_lang/core/event_manager.rb +9 -8
  15. data/lib/gloo_lang/core/factory.rb +11 -10
  16. data/lib/gloo_lang/core/gloo_system.rb +9 -8
  17. data/lib/gloo_lang/core/heap.rb +5 -4
  18. data/lib/gloo_lang/core/here.rb +2 -2
  19. data/lib/gloo_lang/core/obj.rb +9 -8
  20. data/lib/gloo_lang/core/obj_finder.rb +3 -3
  21. data/lib/gloo_lang/core/parser.rb +6 -5
  22. data/lib/gloo_lang/core/pn.rb +20 -16
  23. data/lib/gloo_lang/core/verb.rb +2 -1
  24. data/lib/gloo_lang/exec/dispatch.rb +8 -8
  25. data/lib/gloo_lang/exec/exec_env.rb +7 -6
  26. data/lib/gloo_lang/exec/runner.rb +10 -10
  27. data/lib/gloo_lang/exec/script.rb +6 -5
  28. data/lib/gloo_lang/exec/stack.rb +8 -7
  29. data/lib/gloo_lang/expr/expression.rb +3 -2
  30. data/lib/gloo_lang/objs/basic/alias.rb +4 -4
  31. data/lib/gloo_lang/objs/basic/boolean.rb +3 -3
  32. data/lib/gloo_lang/objs/basic/container.rb +2 -2
  33. data/lib/gloo_lang/objs/basic/decimal.rb +3 -3
  34. data/lib/gloo_lang/objs/basic/integer.rb +3 -3
  35. data/lib/gloo_lang/objs/basic/script.rb +1 -1
  36. data/lib/gloo_lang/objs/basic/string.rb +3 -3
  37. data/lib/gloo_lang/objs/basic/text.rb +2 -2
  38. data/lib/gloo_lang/objs/ctrl/each.rb +3 -3
  39. data/lib/gloo_lang/objs/ctrl/repeat.rb +2 -2
  40. data/lib/gloo_lang/objs/data/markdown.rb +2 -2
  41. data/lib/gloo_lang/objs/data/query.rb +4 -4
  42. data/lib/gloo_lang/objs/data/table.rb +3 -3
  43. data/lib/gloo_lang/objs/dt/date.rb +1 -1
  44. data/lib/gloo_lang/objs/dt/datetime.rb +2 -2
  45. data/lib/gloo_lang/objs/dt/time.rb +1 -1
  46. data/lib/gloo_lang/objs/ror/erb.rb +2 -2
  47. data/lib/gloo_lang/objs/ror/eval.rb +3 -3
  48. data/lib/gloo_lang/objs/web/http_get.rb +3 -3
  49. data/lib/gloo_lang/objs/web/http_post.rb +8 -8
  50. data/lib/gloo_lang/objs/web/json.rb +5 -5
  51. data/lib/gloo_lang/objs/web/slack.rb +1 -1
  52. data/lib/gloo_lang/objs/web/teams.rb +1 -1
  53. data/lib/gloo_lang/objs/web/uri.rb +6 -6
  54. data/lib/gloo_lang/persist/file_loader.rb +6 -5
  55. data/lib/gloo_lang/persist/file_saver.rb +2 -1
  56. data/lib/gloo_lang/persist/file_storage.rb +6 -5
  57. data/lib/gloo_lang/persist/persist_man.rb +9 -8
  58. data/lib/gloo_lang/utils/stats.rb +5 -4
  59. data/lib/gloo_lang/verbs/context.rb +4 -4
  60. data/lib/gloo_lang/verbs/create.rb +3 -3
  61. data/lib/gloo_lang/verbs/execute.rb +4 -4
  62. data/lib/gloo_lang/verbs/help.rb +23 -23
  63. data/lib/gloo_lang/verbs/if.rb +3 -3
  64. data/lib/gloo_lang/verbs/list.rb +7 -7
  65. data/lib/gloo_lang/verbs/load.rb +3 -3
  66. data/lib/gloo_lang/verbs/move.rb +6 -6
  67. data/lib/gloo_lang/verbs/put.rb +6 -6
  68. data/lib/gloo_lang/verbs/quit.rb +1 -1
  69. data/lib/gloo_lang/verbs/run.rb +5 -5
  70. data/lib/gloo_lang/verbs/save.rb +1 -1
  71. data/lib/gloo_lang/verbs/show.rb +5 -5
  72. data/lib/gloo_lang/verbs/tell.rb +5 -4
  73. data/lib/gloo_lang/verbs/unless.rb +3 -3
  74. data/lib/gloo_lang/verbs/version.rb +1 -1
  75. data/lib/gloo_lang/verbs/wait.rb +1 -1
  76. metadata +23 -2
@@ -52,7 +52,7 @@ module GlooLang
52
52
  # for default configurations.
53
53
  #
54
54
  def add_default_children
55
- fac = $engine.factory
55
+ fac = @engine.factory
56
56
  fac.create_alias DB, nil, self
57
57
  fac.create_string SQL, nil, self
58
58
  fac.create_can RESULT, self
@@ -75,7 +75,7 @@ module GlooLang
75
75
  def msg_run
76
76
  db = db_obj
77
77
  unless db
78
- $engine.err DB_MISSING_ERR
78
+ @engine.err DB_MISSING_ERR
79
79
  return
80
80
  end
81
81
 
@@ -94,7 +94,7 @@ module GlooLang
94
94
  #
95
95
  def db_obj
96
96
  o = find_child DB
97
- return GlooLang::Objs::Alias.resolve_alias( o )
97
+ return GlooLang::Objs::Alias.resolve_alias( @engine, o )
98
98
  end
99
99
 
100
100
  #
@@ -161,7 +161,7 @@ module GlooLang
161
161
  #
162
162
  def update_result_contaier( data )
163
163
  r = find_child RESULT
164
- r = GlooLang::Objs::Alias.resolve_alias( r )
164
+ r = GlooLang::Objs::Alias.resolve_alias( @engine, r )
165
165
  data.each_with_index do |row, i|
166
166
  can = r.find_add_child( i.to_s, 'can' )
167
167
  row.each do |k, v|
@@ -57,7 +57,7 @@ module GlooLang
57
57
  o = find_child DATA
58
58
  return [] unless o
59
59
 
60
- o = GlooLang::Objs::Alias.resolve_alias( o )
60
+ o = GlooLang::Objs::Alias.resolve_alias( @engine, o )
61
61
  cols = self.columns
62
62
  return o.children.map do |e|
63
63
  cols.map { |h| e.find_child( h ).value }
@@ -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_can HEADERS, self
88
88
  fac.create_can DATA, self
89
89
  end
@@ -104,7 +104,7 @@ module GlooLang
104
104
  #
105
105
  def msg_show
106
106
  title = self.value
107
- $engine.platform.show_table headers, data, title
107
+ @engine.platform.show_table headers, data, title
108
108
  end
109
109
 
110
110
  end
@@ -42,7 +42,7 @@ module GlooLang
42
42
  def msg_now
43
43
  t = DateTime.now.strftime( '%Y.%m.%d' )
44
44
  self.value = t
45
- $engine.heap.it.set_to t
45
+ @engine.heap.it.set_to t
46
46
  end
47
47
 
48
48
  end
@@ -30,7 +30,7 @@ module GlooLang
30
30
  #
31
31
  def set_value( new_value )
32
32
  unless new_value.is_a? DateTime
33
- self.value = $engine.converter.convert( new_value, 'DateTime', nil )
33
+ self.value = @engine.converter.convert( new_value, 'DateTime', nil )
34
34
  return
35
35
  end
36
36
 
@@ -54,7 +54,7 @@ module GlooLang
54
54
  def msg_now
55
55
  t = DateTime.now.strftime( '%Y.%m.%d %I:%M:%S %P' )
56
56
  self.value = t
57
- $engine.heap.it.set_to t
57
+ @engine.heap.it.set_to t
58
58
  end
59
59
 
60
60
  end
@@ -42,7 +42,7 @@ module GlooLang
42
42
  def msg_now
43
43
  t = DateTime.now.strftime( '%I:%M:%S %P' )
44
44
  self.value = t
45
- $engine.heap.it.set_to t
45
+ @engine.heap.it.set_to t
46
46
  end
47
47
 
48
48
  end
@@ -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}`