gloo 3.2.0 → 3.4.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/.ruby-version +1 -1
- data/gloo.gemspec +9 -3
- data/lib/VERSION +1 -1
- data/lib/VERSION_NOTES +14 -0
- data/lib/gloo/app/engine.rb +1 -1
- data/lib/gloo/app/log.rb +15 -16
- data/lib/gloo/app/platform.rb +11 -84
- data/lib/gloo/app/prompt.rb +90 -0
- data/lib/gloo/app/table.rb +51 -0
- data/lib/gloo/convert/falseclass_to_integer.rb +20 -0
- data/lib/gloo/convert/nilclass_to_date.rb +21 -0
- data/lib/gloo/convert/nilclass_to_datetime.rb +21 -0
- data/lib/gloo/convert/nilclass_to_integer.rb +21 -0
- data/lib/gloo/convert/nilclass_to_string.rb +21 -0
- data/lib/gloo/convert/nilclass_to_time.rb +21 -0
- data/lib/gloo/convert/trueclass_to_integer.rb +20 -0
- data/lib/gloo/core/error.rb +7 -0
- data/lib/gloo/core/gloo_system.rb +7 -14
- data/lib/gloo/core/it.rb +7 -0
- data/lib/gloo/core/obj.rb +7 -0
- data/lib/gloo/core/parser.rb +6 -3
- data/lib/gloo/objs/basic/container.rb +1 -2
- data/lib/gloo/objs/basic/integer.rb +24 -1
- data/lib/gloo/objs/basic/string.rb +116 -1
- data/lib/gloo/objs/basic/string_generator.rb +49 -0
- data/lib/gloo/objs/basic/text.rb +1 -17
- data/lib/gloo/objs/cli/menu.rb +5 -4
- data/lib/gloo/objs/cli/select.rb +3 -2
- data/lib/gloo/objs/{basic → ctrl}/function.rb +12 -0
- data/lib/gloo/objs/data/markdown.rb +59 -6
- data/lib/gloo/objs/data/mysql.rb +39 -27
- data/lib/gloo/objs/data/pg.rb +1 -1
- data/lib/gloo/objs/data/query_result.rb +4 -9
- data/lib/gloo/objs/data/table.rb +1 -1
- data/lib/gloo/objs/security/cipher.rb +193 -0
- data/lib/gloo/objs/security/password.rb +167 -0
- data/lib/gloo/objs/system/file_handle.rb +1 -3
- data/lib/gloo/objs/web/json.rb +3 -0
- data/lib/gloo/objs/web_svr/page.rb +26 -6
- data/lib/gloo/objs/web_svr/partial.rb +7 -6
- data/lib/gloo/objs/web_svr/svr.rb +267 -14
- data/lib/gloo/verbs/invoke.rb +80 -0
- data/lib/gloo/verbs/version.rb +1 -1
- data/lib/gloo/web_svr/asset.rb +54 -33
- data/lib/gloo/web_svr/config.rb +1 -1
- data/lib/gloo/web_svr/embedded_renderer.rb +1 -1
- data/lib/gloo/web_svr/handler.rb +6 -4
- data/lib/gloo/web_svr/request.rb +34 -8
- data/lib/gloo/web_svr/response.rb +14 -2
- data/lib/gloo/web_svr/response_code.rb +1 -1
- data/lib/gloo/web_svr/routing/router.rb +1 -2
- data/lib/gloo/web_svr/routing/show_routes.rb +4 -7
- data/lib/gloo/web_svr/server.rb +1 -1
- data/lib/gloo/web_svr/session.rb +161 -0
- data/lib/gloo/web_svr/table_renderer.rb +1 -1
- metadata +81 -26
- data/lib/gloo/objs/cli/banner.rb +0 -118
- data/lib/gloo/objs/cli/bar.rb +0 -133
- data/lib/gloo/objs/cli/pastel.rb +0 -104
data/lib/gloo/web_svr/request.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c)
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
3
3
|
#
|
4
4
|
# A web Request for a page, action, or static resource.
|
5
5
|
#
|
@@ -9,6 +9,10 @@
|
|
9
9
|
# API - returns JSON instead of HTML (but is that different from Web Page?)
|
10
10
|
# Static Resource - File, PDF, Image, etc.
|
11
11
|
#
|
12
|
+
#
|
13
|
+
# See More doc here:
|
14
|
+
# https://www.rubydoc.info/gems/rack/Rack/Request/Helpers#path-instance_method
|
15
|
+
#
|
12
16
|
|
13
17
|
module Gloo
|
14
18
|
module WebSvr
|
@@ -19,7 +23,8 @@ module Gloo
|
|
19
23
|
HTTP_HOST = 'HTTP_HOST'.freeze
|
20
24
|
QUERY_STRING = 'QUERY_STRING'.freeze
|
21
25
|
|
22
|
-
attr_reader :method, :host, :path, :query, :body
|
26
|
+
attr_reader :method, :host, :path, :query, :body, :ip
|
27
|
+
attr_reader :db, :elapsed
|
23
28
|
attr_accessor :id
|
24
29
|
|
25
30
|
|
@@ -50,11 +55,22 @@ module Gloo
|
|
50
55
|
#
|
51
56
|
def process
|
52
57
|
start_timer
|
58
|
+
|
59
|
+
# Run the on_request script if there is one.
|
60
|
+
@handler.server_obj.set_request_data self
|
61
|
+
@handler.server_obj.run_on_request
|
62
|
+
|
53
63
|
result = @handler.handle self
|
54
64
|
finish_timer
|
65
|
+
|
66
|
+
# Run the on_response script if there is one.
|
67
|
+
@handler.server_obj.set_response_data self, result
|
68
|
+
@handler.server_obj.run_on_response
|
69
|
+
|
55
70
|
return result
|
56
71
|
end
|
57
72
|
|
73
|
+
|
58
74
|
# ---------------------------------------------------------------------
|
59
75
|
# ENV
|
60
76
|
# ---------------------------------------------------------------------
|
@@ -63,10 +79,20 @@ module Gloo
|
|
63
79
|
# Write the request information to the log.
|
64
80
|
#
|
65
81
|
def detect_env
|
66
|
-
|
67
|
-
|
68
|
-
@
|
69
|
-
@
|
82
|
+
req = Rack::Request.new( @env )
|
83
|
+
|
84
|
+
@method = req.request_method
|
85
|
+
@path = req.path
|
86
|
+
@host = req.host_with_port
|
87
|
+
@query = req.query_string
|
88
|
+
@ip = req.ip
|
89
|
+
|
90
|
+
# @method = @env[ REQUEST_METHOD ]
|
91
|
+
# @path = @env[ REQUEST_PATH ]
|
92
|
+
# @host = @env[ HTTP_HOST ]
|
93
|
+
# @query = @env[ QUERY_STRING ]
|
94
|
+
|
95
|
+
@handler.server_obj.session.set_session_data_for_request( @env )
|
70
96
|
|
71
97
|
@body = @env[ 'rack.input' ].read
|
72
98
|
@body = Rack::Utils.parse_query @body
|
@@ -92,8 +118,8 @@ module Gloo
|
|
92
118
|
def finish_timer
|
93
119
|
@finish = Time.now
|
94
120
|
@elapsed = ( ( @finish - @start ) * 1000.0 ).round(2)
|
95
|
-
db = @engine.running_app.db_time
|
96
|
-
@log.info "*** Web request complete. DB: #{db} ms. Elapsed time: #{@elapsed} ms"
|
121
|
+
@db = @engine.running_app.db_time
|
122
|
+
@log.info "*** Web request complete. DB: #{@db} ms. Elapsed time: #{@elapsed} ms"
|
97
123
|
end
|
98
124
|
|
99
125
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c)
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
3
3
|
#
|
4
4
|
# The Response for a web Request.
|
5
5
|
#
|
@@ -88,7 +88,19 @@ module Gloo
|
|
88
88
|
# Get the headers for the response.
|
89
89
|
#
|
90
90
|
def headers
|
91
|
-
|
91
|
+
#
|
92
|
+
# TO DO: Add more cookie headers here.
|
93
|
+
#
|
94
|
+
# https://stackoverflow.com/questions/3295083/how-do-i-set-a-cookie-with-a-ruby-rack-middleware-component
|
95
|
+
# https://www.rubydoc.info/gems/rack/1.4.7/Rack/Session/Cookie
|
96
|
+
#
|
97
|
+
|
98
|
+
headers = { CONTENT_TYPE => @type }
|
99
|
+
|
100
|
+
session = @engine&.running_app&.obj&.session
|
101
|
+
headers = session.add_session_for_response( headers ) if session
|
102
|
+
|
103
|
+
return headers
|
92
104
|
end
|
93
105
|
|
94
106
|
#
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c)
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
3
3
|
#
|
4
4
|
# A helper class for page routing.
|
5
5
|
#
|
6
|
-
require 'tty-table'
|
7
6
|
|
8
7
|
module Gloo
|
9
8
|
module WebSvr
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c)
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
3
3
|
#
|
4
4
|
# A helper class for to show routes for a running app.
|
5
5
|
#
|
6
|
-
require 'tty-table'
|
7
6
|
|
8
7
|
module Gloo
|
9
8
|
module WebSvr
|
@@ -77,11 +76,9 @@ module Gloo
|
|
77
76
|
# Show the Routes title.
|
78
77
|
#
|
79
78
|
def show_table
|
80
|
-
|
81
|
-
|
82
|
-
table
|
83
|
-
renderer = TTY::Table::Renderer::Unicode.new( table, padding: [0,1] )
|
84
|
-
puts renderer.render
|
79
|
+
puts RETURN
|
80
|
+
title = "Routes in Running Web App"
|
81
|
+
@engine.platform.table.show headers, @found_routes, title
|
85
82
|
puts RETURN
|
86
83
|
end
|
87
84
|
|
data/lib/gloo/web_svr/server.rb
CHANGED
@@ -0,0 +1,161 @@
|
|
1
|
+
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
3
|
+
#
|
4
|
+
# Helpers for getting and setting session data.
|
5
|
+
#
|
6
|
+
# Resources:
|
7
|
+
# https://www.rubydoc.info/gems/rack/1.5.5/Rack/Request#cookies-instance_method
|
8
|
+
# https://rubydoc.info/github/rack/rack/Rack/Utils#set_cookie_header-class_method
|
9
|
+
# https://en.wikipedia.org/wiki/HTTP_cookie
|
10
|
+
#
|
11
|
+
require 'base64'
|
12
|
+
|
13
|
+
module Gloo
|
14
|
+
module WebSvr
|
15
|
+
class Session
|
16
|
+
|
17
|
+
SESSION_CONTAINER = 'session'.freeze
|
18
|
+
|
19
|
+
|
20
|
+
# ---------------------------------------------------------------------
|
21
|
+
# Initialization
|
22
|
+
# ---------------------------------------------------------------------
|
23
|
+
|
24
|
+
#
|
25
|
+
# Set up the web server.
|
26
|
+
#
|
27
|
+
def initialize( engine, server_obj )
|
28
|
+
@engine = engine
|
29
|
+
@log = @engine.log
|
30
|
+
|
31
|
+
@server_obj = server_obj
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
# ---------------------------------------------------------------------
|
36
|
+
# Set Session Data for Request
|
37
|
+
# ---------------------------------------------------------------------
|
38
|
+
|
39
|
+
#
|
40
|
+
# Get the session data from the encrypted cookie.
|
41
|
+
# Add it to the session container.
|
42
|
+
#
|
43
|
+
def set_session_data_for_request( env )
|
44
|
+
cookie_hash = Rack::Utils.parse_cookies( env )
|
45
|
+
|
46
|
+
# Are we using sessions?
|
47
|
+
if @server_obj.use_session?
|
48
|
+
data = cookie_hash[ session_name ]
|
49
|
+
|
50
|
+
if data
|
51
|
+
data = decode_decrypt( data )
|
52
|
+
|
53
|
+
data.each do |key, value|
|
54
|
+
@server_obj.set_session_var( key, value )
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
# ---------------------------------------------------------------------
|
63
|
+
# Get Session Data for Response
|
64
|
+
# ---------------------------------------------------------------------
|
65
|
+
|
66
|
+
#
|
67
|
+
# If there is session data, encrypt and add it to the response.
|
68
|
+
# Once done, clear out the session data.
|
69
|
+
#
|
70
|
+
def add_session_for_response( headers )
|
71
|
+
# Are we using sessions?
|
72
|
+
if @server_obj.use_session?
|
73
|
+
# Build and add encrypted session data
|
74
|
+
data = @server_obj.get_session_data
|
75
|
+
unless data.empty?
|
76
|
+
data = encrypt_encode( data )
|
77
|
+
session_hash = {
|
78
|
+
value: data,
|
79
|
+
path: cookie_path,
|
80
|
+
expires: cookie_expires,
|
81
|
+
http_only: true }
|
82
|
+
|
83
|
+
if secure_cookie?
|
84
|
+
session_hash[ :secure ] = true
|
85
|
+
end
|
86
|
+
|
87
|
+
Rack::Utils.set_cookie_header!( headers, session_name, session_hash )
|
88
|
+
end
|
89
|
+
|
90
|
+
# Clear out session data
|
91
|
+
@server_obj.clear_session_data
|
92
|
+
end
|
93
|
+
|
94
|
+
return headers
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
# ---------------------------------------------------------------------
|
99
|
+
# Helper functions
|
100
|
+
# ---------------------------------------------------------------------
|
101
|
+
|
102
|
+
#
|
103
|
+
# Encrypt and encode the session data.
|
104
|
+
#
|
105
|
+
def encrypt_encode( data )
|
106
|
+
return Gloo::Objs::Cipher.encrypt( data.to_json, key, iv )
|
107
|
+
end
|
108
|
+
|
109
|
+
#
|
110
|
+
# Decode and decrypt the session data.
|
111
|
+
#
|
112
|
+
def decode_decrypt( data )
|
113
|
+
data = Gloo::Objs::Cipher.decrypt( data, key, iv )
|
114
|
+
return JSON.parse( data )
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
# Get the session cookie name.
|
119
|
+
#
|
120
|
+
def session_name
|
121
|
+
return @server_obj.session_name
|
122
|
+
end
|
123
|
+
|
124
|
+
#
|
125
|
+
# Get the key for the encryption cipher.
|
126
|
+
#
|
127
|
+
def key
|
128
|
+
return @server_obj.encryption_key
|
129
|
+
end
|
130
|
+
|
131
|
+
#
|
132
|
+
# Get the initialization vector for the cipher.
|
133
|
+
#
|
134
|
+
def iv
|
135
|
+
return @server_obj.encryption_iv
|
136
|
+
end
|
137
|
+
|
138
|
+
#
|
139
|
+
# Get the path for the session cookie.
|
140
|
+
#
|
141
|
+
def cookie_path
|
142
|
+
return @server_obj.session_cookie_path
|
143
|
+
end
|
144
|
+
|
145
|
+
#
|
146
|
+
# Get the expiration time for the session cookie.
|
147
|
+
#
|
148
|
+
def cookie_expires
|
149
|
+
return @server_obj.session_cookie_expires
|
150
|
+
end
|
151
|
+
|
152
|
+
#
|
153
|
+
# Should the session cookie be secure?
|
154
|
+
#
|
155
|
+
def secure_cookie?
|
156
|
+
return @server_obj.session_cookie_secure
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
end
|
161
|
+
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.
|
4
|
+
version: 3.4.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-
|
11
|
+
date: 2024-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -110,40 +110,62 @@ dependencies:
|
|
110
110
|
requirements:
|
111
111
|
- - "~>"
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
113
|
+
version: 1.1.0
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
116
|
+
version: 1.1.0
|
117
117
|
type: :runtime
|
118
118
|
prerelease: false
|
119
119
|
version_requirements: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
123
|
+
version: 1.1.0
|
124
124
|
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
126
|
+
version: 1.1.0
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
|
-
name:
|
128
|
+
name: inquirer
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- - "
|
131
|
+
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0
|
133
|
+
version: '0'
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
134
138
|
- - ">="
|
135
139
|
- !ruby/object:Gem::Version
|
136
|
-
version: 0
|
140
|
+
version: '0'
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: reline
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
137
148
|
type: :runtime
|
138
149
|
prerelease: false
|
139
150
|
version_requirements: !ruby/object:Gem::Requirement
|
140
151
|
requirements:
|
141
|
-
- - "
|
152
|
+
- - ">="
|
142
153
|
- !ruby/object:Gem::Version
|
143
|
-
version: '0
|
154
|
+
version: '0'
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: terminal-table
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
144
159
|
- - ">="
|
145
160
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0
|
161
|
+
version: '0'
|
162
|
+
type: :runtime
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
147
169
|
- !ruby/object:Gem::Dependency
|
148
170
|
name: json
|
149
171
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,22 +190,16 @@ dependencies:
|
|
168
190
|
name: openssl
|
169
191
|
requirement: !ruby/object:Gem::Requirement
|
170
192
|
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '2.1'
|
174
193
|
- - ">="
|
175
194
|
- !ruby/object:Gem::Version
|
176
|
-
version:
|
195
|
+
version: '0'
|
177
196
|
type: :runtime
|
178
197
|
prerelease: false
|
179
198
|
version_requirements: !ruby/object:Gem::Requirement
|
180
199
|
requirements:
|
181
|
-
- - "~>"
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
version: '2.1'
|
184
200
|
- - ">="
|
185
201
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
202
|
+
version: '0'
|
187
203
|
- !ruby/object:Gem::Dependency
|
188
204
|
name: net-ssh
|
189
205
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,6 +308,34 @@ dependencies:
|
|
292
308
|
- - "~>"
|
293
309
|
- !ruby/object:Gem::Version
|
294
310
|
version: 1.8.2
|
311
|
+
- !ruby/object:Gem::Dependency
|
312
|
+
name: redcarpet
|
313
|
+
requirement: !ruby/object:Gem::Requirement
|
314
|
+
requirements:
|
315
|
+
- - "~>"
|
316
|
+
- !ruby/object:Gem::Version
|
317
|
+
version: 3.6.0
|
318
|
+
type: :runtime
|
319
|
+
prerelease: false
|
320
|
+
version_requirements: !ruby/object:Gem::Requirement
|
321
|
+
requirements:
|
322
|
+
- - "~>"
|
323
|
+
- !ruby/object:Gem::Version
|
324
|
+
version: 3.6.0
|
325
|
+
- !ruby/object:Gem::Dependency
|
326
|
+
name: bcrypt
|
327
|
+
requirement: !ruby/object:Gem::Requirement
|
328
|
+
requirements:
|
329
|
+
- - "~>"
|
330
|
+
- !ruby/object:Gem::Version
|
331
|
+
version: 3.1.20
|
332
|
+
type: :runtime
|
333
|
+
prerelease: false
|
334
|
+
version_requirements: !ruby/object:Gem::Requirement
|
335
|
+
requirements:
|
336
|
+
- - "~>"
|
337
|
+
- !ruby/object:Gem::Version
|
338
|
+
version: 3.1.20
|
295
339
|
description: A scripting languge to keep it all together.
|
296
340
|
email:
|
297
341
|
- eric.crane@mac.com
|
@@ -329,14 +373,23 @@ files:
|
|
329
373
|
- lib/gloo/app/log.rb
|
330
374
|
- lib/gloo/app/mode.rb
|
331
375
|
- lib/gloo/app/platform.rb
|
376
|
+
- lib/gloo/app/prompt.rb
|
332
377
|
- lib/gloo/app/running_app.rb
|
333
378
|
- lib/gloo/app/settings.rb
|
379
|
+
- lib/gloo/app/table.rb
|
334
380
|
- lib/gloo/convert/converter.rb
|
381
|
+
- lib/gloo/convert/falseclass_to_integer.rb
|
382
|
+
- lib/gloo/convert/nilclass_to_date.rb
|
383
|
+
- lib/gloo/convert/nilclass_to_datetime.rb
|
384
|
+
- lib/gloo/convert/nilclass_to_integer.rb
|
385
|
+
- lib/gloo/convert/nilclass_to_string.rb
|
386
|
+
- lib/gloo/convert/nilclass_to_time.rb
|
335
387
|
- lib/gloo/convert/string_to_date.rb
|
336
388
|
- lib/gloo/convert/string_to_datetime.rb
|
337
389
|
- lib/gloo/convert/string_to_decimal.rb
|
338
390
|
- lib/gloo/convert/string_to_integer.rb
|
339
391
|
- lib/gloo/convert/string_to_time.rb
|
392
|
+
- lib/gloo/convert/trueclass_to_integer.rb
|
340
393
|
- lib/gloo/core/baseo.rb
|
341
394
|
- lib/gloo/core/dictionary.rb
|
342
395
|
- lib/gloo/core/error.rb
|
@@ -373,22 +426,20 @@ files:
|
|
373
426
|
- lib/gloo/objs/basic/boolean.rb
|
374
427
|
- lib/gloo/objs/basic/container.rb
|
375
428
|
- lib/gloo/objs/basic/decimal.rb
|
376
|
-
- lib/gloo/objs/basic/function.rb
|
377
429
|
- lib/gloo/objs/basic/integer.rb
|
378
430
|
- lib/gloo/objs/basic/script.rb
|
379
431
|
- lib/gloo/objs/basic/string.rb
|
432
|
+
- lib/gloo/objs/basic/string_generator.rb
|
380
433
|
- lib/gloo/objs/basic/text.rb
|
381
434
|
- lib/gloo/objs/basic/untyped.rb
|
382
|
-
- lib/gloo/objs/cli/banner.rb
|
383
|
-
- lib/gloo/objs/cli/bar.rb
|
384
435
|
- lib/gloo/objs/cli/colorize.rb
|
385
436
|
- lib/gloo/objs/cli/confirm.rb
|
386
437
|
- lib/gloo/objs/cli/menu.rb
|
387
438
|
- lib/gloo/objs/cli/menu_item.rb
|
388
|
-
- lib/gloo/objs/cli/pastel.rb
|
389
439
|
- lib/gloo/objs/cli/prompt.rb
|
390
440
|
- lib/gloo/objs/cli/select.rb
|
391
441
|
- lib/gloo/objs/ctrl/each.rb
|
442
|
+
- lib/gloo/objs/ctrl/function.rb
|
392
443
|
- lib/gloo/objs/ctrl/repeat.rb
|
393
444
|
- lib/gloo/objs/data/markdown.rb
|
394
445
|
- lib/gloo/objs/data/mysql.rb
|
@@ -405,6 +456,8 @@ files:
|
|
405
456
|
- lib/gloo/objs/dt/time.rb
|
406
457
|
- lib/gloo/objs/ror/erb.rb
|
407
458
|
- lib/gloo/objs/ror/eval.rb
|
459
|
+
- lib/gloo/objs/security/cipher.rb
|
460
|
+
- lib/gloo/objs/security/password.rb
|
408
461
|
- lib/gloo/objs/snd/play.rb
|
409
462
|
- lib/gloo/objs/snd/say.rb
|
410
463
|
- lib/gloo/objs/system/file_handle.rb
|
@@ -439,6 +492,7 @@ files:
|
|
439
492
|
- lib/gloo/verbs/files.rb
|
440
493
|
- lib/gloo/verbs/help.rb
|
441
494
|
- lib/gloo/verbs/if.rb
|
495
|
+
- lib/gloo/verbs/invoke.rb
|
442
496
|
- lib/gloo/verbs/list.rb
|
443
497
|
- lib/gloo/verbs/load.rb
|
444
498
|
- lib/gloo/verbs/log.rb
|
@@ -466,6 +520,7 @@ files:
|
|
466
520
|
- lib/gloo/web_svr/routing/router.rb
|
467
521
|
- lib/gloo/web_svr/routing/show_routes.rb
|
468
522
|
- lib/gloo/web_svr/server.rb
|
523
|
+
- lib/gloo/web_svr/session.rb
|
469
524
|
- lib/gloo/web_svr/table_renderer.rb
|
470
525
|
- lib/gloo/web_svr/web_method.rb
|
471
526
|
- lib/run.rb
|
@@ -488,7 +543,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
488
543
|
- !ruby/object:Gem::Version
|
489
544
|
version: '0'
|
490
545
|
requirements: []
|
491
|
-
rubygems_version: 3.
|
546
|
+
rubygems_version: 3.4.19
|
492
547
|
signing_key:
|
493
548
|
specification_version: 4
|
494
549
|
summary: Gloo scripting language. A scripting language built on ruby.
|
data/lib/gloo/objs/cli/banner.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
3
|
-
#
|
4
|
-
# Show a large-text banner.
|
5
|
-
#
|
6
|
-
require 'tty-font'
|
7
|
-
require 'pastel'
|
8
|
-
|
9
|
-
module Gloo
|
10
|
-
module Objs
|
11
|
-
class Banner < Gloo::Core::Obj
|
12
|
-
|
13
|
-
KEYWORD = 'banner'.freeze
|
14
|
-
KEYWORD_SHORT = 'ban'.freeze
|
15
|
-
TEXT = 'text'.freeze
|
16
|
-
STYLE = 'style'.freeze
|
17
|
-
COLOR = 'color'.freeze
|
18
|
-
|
19
|
-
#
|
20
|
-
# The name of the object type.
|
21
|
-
#
|
22
|
-
def self.typename
|
23
|
-
return KEYWORD
|
24
|
-
end
|
25
|
-
|
26
|
-
#
|
27
|
-
# The short name of the object type.
|
28
|
-
#
|
29
|
-
def self.short_typename
|
30
|
-
return KEYWORD_SHORT
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
# Get the banner text from the child object.
|
35
|
-
#
|
36
|
-
def text_value
|
37
|
-
o = find_child TEXT
|
38
|
-
return '' unless o
|
39
|
-
|
40
|
-
return o.value
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# Get the banner style from the child object.
|
45
|
-
#
|
46
|
-
def style_value
|
47
|
-
o = find_child STYLE
|
48
|
-
return '' unless o
|
49
|
-
|
50
|
-
return o.value
|
51
|
-
end
|
52
|
-
|
53
|
-
#
|
54
|
-
# Get the banner color from the child object.
|
55
|
-
#
|
56
|
-
def color_value
|
57
|
-
o = find_child COLOR
|
58
|
-
return '' unless o
|
59
|
-
|
60
|
-
return o.value
|
61
|
-
end
|
62
|
-
|
63
|
-
# ---------------------------------------------------------------------
|
64
|
-
# Children
|
65
|
-
# ---------------------------------------------------------------------
|
66
|
-
|
67
|
-
# Does this object have children to add when an object
|
68
|
-
# is created in interactive mode?
|
69
|
-
# This does not apply during obj load, etc.
|
70
|
-
def add_children_on_create?
|
71
|
-
return true
|
72
|
-
end
|
73
|
-
|
74
|
-
# Add children to this object.
|
75
|
-
# This is used by containers to add children needed
|
76
|
-
# for default configurations.
|
77
|
-
def add_default_children
|
78
|
-
fac = @engine.factory
|
79
|
-
fac.create_string TEXT, '', self
|
80
|
-
fac.create_string STYLE, '', self
|
81
|
-
fac.create_string COLOR, '', self
|
82
|
-
end
|
83
|
-
|
84
|
-
# ---------------------------------------------------------------------
|
85
|
-
# Messages
|
86
|
-
# ---------------------------------------------------------------------
|
87
|
-
|
88
|
-
#
|
89
|
-
# Get a list of message names that this object receives.
|
90
|
-
#
|
91
|
-
def self.messages
|
92
|
-
return super + %w[show]
|
93
|
-
end
|
94
|
-
|
95
|
-
#
|
96
|
-
# Show the banner bar
|
97
|
-
#
|
98
|
-
def msg_show
|
99
|
-
Banner.show_banner( self.text_value, self.style_value, self.color_value )
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# Show the banner bar.
|
104
|
-
# text - the text of the banner
|
105
|
-
# style - the style of the banner
|
106
|
-
# color - the color of the banner
|
107
|
-
#
|
108
|
-
def self.show_banner( text, style, color )
|
109
|
-
font = TTY::Font.new style
|
110
|
-
t = font.write( text )
|
111
|
-
pastel = ::Pastel.new
|
112
|
-
c = color.split( ' ' ).map( &:to_sym )
|
113
|
-
puts pastel.decorate( t, *c )
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|