gloo 3.2.0 → 3.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1dca7b53440a446850b2c3bd58b9a2b3c66ef73156bf7e8e90bfba9ddd71032
4
- data.tar.gz: 012614b36386042458633b635a4f28c33fd9be21a50be7bcf37271d8c2aa8360
3
+ metadata.gz: 02f90941d4a489efde1a15b50d55c85af80e1ac02e012102644a21613ce23e90
4
+ data.tar.gz: 3216f0732a0e59b258453ce5d929f751477a264586e73f668ced1332cb601d61
5
5
  SHA512:
6
- metadata.gz: 0ae04823687860a34d4134bc9f3338a7d05dd68b6cd618d8ef8f1f51198bbcd2ea692f3737ab6e235f175ffa184114c6158071fc743ccc1073cba27d1d4efca0
7
- data.tar.gz: 4a0c04fb3f64e2d7c045b72fd4a6f7c8b8d172b18b030de033d492803adf67eaf8c0f657e174b861d6de05172755f8bfb8273f3be42d53913c074923468371e7
6
+ metadata.gz: b68948e64413281d9a1f51542888b6818adf28adfb0a625e0c8415c596600207365d761a6c5ebe36c5cebbeb6ab7ee6a6244dc1e8f215b58f5b7000909032d18
7
+ data.tar.gz: 9cef0e42026158497bf424828e691958a196ff7a6cd65771dff504a59c2a205691b997485e7cd1b50e8882d349076b0d8f8b8564f794d953021cf2e4a2310667
data/gloo.gemspec CHANGED
@@ -43,4 +43,5 @@ Gem::Specification.new do |spec|
43
43
  spec.add_dependency 'os', '~> 1.1', '>= 1.1.4'
44
44
  spec.add_dependency 'pg', '~> 1.5.4'
45
45
  spec.add_dependency 'thin', '~> 1.8.2'
46
+ spec.add_dependency 'redcarpet', '~> 3.6.0'
46
47
  end
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.0
1
+ 3.3.0
data/lib/VERSION_NOTES CHANGED
@@ -1,3 +1,10 @@
1
+ 3.3.0 - 2024.08.16
2
+ - Adds nil converters to string and integer.
3
+ - Adds render to markdown object to convert to html
4
+ - Adds invoke verb to call a function from a script
5
+ - Web updates: singular name conventions
6
+
7
+
1
8
  3.2.0 - 2024.07.07
2
9
  - Update with more web server functionality, http methods, resource routing
3
10
  - Expands query with additional html table support
@@ -35,7 +35,13 @@ module Gloo
35
35
  #
36
36
  def show( msg, md=false, page=false )
37
37
  if md
38
- msg = TTY::Markdown.parse msg
38
+ # 2024.08.16 - TTY::Markdown.parse msg was not working.
39
+ # Tried with redcarpet and it was not working either.
40
+ # So just leaving it for now. Not sure I even really need it.
41
+ # TODO: Revisit and clean up.
42
+
43
+ # msg = TTY::Markdown.parse msg
44
+ # msg = Gloo::Objs::Markdown.md_2_manpage( msg )
39
45
  end
40
46
 
41
47
  if page
