gloo-web 1.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 +7 -0
- data/lib/gloo-web.rb +48 -0
- data/lib/objs/element.rb +252 -0
- data/lib/objs/field.rb +428 -0
- data/lib/objs/form.rb +269 -0
- data/lib/objs/page.rb +560 -0
- data/lib/objs/partial.rb +208 -0
- data/lib/objs/svr.rb +711 -0
- data/lib/routing/resource_router.rb +43 -0
- data/lib/routing/router.rb +228 -0
- data/lib/routing/show_routes.rb +90 -0
- data/lib/web_svr/asset.rb +405 -0
- data/lib/web_svr/asset_info.rb +114 -0
- data/lib/web_svr/config.rb +55 -0
- data/lib/web_svr/embedded_renderer.rb +152 -0
- data/lib/web_svr/handler.rb +152 -0
- data/lib/web_svr/request.rb +141 -0
- data/lib/web_svr/request_params.rb +179 -0
- data/lib/web_svr/response.rb +175 -0
- data/lib/web_svr/response_code.rb +67 -0
- data/lib/web_svr/server.rb +102 -0
- data/lib/web_svr/session.rb +213 -0
- data/lib/web_svr/table_renderer.rb +149 -0
- data/lib/web_svr/web_method.rb +52 -0
- metadata +81 -0
data/lib/objs/partial.rb
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
+
# Copyright:: Copyright (c) 2024 Eric Crane. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# A partial page.
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
module Objs
|
|
8
|
+
class Partial < Gloo::Core::Obj
|
|
9
|
+
|
|
10
|
+
KEYWORD = 'partial'.freeze
|
|
11
|
+
KEYWORD_SHORT = 'part'.freeze
|
|
12
|
+
|
|
13
|
+
# Events
|
|
14
|
+
ON_RENDER = 'on_render'.freeze
|
|
15
|
+
AFTER_RENDER = 'after_render'.freeze
|
|
16
|
+
|
|
17
|
+
# Parameters used during render.
|
|
18
|
+
PARAMS = 'params'.freeze
|
|
19
|
+
|
|
20
|
+
# Content
|
|
21
|
+
CONTENT = 'content'.freeze
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# The name of the object type.
|
|
26
|
+
#
|
|
27
|
+
def self.typename
|
|
28
|
+
return KEYWORD
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# The short name of the object type.
|
|
33
|
+
#
|
|
34
|
+
def self.short_typename
|
|
35
|
+
return KEYWORD_SHORT
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
#
|
|
39
|
+
# Set the value with any necessary type conversions.
|
|
40
|
+
#
|
|
41
|
+
def set_value( new_value )
|
|
42
|
+
self.value = new_value.to_s
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# Does this object support multi-line values?
|
|
47
|
+
# Initially only true for scripts.
|
|
48
|
+
#
|
|
49
|
+
def multiline_value?
|
|
50
|
+
return false
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
#
|
|
54
|
+
# Get the content obj.
|
|
55
|
+
#
|
|
56
|
+
def content
|
|
57
|
+
return find_child CONTENT
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#
|
|
61
|
+
# Get the params hash from the child object.
|
|
62
|
+
# Returns nil if there is none.
|
|
63
|
+
#
|
|
64
|
+
def params_hash
|
|
65
|
+
params_can = find_child PARAMS
|
|
66
|
+
return nil unless params_can
|
|
67
|
+
|
|
68
|
+
h = {}
|
|
69
|
+
params_can.children.each do |o|
|
|
70
|
+
h[ o.name ] = o.value
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
return h
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
# ---------------------------------------------------------------------
|
|
78
|
+
# Events
|
|
79
|
+
# ---------------------------------------------------------------------
|
|
80
|
+
|
|
81
|
+
#
|
|
82
|
+
# Run the on render script if there is one.
|
|
83
|
+
#
|
|
84
|
+
def run_on_render
|
|
85
|
+
o = find_child ON_RENDER
|
|
86
|
+
return unless o
|
|
87
|
+
|
|
88
|
+
Gloo::Exec::Dispatch.message( @engine, 'run', o )
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
#
|
|
92
|
+
# Run the on rendered script if there is one.
|
|
93
|
+
#
|
|
94
|
+
def run_after_render
|
|
95
|
+
o = find_child AFTER_RENDER
|
|
96
|
+
return unless o
|
|
97
|
+
|
|
98
|
+
Gloo::Exec::Dispatch.message( @engine, 'run', o )
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# ---------------------------------------------------------------------
|
|
103
|
+
# Children
|
|
104
|
+
# ---------------------------------------------------------------------
|
|
105
|
+
|
|
106
|
+
#
|
|
107
|
+
# Does this object have children to add when an object
|
|
108
|
+
# is created in interactive mode?
|
|
109
|
+
# This does not apply during obj load, etc.
|
|
110
|
+
#
|
|
111
|
+
def add_children_on_create?
|
|
112
|
+
return true
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
#
|
|
116
|
+
# Add children to this object.
|
|
117
|
+
# This is used by containers to add children needed
|
|
118
|
+
# for default configurations.
|
|
119
|
+
#
|
|
120
|
+
def add_default_children
|
|
121
|
+
fac = @engine.factory
|
|
122
|
+
|
|
123
|
+
fac.create_script ON_RENDER, '', self
|
|
124
|
+
fac.create_script AFTER_RENDER, '', self
|
|
125
|
+
|
|
126
|
+
fac.create_can PARAMS, self
|
|
127
|
+
fac.create_can CONTENT, self
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# ---------------------------------------------------------------------
|
|
132
|
+
# Messages
|
|
133
|
+
# ---------------------------------------------------------------------
|
|
134
|
+
|
|
135
|
+
#
|
|
136
|
+
# Get a list of message names that this object receives.
|
|
137
|
+
#
|
|
138
|
+
def self.messages
|
|
139
|
+
return super + [ 'render' ]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
#
|
|
143
|
+
# Get the expiration date for the certificate.
|
|
144
|
+
#
|
|
145
|
+
def msg_render
|
|
146
|
+
part_content = self.render
|
|
147
|
+
@engine.heap.it.set_to part_content
|
|
148
|
+
return part_content
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# ---------------------------------------------------------------------
|
|
153
|
+
# Render
|
|
154
|
+
# ---------------------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
#
|
|
157
|
+
# Render the page.
|
|
158
|
+
# Use the specified render function or HTML by default.
|
|
159
|
+
#
|
|
160
|
+
def render( render_ƒ = :render_html )
|
|
161
|
+
run_on_render
|
|
162
|
+
|
|
163
|
+
part_content = ''
|
|
164
|
+
data = content
|
|
165
|
+
if data.children.empty?
|
|
166
|
+
part_content = data.value
|
|
167
|
+
else
|
|
168
|
+
data.children.each do |e|
|
|
169
|
+
part_content << e.send( render_ƒ )
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# part_content = Page.render_params part_content, params_hash
|
|
174
|
+
part_content = @engine.running_app.obj.embedded_renderer.render part_content, params_hash
|
|
175
|
+
|
|
176
|
+
run_after_render
|
|
177
|
+
return part_content
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
#
|
|
181
|
+
# Render the layout with the body and head params.
|
|
182
|
+
#
|
|
183
|
+
def render_layout( head, body )
|
|
184
|
+
run_on_render
|
|
185
|
+
|
|
186
|
+
part_content = ''
|
|
187
|
+
content.children.each do |e|
|
|
188
|
+
e = Gloo::Objs::Alias.resolve_alias( @engine, e )
|
|
189
|
+
|
|
190
|
+
obj = e.find_child CONTENT
|
|
191
|
+
e = obj if obj
|
|
192
|
+
|
|
193
|
+
part_content << Element.render_obj( e, :render_html, @engine )
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
params = params_hash || {}
|
|
197
|
+
params[ 'head' ] = head
|
|
198
|
+
params[ 'body' ] = body
|
|
199
|
+
|
|
200
|
+
# part_content = Page.render_params part_content, params
|
|
201
|
+
part_content = @engine.running_app.obj.embedded_renderer.render part_content, params
|
|
202
|
+
|
|
203
|
+
run_after_render
|
|
204
|
+
return part_content
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
end
|
|
208
|
+
end
|