wabur 0.5.0 → 0.6.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/bin/wabur +42 -17
- data/export/assets/css/wab.css +365 -1
- data/export/assets/css/wab.css.map +1 -1
- data/lib/wab/controller.rb +14 -10
- data/lib/wab/impl.rb +13 -0
- data/lib/wab/impl/bool_expr.rb +3 -0
- data/lib/wab/impl/configuration.rb +59 -43
- data/lib/wab/impl/data.rb +4 -4
- data/lib/wab/impl/exprs/and.rb +6 -5
- data/lib/wab/impl/exprs/between.rb +2 -2
- data/lib/wab/impl/exprs/eq.rb +2 -2
- data/lib/wab/impl/exprs/gt.rb +2 -2
- data/lib/wab/impl/exprs/gte.rb +2 -2
- data/lib/wab/impl/exprs/has.rb +2 -2
- data/lib/wab/impl/exprs/in.rb +2 -2
- data/lib/wab/impl/exprs/lt.rb +2 -2
- data/lib/wab/impl/exprs/lte.rb +2 -2
- data/lib/wab/impl/exprs/or.rb +6 -5
- data/lib/wab/impl/exprs/regex.rb +2 -2
- data/lib/wab/impl/handler.rb +10 -7
- data/lib/wab/impl/init.rb +135 -73
- data/lib/wab/impl/path_expr.rb +3 -0
- data/lib/wab/impl/shell.rb +10 -3
- data/lib/wab/impl/templates/wabur.conf.template +1 -2
- data/lib/wab/io/engine.rb +2 -2
- data/lib/wab/io/shell.rb +9 -3
- data/lib/wab/ui/flow.rb +3 -2
- data/lib/wab/version.rb +1 -1
- data/test/bench_io_shell.rb +2 -2
- data/test/test_io_shell.rb +2 -2
- data/test/tmp/lib/spawn.rb +44 -0
- data/test/tmp/lib/ui_controller.rb +20 -0
- metadata +6 -2
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"mappings": "AAAA,4EAA4E
|
3
|
+
"mappings": "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",
|
4
4
|
"sources": ["../../../view/ui/styles/normalize.scss","../../../view/ui/styles/wab.scss","../../../view/ui/styles/sidebar.scss","../../../view/ui/styles/variables.scss","../../../view/ui/styles/header.scss","../../../view/ui/styles/footer.scss","../../../view/ui/styles/tables.scss","../../../view/ui/styles/forms.scss","../../../view/ui/styles/buttons.scss"],
|
5
5
|
"names": [],
|
6
6
|
"file": "wab.css"
|
data/lib/wab/controller.rb
CHANGED
@@ -46,7 +46,7 @@ module WAB
|
|
46
46
|
# data:: the data to use as a new object.
|
47
47
|
def create(path, query, data) # :doc:
|
48
48
|
tql = { }
|
49
|
-
kind = path[
|
49
|
+
kind = path[path_pos]
|
50
50
|
if WAB::Utils.populated_hash?(query)
|
51
51
|
tql[:where] = and_where(kind, query)
|
52
52
|
end
|
@@ -70,11 +70,11 @@ module WAB
|
|
70
70
|
# pairs. Note that duplicate keys will result in only the last
|
71
71
|
# option being present,
|
72
72
|
def read(path, query) # :doc:
|
73
|
-
kind = path[
|
73
|
+
kind = path[path_pos]
|
74
74
|
# Check for the type and object reference pattern as well as the list
|
75
75
|
# pattern.
|
76
|
-
if
|
77
|
-
ref = path[
|
76
|
+
if path_pos + 2 == path.length
|
77
|
+
ref = path[path_pos + 1]
|
78
78
|
return list_select(kind, query) if 'list' == ref
|
79
79
|
|
80
80
|
# Read a single object/record.
|
@@ -100,9 +100,9 @@ module WAB
|
|
100
100
|
# data:: the data to use as a new object.
|
101
101
|
def update(path, query, data) # :doc:
|
102
102
|
tql = { }
|
103
|
-
kind = path[
|
104
|
-
if
|
105
|
-
tql[:where] = path[
|
103
|
+
kind = path[path_pos]
|
104
|
+
if path_pos + 2 == path.length # has an object reference in the path
|
105
|
+
tql[:where] = path[path_pos + 1].to_i
|
106
106
|
elsif WAB::Utils.populated_hash?(query)
|
107
107
|
tql[:where] = and_where(kind, query)
|
108
108
|
else
|
@@ -128,9 +128,9 @@ module WAB
|
|
128
128
|
# the target or a +.+ delimited set of keys.
|
129
129
|
def delete(path, query) # :doc:
|
130
130
|
tql = { }
|
131
|
-
kind = path[
|
132
|
-
tql[:where] = if
|
133
|
-
path[
|
131
|
+
kind = path[path_pos]
|
132
|
+
tql[:where] = if path_pos + 2 == path.length # has an object reference in the path
|
133
|
+
path[path_pos + 1].to_i
|
134
134
|
elsif WAB::Utils.populated_hash?(query)
|
135
135
|
and_where(kind, query)
|
136
136
|
else
|
@@ -160,6 +160,10 @@ module WAB
|
|
160
160
|
@shell.changed(data)
|
161
161
|
end
|
162
162
|
|
163
|
+
def path_pos
|
164
|
+
@path_pos ||= @shell.path_pos
|
165
|
+
end
|
166
|
+
|
163
167
|
# A private method to gather sets of Hashes that include the fields
|
164
168
|
# specified in the fields Hash.
|
165
169
|
def list_select(kind, fields)
|
data/lib/wab/impl.rb
CHANGED
@@ -4,6 +4,19 @@ require 'wab'
|
|
4
4
|
module WAB
|
5
5
|
# Web Application Builder implementation of the WAB APIs.
|
6
6
|
module Impl
|
7
|
+
|
8
|
+
# For an error message string.
|
9
|
+
def self.format_error(msg, error_class="Error", backtrace=[])
|
10
|
+
if msg.is_a?(Exception)
|
11
|
+
error_class = msg.class
|
12
|
+
backtrace = msg.backtrace
|
13
|
+
msg = msg.message
|
14
|
+
end
|
15
|
+
if !backtrace.empty?
|
16
|
+
backtrace.unshift('')
|
17
|
+
end
|
18
|
+
%|*-*-* #{error_class}: #{msg}#{backtrace.join("\n ")}|
|
19
|
+
end
|
7
20
|
end
|
8
21
|
end
|
9
22
|
|
data/lib/wab/impl/bool_expr.rb
CHANGED
@@ -13,28 +13,22 @@ module WAB
|
|
13
13
|
|
14
14
|
def initialize(usage, options)
|
15
15
|
@map = {}
|
16
|
-
opts = OptionParser.new(usage)
|
16
|
+
@opts = OptionParser.new(usage)
|
17
17
|
config_file = nil
|
18
|
-
|
18
|
+
log_increase = 0
|
19
19
|
|
20
|
-
opts.on('-c', '--config PATH', String, 'Configuration file.') { |c| config_file = c }
|
21
|
-
opts.on('-r', '--require LIBRARY', String, 'Require.') { |r| require r }
|
22
|
-
opts.on('-v', '--verbose', 'Increase verbosity.') {
|
23
|
-
opts.on('-h', '--help', 'Show this display.') { puts opts.help; Process.exit!(0) }
|
20
|
+
@opts.on('-c', '--config PATH', String, 'Configuration file.') { |c| config_file = c }
|
21
|
+
@opts.on('-r', '--require LIBRARY', String, 'Require.') { |r| require r }
|
22
|
+
@opts.on('-v', '--verbose', 'Increase verbosity.') { log_increase += 1 }
|
23
|
+
@opts.on('-h', '--help', 'Show this display.') { puts opts.help; Process.exit!(0) }
|
24
24
|
|
25
25
|
# Process command-line arguments and append them, in order, to an empty hash @map
|
26
|
-
add_options(opts, options)
|
26
|
+
add_options(@opts, options)
|
27
27
|
|
28
|
-
modes = opts.parse(ARGV)
|
28
|
+
modes = @opts.parse(ARGV)
|
29
29
|
@map[:mode] = 0 < modes.length ? modes[0] : 'run'
|
30
30
|
@map[:rest] = modes[1..-1] if 1 < modes.length
|
31
31
|
|
32
|
-
unless ['run', 'new', 'init'].include?(@map[:mode])
|
33
|
-
puts "\n*-*-* #{@map[:mode]} is not a valid mode"
|
34
|
-
puts opts.help
|
35
|
-
Process.exit!(-1)
|
36
|
-
end
|
37
|
-
|
38
32
|
# Move the @map sideways and replace with defaults.
|
39
33
|
command_line_map = @map
|
40
34
|
@map = {}
|
@@ -47,6 +41,12 @@ module WAB
|
|
47
41
|
|
48
42
|
# Merge in the command line map.
|
49
43
|
@map = merge_map(@map, command_line_map) unless command_line_map.empty?
|
44
|
+
# Apply the log_increase.
|
45
|
+
log_level_adjust(log_increase)
|
46
|
+
end
|
47
|
+
|
48
|
+
def usage
|
49
|
+
puts @opts.help
|
50
50
|
end
|
51
51
|
|
52
52
|
# Walks the options map and calls +opts.on+ for each option so that all
|
@@ -66,9 +66,11 @@ module WAB
|
|
66
66
|
opts.on(switch, String, v[:doc]) { |val| arg_append(key_path, val, v[:parse]) }
|
67
67
|
end
|
68
68
|
elsif v.has_key?(:short)
|
69
|
-
|
69
|
+
# If val is nil then the option was a flag so set to true
|
70
|
+
opts.on(v[:short], switch, v[:type], doc_with_default) { |val| set(key_path, val || true) }
|
70
71
|
else
|
71
|
-
|
72
|
+
# If val is nil then the option was a flag so set to true
|
73
|
+
opts.on(switch, v[:type], doc_with_default) { |val| set(key_path, val || true) }
|
72
74
|
end
|
73
75
|
else
|
74
76
|
add_options(opts, v, key_path)
|
@@ -91,33 +93,6 @@ module WAB
|
|
91
93
|
a.push(val)
|
92
94
|
end
|
93
95
|
|
94
|
-
# Builds a map from the default options passed in.
|
95
|
-
def build_default_map(options, path='')
|
96
|
-
options.each_pair { |k,v|
|
97
|
-
next unless v.is_a?(Hash)
|
98
|
-
key_path = path.empty? ? k.to_s : "#{path}.#{k}"
|
99
|
-
if v.has_key?(:val)
|
100
|
-
set(key_path, v[:val])
|
101
|
-
else
|
102
|
-
build_default_map(v, key_path)
|
103
|
-
end
|
104
|
-
}
|
105
|
-
end
|
106
|
-
|
107
|
-
# Recursive merge of other into prime.
|
108
|
-
def merge_map(prime, other)
|
109
|
-
prime.merge(other) { |key,prime_value,other_value|
|
110
|
-
case prime_value
|
111
|
-
when Hash
|
112
|
-
merge_map(prime_value, other_value)
|
113
|
-
when Array
|
114
|
-
prime_value + other_value
|
115
|
-
else
|
116
|
-
other_value
|
117
|
-
end
|
118
|
-
}
|
119
|
-
end
|
120
|
-
|
121
96
|
# Returns a Hash of configuration data.
|
122
97
|
#
|
123
98
|
# TBD: Add validation to ensure only a Hash object is returned
|
@@ -179,6 +154,47 @@ Bundler or directly, and try loading again.
|
|
179
154
|
end
|
180
155
|
alias [] get
|
181
156
|
|
157
|
+
private
|
158
|
+
|
159
|
+
# Builds a map from the default options passed in.
|
160
|
+
def build_default_map(options, path='')
|
161
|
+
options.each_pair { |k,v|
|
162
|
+
next unless v.is_a?(Hash)
|
163
|
+
key_path = path.empty? ? k.to_s : "#{path}.#{k}"
|
164
|
+
if v.has_key?(:val)
|
165
|
+
set(key_path, v[:val])
|
166
|
+
else
|
167
|
+
build_default_map(v, key_path)
|
168
|
+
end
|
169
|
+
}
|
170
|
+
end
|
171
|
+
|
172
|
+
# Recursive merge of other into prime.
|
173
|
+
def merge_map(prime, other)
|
174
|
+
prime.merge(other) { |key,prime_value,other_value|
|
175
|
+
case prime_value
|
176
|
+
when Hash
|
177
|
+
merge_map(prime_value, other_value)
|
178
|
+
when Array
|
179
|
+
prime_value + other_value
|
180
|
+
else
|
181
|
+
other_value
|
182
|
+
end
|
183
|
+
}
|
184
|
+
end
|
185
|
+
|
186
|
+
def log_level_adjust(log_increase)
|
187
|
+
return if log_increase.zero?
|
188
|
+
|
189
|
+
verbosity = @map[:verbosity] || 'INFO'
|
190
|
+
@map[:verbosity] = {
|
191
|
+
'ERROR' => Logger::ERROR,
|
192
|
+
'WARN' => Logger::WARN,
|
193
|
+
'INFO' => Logger::INFO,
|
194
|
+
'DEBUG' => Logger::DEBUG,
|
195
|
+
}[verbosity].to_i - log_increase
|
196
|
+
end
|
197
|
+
|
182
198
|
end # Configuration
|
183
199
|
end # Impl
|
184
200
|
end # WAB
|
data/lib/wab/impl/data.rb
CHANGED
@@ -6,7 +6,7 @@ require 'oj'
|
|
6
6
|
module WAB
|
7
7
|
module Impl
|
8
8
|
|
9
|
-
# The class representing the
|
9
|
+
# The class representing the canonical data structure in WAB. Typically
|
10
10
|
# the Data instances are factory created by the Shell and will most likely
|
11
11
|
# not be instance of this class but rather a class that is a duck-type of
|
12
12
|
# this class (has the same methods and behavior).
|
@@ -43,7 +43,7 @@ module WAB
|
|
43
43
|
#
|
44
44
|
# value:: initial value
|
45
45
|
# repair:: flag indicating invalid value should be repaired if possible
|
46
|
-
def initialize(value, repair, check=true)
|
46
|
+
def initialize(value, repair=false, check=true)
|
47
47
|
if repair
|
48
48
|
value = fix(value)
|
49
49
|
elsif check
|
@@ -137,7 +137,7 @@ module WAB
|
|
137
137
|
# Make a deep copy of the Data instance.
|
138
138
|
def deep_dup()
|
139
139
|
# avoid validation by using a empty Hash for the intial value.
|
140
|
-
c =
|
140
|
+
c = Data.new({})
|
141
141
|
c.instance_variable_set(:@root, deep_dup_value(@root))
|
142
142
|
c
|
143
143
|
end
|
@@ -315,7 +315,7 @@ module WAB
|
|
315
315
|
when Array
|
316
316
|
detect_array(item)
|
317
317
|
when String
|
318
|
-
element =
|
318
|
+
element = Data.detect_string(item)
|
319
319
|
collection[key] = element unless element == item
|
320
320
|
end
|
321
321
|
end
|
data/lib/wab/impl/exprs/and.rb
CHANGED
@@ -9,19 +9,20 @@ module WAB
|
|
9
9
|
# instances of subclasses of the Expr class.
|
10
10
|
#
|
11
11
|
# args:: argument to the AND expression
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
#
|
13
|
+
# def initialize(*args)
|
14
|
+
# super
|
15
|
+
# end
|
15
16
|
|
16
17
|
def eval(data)
|
17
|
-
|
18
|
+
args.each { |a|
|
18
19
|
return false unless a.eval(data)
|
19
20
|
}
|
20
21
|
true
|
21
22
|
end
|
22
23
|
|
23
24
|
def native()
|
24
|
-
|
25
|
+
args.map(&:native).unshift('AND')
|
25
26
|
end
|
26
27
|
|
27
28
|
end # And
|
@@ -26,14 +26,14 @@ module WAB
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def eval(data)
|
29
|
-
value = data.get(
|
29
|
+
value = data.get(path)
|
30
30
|
return false if (@min_incl ? value < @min : value <= @min)
|
31
31
|
return false if (@max_incl ? @max < value : @max <= value)
|
32
32
|
true
|
33
33
|
end
|
34
34
|
|
35
35
|
def native()
|
36
|
-
['BETWEEN',
|
36
|
+
['BETWEEN', path, @min, @max, @min_incl, @max_incl]
|
37
37
|
end
|
38
38
|
|
39
39
|
end # Between
|
data/lib/wab/impl/exprs/eq.rb
CHANGED
data/lib/wab/impl/exprs/gt.rb
CHANGED
data/lib/wab/impl/exprs/gte.rb
CHANGED
data/lib/wab/impl/exprs/has.rb
CHANGED
data/lib/wab/impl/exprs/in.rb
CHANGED
data/lib/wab/impl/exprs/lt.rb
CHANGED
data/lib/wab/impl/exprs/lte.rb
CHANGED
data/lib/wab/impl/exprs/or.rb
CHANGED
@@ -9,19 +9,20 @@ module WAB
|
|
9
9
|
# instances of subclasses of the Expr class.
|
10
10
|
#
|
11
11
|
# args:: argument to the OR expression
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
#
|
13
|
+
# def initialize(*args)
|
14
|
+
# super
|
15
|
+
# end
|
15
16
|
|
16
17
|
def eval(data)
|
17
|
-
|
18
|
+
args.each { |a|
|
18
19
|
return true if a.eval(data)
|
19
20
|
}
|
20
21
|
false
|
21
22
|
end
|
22
23
|
|
23
24
|
def native()
|
24
|
-
|
25
|
+
args.map(&:native).unshift('OR')
|
25
26
|
end
|
26
27
|
|
27
28
|
end # Or
|