@@ -0,0 +1,20 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: FALSE to Integer.
5
+ #
6
+
7
+ module Gloo
8
+ module Convert
9
+ class FalseClassToInteger
10
+
11
+ #
12
+ # Convert the given FALSE value to an integer.
13
+ #
14
+ def convert( value )
15
+ return 0
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: Nil to Date.
5
+ #
6
+ require 'chronic'
7
+
8
+ module Gloo
9
+ module Convert
10
+ class NilClassToDate
11
+
12
+ #
13
+ # Convert a nil to a date.
14
+ #
15
+ def convert( value )
16
+ return Chronic.parse( '' )
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: Nil to DateTime.
5
+ #
6
+ require 'chronic'
7
+
8
+ module Gloo
9
+ module Convert
10
+ class NilClassToDateTime
11
+
12
+ #
13
+ # Convert a nil to a date.
14
+ #
15
+ def convert( value )
16
+ return Chronic.parse( '' )
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: Nil to Integer.
5
+ #
6
+ require 'chronic'
7
+
8
+ module Gloo
9
+ module Convert
10
+ class NilClassToInteger
11
+
12
+ #
13
+ # Convert a nil to a string.
14
+ #
15
+ def convert( value )
16
+ return 0
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: Nil to String.
5
+ #
6
+ require 'chronic'
7
+
8
+ module Gloo
9
+ module Convert
10
+ class NilClassToString
11
+
12
+ #
13
+ # Convert a nil to a string.
14
+ #
15
+ def convert( value )
16
+ return ''
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: Nil to Time.
5
+ #
6
+ require 'chronic'
7
+
8
+ module Gloo
9
+ module Convert
10
+ class NilClassToTime
11
+
12
+ #
13
+ # Convert a nil to a date.
14
+ #
15
+ def convert( value )
16
+ return Chronic.parse( '' )
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Conversion tool: TRUE to Integer.
5
+ #
6
+
7
+ module Gloo
8
+ module Convert
9
+ class TrueClassToInteger
10
+
11
+ #
12
+ # Convert the given TRUE value to an integer.
13
+ #
14
+ def convert( value )
15
+ return 1
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -56,6 +56,13 @@ module Gloo
56
56
  return @value.to_s
57
57
  end
58
58
 
59
+ #
60
+ # Is this a function object?
61
+ #
62
+ def is_function?
63
+ return false
64
+ end
65
+
59
66
  end
60
67
  end
61
68
  end
data/lib/gloo/core/it.rb CHANGED
@@ -31,6 +31,13 @@ module Gloo
31
31
  return @value.to_s
32
32
  end
33
33
 
34
+ #
35
+ # Is this a function object?
36
+ #
37
+ def is_function?
38
+ return false
39
+ end
40
+
34
41
  end
35
42
  end
36
43
  end
data/lib/gloo/core/obj.rb CHANGED
@@ -144,6 +144,13 @@ module Gloo
144
144
  return self.type_display == Gloo::Objs::Alias.typename
145
145
  end
146
146
 
147
+ #
148
+ # Is this a function object?
149
+ #
150
+ def is_function?
151
+ return self.type_display == Gloo::Objs::Function.typename
152
+ end
153
+
147
154
 
148
155
  # ---------------------------------------------------------------------
149
156
  # Children
@@ -20,8 +20,11 @@ module Gloo
20
20
  #
21
21
  # Parse a command from the immediate execution context.
22
22
  #
23
- def parse_immediate( cmd )
24
- cmd, params = split_params cmd
23
+ def parse_immediate( full_cmd )
24
+ # Break the full command into verb and params
25
+ cmd, params = split_params full_cmd
26
+
27
+ # Params are the parenthetical part of the command at the end
25
28
  params = Gloo::Core::Tokens.new( params ) if params
26
29
  tokens = Gloo::Core::Tokens.new( cmd )
27
30
  dic = Gloo::Core::Dictionary.instance
@@ -42,7 +45,7 @@ module Gloo
42
45
  if i && cmd.strip.end_with?( ')' )
43
46
  pstr = cmd[ i + 1..-1 ]
44
47
  params = pstr.strip[ 0..-2 ] if pstr
45
- cmd = cmd[ 0, i - 1 ]
48
+ cmd = cmd[ 0, i].strip
46
49
  end
47
50
  return cmd, params
48
51
  end
@@ -37,6 +37,7 @@ module Gloo
37
37
  self.value = new_value.to_i
38
38
  end
39
39
 
40
+
40
41
  # ---------------------------------------------------------------------
41
42
  # Messages
42
43
  # ---------------------------------------------------------------------
@@ -14,6 +14,7 @@ module Gloo
14
14
 
15
15
  # Events
16
16
  ON_INVOKE = 'on_invoke'.freeze
17
+ AFTER_INVOKE = 'after_invoke'.freeze
17
18
 
18
19
  # Parameters to the function invocation.
19
20
  PARAMS = 'params'.freeze
@@ -132,6 +133,16 @@ module Gloo
132
133
  Gloo::Exec::Dispatch.message( @engine, 'run', o )
133
134
  end
134
135
 
136
+ #
137
+ # Run the after invoke script if there is one.
138
+ #
139
+ def run_after_invoke
140
+ o = find_child AFTER_INVOKE
141
+ return unless o
142
+
143
+ Gloo::Exec::Dispatch.message( @engine, 'run', o )
144
+ end
145
+
135
146
 
136
147
  # ---------------------------------------------------------------------
137
148
  # Messages
@@ -147,6 +158,7 @@ module Gloo
147
158
  run_on_invoke
148
159
  return_value = result
149
160
  @engine.heap.it.set_to return_value
161
+ run_after_invoke
150
162
 
151
163
  return return_value
152
164
  end
@@ -3,6 +3,7 @@
3
3
  #
4
4
  # Markdown data.
5
5
  #
6
+ require 'redcarpet'
6
7
 
7
8
  module Gloo
8
9
  module Objs
@@ -55,7 +56,7 @@ module Gloo
55
56
  # Get a list of message names that this object receives.
56
57
  #
57
58
  def self.messages
58
- return super + %w[show page]
59
+ return super + %w[show page render]
59
60
  end
60
61
 
61
62
  #
@@ -71,9 +72,66 @@ module Gloo
71
72
  def msg_page
72
73
  return unless self.value
73
74
 
74
- @engine.platform.show( md, true, true )
75
+ @engine.platform.show( self.value, true, true )
75
76
  end
76
77
 
78
+ #
79
+ # Render the markdown as HTML.
80
+ # Needs an optional parameter of where to put the rendered html.
81
+ # The html will be in 'it' as well.
82
+ #
83
+ def msg_render
84
+ html = Gloo::Objs::Markdown.md_2_html( value )
85
+
86
+ # Put the HTML in the optional parameter if one is given.
87
+ if @params&.token_count&.positive?
88
+ pn = Gloo::Core::Pn.new( @engine, @params.first )
89
+ o = pn.resolve
90
+ o.set_value html
91
+ end
92
+
93
+ # Put the HTML in it, in any case.
94
+ @engine.heap.it.set_to html
95
+ end
96
+
97
+ # ---------------------------------------------------------------------
98
+ # Static Helpers
99
+ # ---------------------------------------------------------------------
100
+
101
+ #
102
+ # Convert markdown to HTML using the
103
+ # Redcarpet markdown processor.
104
+ #
105
+ def self.md_2_html( md )
106
+ markdown = Redcarpet::Markdown.new(
107
+ Redcarpet::Render::HTML,
108
+ autolink: true,
109
+ fenced_code_blocks: true,
110
+ tables: true,
111
+ strikethrough: true )
112
+
113
+ return markdown.render( md )
114
+ end
115
+
116
+ #
117
+ # Does not work.
118
+ # See note in the platform.rb file.
119
+ #
120
+ # #
121
+ # # Convert markdown to manpage using the
122
+ # # Redcarpet markdown processor.
123
+ # #
124
+ # def self.md_2_manpage( md )
125
+ # markdown = Redcarpet::Markdown.new(
126
+ # Redcarpet::Render::ManPage,
127
+ # autolink: true,
128
+ # fenced_code_blocks: true,
129
+ # tables: true,
130
+ # strikethrough: true )
131
+
132
+ # return markdown.render( md )
133
+ # end
134
+
77
135
  end
78
136
  end
79
137
  end
@@ -196,6 +196,8 @@ module Gloo
196
196
  o = find_child ON_RENDER
197
197
  return unless o
198
198
 
199
+ @engine.log.debug "running on_render for page"
200
+
199
201
  Gloo::Exec::Dispatch.message( @engine, 'run', o )
200
202
  end
201
203
 
@@ -206,6 +208,8 @@ module Gloo
206
208
  o = find_child ON_RENDERED
207
209
  return unless o
208
210
 
211
+ @engine.log.debug "running on_rendered for page"
212
+
209
213
  Gloo::Exec::Dispatch.message( @engine, 'run', o )
210
214
  end
211
215
 
@@ -321,12 +325,12 @@ module Gloo
321
325
  @request = request
322
326
  set_id if @request
323
327
 
324
- # Set Params before running on render
325
- params = params_hash
326
-
327
328
  run_on_render
328
329
  return nil if redirect_set?
329
330
 
331
+ # Set Params before running on render
332
+ params = params_hash
333
+
330
334
  if is_html?
331
335
  contents = render_html params
332
336
  elsif is_json?
@@ -337,7 +341,7 @@ module Gloo
337
341
  @engine.log.error "Unknown content type: #{content_type}"
338
342
  return nil
339
343
  end
340
-
344
+
341
345
  run_on_rendered
342
346
  @request = nil
343
347
  return nil if redirect_set?
@@ -0,0 +1,80 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
3
+ #
4
+ # Invoke a function from a script.
5
+ #
6
+
7
+ module Gloo
8
+ module Verbs
9
+ class Invoke < Gloo::Core::Verb
10
+
11
+ KEYWORD = 'invoke'.freeze
12
+ KEYWORD_SHORT = '~>'.freeze
13
+
14
+ #
15
+ # Run the verb.
16
+ #
17
+ def run
18
+ if @tokens.token_count > 1
19
+ ob = @tokens.first
20
+
21
+ # Get the function object
22
+ pn = Gloo::Core::Pn.new( @engine, @tokens.second )
23
+ func = pn.resolve
24
+
25
+ # Is the object a function?
26
+ if func&.is_function?
27
+ params = get_params_arr
28
+
29
+ @engine.log.debug "invoking function: #{func.pn}"
30
+ result = func.invoke( params )
31
+ @engine.log.debug "function returned: #{result}"
32
+ @engine.heap.it.set_to result
33
+ return result
34
+ end
35
+ end
36
+ end
37
+
38
+ #
39
+ # Get the Verb's keyword.
40
+ #
41
+ def self.keyword
42
+ return KEYWORD
43
+ end
44
+
45
+ #
46
+ # Get the Verb's keyword shortcut.
47
+ #
48
+ def self.keyword_shortcut
49
+ return KEYWORD_SHORT
50
+ end
51
+
52
+ # ---------------------------------------------------------------------
53
+ # Private functions
54
+ # ---------------------------------------------------------------------
55
+
56
+ private
57
+
58
+ #
59
+ # Get params array.
60
+ #
61
+ def get_params_arr
62
+ @engine.log.debug "token params: #{@tokens.params}"
63
+ params = @tokens.params[1..-1]
64
+
65
+ @engine.log.info "params: #{params}"
66
+ evaluated_params = []
67
+
68
+ params.each do |p|
69
+ expr = Gloo::Expr::Expression.new( @engine, [ p ] )
70
+ evaluated_params << expr.evaluate
71
+ end
72
+
73
+ @engine.log.debug "evaluated_params: #{evaluated_params}"
74
+
75
+ return evaluated_params
76
+ end
77
+
78
+ end
79
+ end
80
+ end
@@ -8,9 +8,9 @@ module Gloo
8
8
  module WebSvr
9
9
  class Asset
10
10
 
11
- ASSETS_FOLDER = 'assets'.freeze
12
- IMAGES_FOLDER = 'images'.freeze
13
- STYLESHEETS_FOLDER = 'stylesheets'.freeze
11
+ ASSET_FOLDER = 'asset'.freeze
12
+ IMAGE_FOLDER = 'image'.freeze
13
+ STYLESHEET_FOLDER = 'stylesheet'.freeze
14
14
  JAVASCRIPT_FOLDER = 'javascript'.freeze
15
15
 
16
16
  CSS_TYPE = 'text/css'.freeze
@@ -42,29 +42,29 @@ module Gloo
42
42
  #
43
43
  # Get the asset folder in the project.
44
44
  #
45
- def assets_folder
46
- return File.join( @engine.settings.project_path, ASSETS_FOLDER )
45
+ def asset_folder
46
+ return File.join( @engine.settings.project_path, ASSET_FOLDER )
47
47
  end
48
48
 
49
49
  #
50
50
  # Get the images folder in the project.
51
51
  #
52
- def images_folder
53
- return File.join( assets_folder, IMAGES_FOLDER )
52
+ def image_folder
53
+ return File.join( asset_folder, IMAGE_FOLDER )
54
54
  end
55
55
 
56
56
  #
57
57
  # Get the stylesheets folder in the project.
58
58
  #
59
- def stylesheets_folder
60
- return File.join( assets_folder, STYLESHEETS_FOLDER )
59
+ def stylesheet_folder
60
+ return File.join( asset_folder, STYLESHEET_FOLDER )
61
61
  end
62
62
 
63
63
  #
64
64
  # Get the stylesheets folder in the project.
65
65
  #
66
66
  def javascript_folder
67
- return File.join( assets_folder, JAVASCRIPT_FOLDER )
67
+ return File.join( asset_folder, JAVASCRIPT_FOLDER )
68
68
  end
69
69
 
70
70
  #
@@ -77,7 +77,7 @@ module Gloo
77
77
  return pn if File.exist? pn
78
78
 
79
79
  # Look in the web server's asset folder.
80
- pn = File.join( assets_folder, pn )
80
+ pn = File.join( asset_folder, pn )
81
81
 
82
82
  return pn
83
83
  end
@@ -125,7 +125,7 @@ module Gloo
125
125
  # Add all asssets to the web server pages (routes).
126
126
  #
127
127
  def add_asset_routes
128
- return unless File.exist? assets_folder
128
+ return unless File.exist? asset_folder
129
129
 
130
130
  @log.debug 'Adding asset routes to web server…'
131
131
  @factory = @engine.factory
@@ -142,14 +142,14 @@ module Gloo
142
142
  def add_containers
143
143
  pages = @web_svr_obj.pages_container
144
144
 
145
- @assets = pages.find_child( ASSETS_FOLDER ) ||
146
- @factory.create_can( ASSETS_FOLDER, pages )
145
+ @assets = pages.find_child( ASSET_FOLDER ) ||
146
+ @factory.create_can( ASSET_FOLDER, pages )
147
147
 
148
- @images = @assets.find_child( IMAGES_FOLDER ) ||
149
- @factory.create_can( IMAGES_FOLDER, @assets )
148
+ @images = @assets.find_child( IMAGE_FOLDER ) ||
149
+ @factory.create_can( IMAGE_FOLDER, @assets )
150
150
 
151
- @stylesheets = @assets.find_child( STYLESHEETS_FOLDER ) ||
152
- @factory.create_can( STYLESHEETS_FOLDER, @assets )
151
+ @stylesheets = @assets.find_child( STYLESHEET_FOLDER ) ||
152
+ @factory.create_can( STYLESHEET_FOLDER, @assets )
153
153
 
154
154
  @javascript = @assets.find_child( JAVASCRIPT_FOLDER ) ||
155
155
  @factory.create_can( JAVASCRIPT_FOLDER, @assets )
@@ -161,12 +161,12 @@ module Gloo
161
161
  def add_images
162
162
  @log.debug 'Adding image asset routes to web server…'
163
163
 
164
- return unless File.exist? images_folder
164
+ return unless File.exist? image_folder
165
165
 
166
166
  # for each file in the images folder
167
167
  # create a file object and add it to the images container
168
- Dir.each_child( images_folder ) do |name|
169
- pn = File.join( IMAGES_FOLDER, name )
168
+ Dir.each_child( image_folder ) do |name|
169
+ pn = File.join( IMAGE_FOLDER, name )
170
170
  add_file_obj( @images, name, pn )
171
171
  end
172
172
  end
@@ -177,12 +177,12 @@ module Gloo
177
177
  def add_stylesheets
178
178
  @log.debug 'Adding stylesheet asset routes to web server…'
179
179
 
180
- return unless File.exist? stylesheets_folder
180
+ return unless File.exist? stylesheet_folder
181
181
 
182
182
  # for each file in the stylesheets folder
183
183
  # create a file object and add it to the stylesheets container
184
- Dir.each_child( stylesheets_folder ) do |name|
185
- pn = File.join( STYLESHEETS_FOLDER, name )
184
+ Dir.each_child( stylesheet_folder ) do |name|
185
+ pn = File.join( STYLESHEET_FOLDER, name )
186
186
  add_file_obj( @stylesheets, name, pn )
187
187
  end
188
188
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Crane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-07 00:00:00.000000000 Z
11
+ date: 2024-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -292,6 +292,20 @@ dependencies:
292
292
  - - "~>"
293
293
  - !ruby/object:Gem::Version
294
294
  version: 1.8.2
295
+ - !ruby/object:Gem::Dependency
296
+ name: redcarpet
297
+ requirement: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - "~>"
300
+ - !ruby/object:Gem::Version
301
+ version: 3.6.0
302
+ type: :runtime
303
+ prerelease: false
304
+ version_requirements: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - "~>"
307
+ - !ruby/object:Gem::Version
308
+ version: 3.6.0
295
309
  description: A scripting languge to keep it all together.
296
310
  email:
297
311
  - eric.crane@mac.com
@@ -332,11 +346,18 @@ files:
332
346
  - lib/gloo/app/running_app.rb
333
347
  - lib/gloo/app/settings.rb
334
348
  - lib/gloo/convert/converter.rb
349
+ - lib/gloo/convert/falseclass_to_integer.rb
350
+ - lib/gloo/convert/nilclass_to_date.rb
351
+ - lib/gloo/convert/nilclass_to_datetime.rb
352
+ - lib/gloo/convert/nilclass_to_integer.rb
353
+ - lib/gloo/convert/nilclass_to_string.rb
354
+ - lib/gloo/convert/nilclass_to_time.rb
335
355
  - lib/gloo/convert/string_to_date.rb
336
356
  - lib/gloo/convert/string_to_datetime.rb
337
357
  - lib/gloo/convert/string_to_decimal.rb
338
358
  - lib/gloo/convert/string_to_integer.rb
339
359
  - lib/gloo/convert/string_to_time.rb
360
+ - lib/gloo/convert/trueclass_to_integer.rb
340
361
  - lib/gloo/core/baseo.rb
341
362
  - lib/gloo/core/dictionary.rb
342
363
  - lib/gloo/core/error.rb
@@ -373,7 +394,6 @@ files:
373
394
  - lib/gloo/objs/basic/boolean.rb
374
395
  - lib/gloo/objs/basic/container.rb
375
396
  - lib/gloo/objs/basic/decimal.rb
376
- - lib/gloo/objs/basic/function.rb
377
397
  - lib/gloo/objs/basic/integer.rb
378
398
  - lib/gloo/objs/basic/script.rb
379
399
  - lib/gloo/objs/basic/string.rb
@@ -389,6 +409,7 @@ files:
389
409
  - lib/gloo/objs/cli/prompt.rb
390
410
  - lib/gloo/objs/cli/select.rb
391
411
  - lib/gloo/objs/ctrl/each.rb
412
+ - lib/gloo/objs/ctrl/function.rb
392
413
  - lib/gloo/objs/ctrl/repeat.rb
393
414
  - lib/gloo/objs/data/markdown.rb
394
415
  - lib/gloo/objs/data/mysql.rb
@@ -439,6 +460,7 @@ files:
439
460
  - lib/gloo/verbs/files.rb
440
461
  - lib/gloo/verbs/help.rb
441
462
  - lib/gloo/verbs/if.rb
463
+ - lib/gloo/verbs/invoke.rb
442
464
  - lib/gloo/verbs/list.rb
443
465
  - lib/gloo/verbs/load.rb
444
466
  - lib/gloo/verbs/log.rb
@@ -488,7 +510,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
488
510
  - !ruby/object:Gem::Version
489
511
  version: '0'
490
512
  requirements: []
491
- rubygems_version: 3.5.6
513
+ rubygems_version: 3.2.22
492
514
  signing_key:
493
515
  specification_version: 4
494
516
  summary: Gloo scripting language. A scripting language built on ruby.