wassup 0.1.0 → 0.2.1
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/.github/FUNDING.yml +3 -0
- data/.gitignore +4 -0
- data/README.md +45 -5
- data/bin/wassup +8 -1
- data/docs/.gitignore +20 -0
- data/docs/README.md +41 -0
- data/docs/babel.config.js +3 -0
- data/docs/blog/2021-12-09-welcome/index.md +8 -0
- data/docs/blog/authors.yml +5 -0
- data/docs/docs/Supfile-basics/_category_.json +4 -0
- data/docs/docs/Supfile-basics/understanding-the-supfile.md +50 -0
- data/docs/docs/intro.md +54 -0
- data/docs/docusaurus.config.js +110 -0
- data/docs/package-lock.json +21196 -0
- data/docs/package.json +43 -0
- data/docs/sidebars.js +31 -0
- data/docs/src/components/HomepageFeatures.module.css +10 -0
- data/docs/src/components/HomepageFeatures.tsx +60 -0
- data/docs/src/css/custom.css +28 -0
- data/docs/src/pages/index.module.css +36 -0
- data/docs/src/pages/index.tsx +39 -0
- data/docs/src/pages/markdown-page.md +7 -0
- data/docs/static/.nojekyll +0 -0
- data/docs/static/img/demo-supfile.png +0 -0
- data/docs/static/img/favicon.ico +0 -0
- data/docs/static/img/logo.svg +27 -0
- data/docs/static/img/tutorial/docsVersionDropdown.png +0 -0
- data/docs/static/img/tutorial/localeDropdown.png +0 -0
- data/docs/static/img/tutorial-intro-starter-screenshot.png +0 -0
- data/docs/static/img/undraw_docusaurus_mountain.svg +170 -0
- data/docs/static/img/undraw_docusaurus_react.svg +169 -0
- data/docs/static/img/undraw_docusaurus_tree.svg +1 -0
- data/docs/static/img/wassup-long.png +0 -0
- data/docs/static/img/wassup-screenshot.png +0 -0
- data/docs/static/img/wassup.png +0 -0
- data/docs/static/video/wassup-demo.mov +0 -0
- data/docs/tsconfig.json +7 -0
- data/examples/basic/Supfile +28 -0
- data/examples/debug/Supfile +116 -0
- data/examples/josh-fastlane/README.md +14 -0
- data/examples/josh-fastlane/Supfile +59 -35
- data/examples/josh-fastlane/demo.png +0 -0
- data/examples/starter/Supfile +44 -0
- data/lib/wassup/app.rb +82 -9
- data/lib/wassup/color.rb +76 -0
- data/lib/wassup/pane.rb +255 -82
- data/lib/wassup/pane_builder.rb +74 -3
- data/lib/wassup/version.rb +1 -1
- data/lib/wassup.rb +1 -0
- metadata +42 -2
data/lib/wassup/pane.rb
CHANGED
@@ -6,11 +6,12 @@ module Wassup
|
|
6
6
|
class Pane
|
7
7
|
attr_accessor :win
|
8
8
|
attr_accessor :subwin
|
9
|
-
attr_accessor :data_lines
|
10
|
-
attr_accessor :data_objects
|
11
9
|
attr_accessor :top
|
12
10
|
|
11
|
+
attr_accessor :contents
|
12
|
+
|
13
13
|
attr_accessor :title
|
14
|
+
attr_accessor :description
|
14
15
|
|
15
16
|
attr_accessor :focused
|
16
17
|
attr_accessor :focus_number
|
@@ -27,14 +28,41 @@ module Wassup
|
|
27
28
|
attr_accessor :interval
|
28
29
|
attr_accessor :last_refreshed
|
29
30
|
attr_accessor :content_block
|
30
|
-
attr_accessor :
|
31
|
+
attr_accessor :selection_blocks
|
32
|
+
attr_accessor :selection_blocks_description
|
33
|
+
|
34
|
+
attr_accessor :content_thread
|
35
|
+
attr_accessor :show_refresh
|
31
36
|
|
32
37
|
attr_accessor :selected_view_index
|
33
|
-
attr_accessor :all_view_data_objects
|
34
38
|
|
35
39
|
attr_accessor :win_height, :win_width, :win_top, :win_left
|
36
40
|
|
37
|
-
|
41
|
+
class Content
|
42
|
+
class Row
|
43
|
+
attr_accessor :display
|
44
|
+
attr_accessor :object
|
45
|
+
|
46
|
+
def initialize(display, object)
|
47
|
+
@display = display
|
48
|
+
@object = object || display
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
attr_accessor :title
|
53
|
+
attr_accessor :data
|
54
|
+
|
55
|
+
def initialize(title = nil)
|
56
|
+
@title = title
|
57
|
+
@data = []
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_row(display, object = nil)
|
61
|
+
@data << Row.new(display, object)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialize(height, width, top, left, title: nil, description: nil, highlight: true, focus_number: nil, interval:, show_refresh:, content_block:, selection_blocks:, selection_blocks_description:)
|
38
66
|
self.win_height = Curses.lines * height
|
39
67
|
self.win_width = Curses.cols * width
|
40
68
|
self.win_top = Curses.lines * top
|
@@ -50,20 +78,22 @@ module Wassup
|
|
50
78
|
self.virtual_scroll = true
|
51
79
|
|
52
80
|
self.top = 0
|
53
|
-
|
54
|
-
|
81
|
+
|
82
|
+
self.contents = []
|
83
|
+
self.show_refresh = show_refresh
|
55
84
|
|
56
85
|
self.selected_view_index = 0
|
57
|
-
self.all_view_data_objects = [] # Array of array
|
58
86
|
|
59
87
|
self.win.refresh
|
60
88
|
self.subwin.refresh
|
61
89
|
|
62
90
|
self.title = title
|
91
|
+
self.description = description
|
63
92
|
|
64
93
|
self.interval = interval
|
65
94
|
self.content_block = content_block
|
66
|
-
self.
|
95
|
+
self.selection_blocks = selection_blocks || {}
|
96
|
+
self.selection_blocks_description = selection_blocks_description || {}
|
67
97
|
end
|
68
98
|
|
69
99
|
def setup_subwin
|
@@ -75,16 +105,16 @@ module Wassup
|
|
75
105
|
self.subwin = nil
|
76
106
|
end
|
77
107
|
|
78
|
-
if (
|
108
|
+
if (self.contents || []).size > 1
|
79
109
|
top_bump = 4
|
80
110
|
|
81
|
-
view_title =
|
111
|
+
view_title = self.contents[self.selected_view_index].title || "<No Title>"
|
82
112
|
view_title += " " * 100
|
83
113
|
|
84
114
|
self.win.setpos(2, 2)
|
85
115
|
self.win.addstr(view_title[0...self.win.maxx()-3])
|
86
116
|
|
87
|
-
subtitle = "(#{self.selected_view_index + 1} out of #{self.
|
117
|
+
subtitle = "(#{self.selected_view_index + 1} out of #{self.contents.size})"
|
88
118
|
subtitle += " " * 100
|
89
119
|
self.win.setpos(3, 2)
|
90
120
|
self.win.addstr(subtitle[0...self.win.maxx()-3])
|
@@ -104,6 +134,16 @@ module Wassup
|
|
104
134
|
self.subwin.scrollok(true)
|
105
135
|
end
|
106
136
|
|
137
|
+
def close
|
138
|
+
unless self.subwin.nil?
|
139
|
+
self.subwin.clear
|
140
|
+
self.subwin.close
|
141
|
+
end
|
142
|
+
|
143
|
+
self.win.clear
|
144
|
+
self.win.close
|
145
|
+
end
|
146
|
+
|
107
147
|
def needs_refresh?
|
108
148
|
return false if self.content_block.nil?
|
109
149
|
return false if self.interval.nil?
|
@@ -111,61 +151,160 @@ module Wassup
|
|
111
151
|
return Time.now - self.interval > self.last_refreshed
|
112
152
|
end
|
113
153
|
|
114
|
-
|
115
|
-
|
154
|
+
class Ope
|
155
|
+
attr_accessor :error
|
156
|
+
def initialize(error)
|
157
|
+
@error = error
|
158
|
+
end
|
159
|
+
end
|
116
160
|
|
117
|
-
|
161
|
+
def data_lines
|
162
|
+
return [] if self.selected_view_index.nil?
|
163
|
+
content = (self.contents || [])[self.selected_view_index]
|
164
|
+
|
165
|
+
if content.nil?
|
166
|
+
return []
|
167
|
+
else
|
168
|
+
content.data.map(&:display)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def refreshing?
|
173
|
+
return !self.content_thread.nil?
|
174
|
+
end
|
175
|
+
|
176
|
+
def redraw
|
177
|
+
self.update_box
|
178
|
+
self.update_title
|
179
|
+
self.refresh_content(nil)
|
180
|
+
end
|
118
181
|
|
119
|
-
|
120
|
-
|
182
|
+
def refresh(force: false)
|
183
|
+
if force
|
184
|
+
self.last_refreshed = nil
|
185
|
+
end
|
121
186
|
|
122
|
-
if
|
123
|
-
|
187
|
+
if !needs_refresh?
|
188
|
+
return
|
189
|
+
end
|
190
|
+
|
191
|
+
thread = self.content_thread
|
192
|
+
if !thread.nil?
|
193
|
+
if thread.status == "sleep" || thread.status == "run" || thread.status == "aborting"
|
194
|
+
self.update_refresh
|
195
|
+
return
|
196
|
+
elsif thread.status == nil
|
197
|
+
return
|
198
|
+
elsif thread.status == false
|
199
|
+
rtn = thread.value
|
200
|
+
if rtn.is_a?(Ope)
|
201
|
+
content = Wassup::Pane::Content.new
|
202
|
+
|
203
|
+
content.add_row("[fg=red]Error during refersh[fg=white]")
|
204
|
+
content.add_row("[fg=red]at #{Time.now}[fg=while]")
|
205
|
+
content.add_row("")
|
206
|
+
content.add_row("[fg=yellow]Will try again next interval[fg=white]")
|
207
|
+
|
208
|
+
self.refresh_content([content])
|
209
|
+
elsif rtn.is_a?(Wassup::PaneBuilder::ContentBuilder)
|
210
|
+
self.refresh_content(rtn.contents)
|
211
|
+
end
|
212
|
+
|
213
|
+
self.update_box
|
214
|
+
self.update_title
|
215
|
+
else
|
216
|
+
# This shouldn't happen
|
217
|
+
# TODO: also fix this
|
218
|
+
return
|
219
|
+
end
|
124
220
|
else
|
125
|
-
|
126
|
-
|
127
|
-
|
221
|
+
the_block = self.content_block
|
222
|
+
self.content_thread = Thread.new {
|
223
|
+
begin
|
224
|
+
builder = Wassup::PaneBuilder::ContentBuilder.new(self.contents)
|
225
|
+
content = the_block.call(builder)
|
226
|
+
|
227
|
+
builder
|
228
|
+
rescue => ex
|
229
|
+
next Ope.new(ex)
|
230
|
+
end
|
231
|
+
}
|
232
|
+
self.update_box
|
233
|
+
self.update_title
|
128
234
|
end
|
235
|
+
end
|
129
236
|
|
130
|
-
|
237
|
+
def refresh_content(contents)
|
238
|
+
self.contents = contents unless contents.nil?
|
131
239
|
|
240
|
+
self.load_current_view()
|
132
241
|
self.last_refreshed = Time.now
|
242
|
+
|
243
|
+
self.content_thread = nil
|
133
244
|
end
|
134
245
|
|
135
246
|
def load_current_view
|
136
247
|
self.setup_subwin()
|
137
|
-
view_content = self.all_view_data_objects[self.selected_view_index]
|
138
248
|
|
139
249
|
# this might be bad
|
140
250
|
self.highlighted_line = nil
|
251
|
+
self.virtual_reload()
|
252
|
+
end
|
253
|
+
|
254
|
+
def title=(title)
|
255
|
+
@title = title
|
256
|
+
self.update_box()
|
257
|
+
self.update_title()
|
258
|
+
end
|
259
|
+
|
260
|
+
attr_accessor :refresh_char_count
|
261
|
+
def refresh_char
|
262
|
+
return "" unless self.show_refresh
|
141
263
|
|
142
|
-
|
143
|
-
|
144
|
-
view_content = view_content[:content]
|
264
|
+
if self.refresh_char_count.nil?
|
265
|
+
self.refresh_char_count = 0
|
145
266
|
end
|
146
267
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
@data_objects << item[1]
|
155
|
-
self.add_line(item[0])
|
268
|
+
if self.refreshing?
|
269
|
+
array = ['\\', '|', '/', '|']
|
270
|
+
rtn = array[self.refresh_char_count]
|
271
|
+
|
272
|
+
self.refresh_char_count += 1
|
273
|
+
if self.refresh_char_count >= array.size
|
274
|
+
self.refresh_char_count = 0
|
156
275
|
end
|
276
|
+
|
277
|
+
return rtn
|
278
|
+
else
|
279
|
+
return ""
|
157
280
|
end
|
158
281
|
end
|
159
282
|
|
160
|
-
|
161
|
-
|
162
|
-
self.
|
163
|
-
|
283
|
+
attr_accessor :last_refresh_char_at
|
284
|
+
def update_refresh
|
285
|
+
return unless self.should_box
|
286
|
+
|
287
|
+
self.last_refresh_char_at ||= Time.now
|
288
|
+
|
289
|
+
if Time.now - self.last_refresh_char_at >= 0.15
|
290
|
+
self.win.setpos(0, 1)
|
291
|
+
self.win.addstr(self.refresh_char)
|
292
|
+
self.win.refresh
|
293
|
+
|
294
|
+
self.last_refresh_char_at = Time.now
|
295
|
+
end
|
164
296
|
end
|
165
297
|
|
166
298
|
def update_title
|
299
|
+
return unless self.should_box
|
300
|
+
|
167
301
|
title = self.title || "<No Title>"
|
168
|
-
|
302
|
+
|
303
|
+
if self.focus_number.nil?
|
304
|
+
full_title = title
|
305
|
+
else
|
306
|
+
full_title = "#{self.focus_number} - #{title}"
|
307
|
+
end
|
169
308
|
|
170
309
|
self.win.setpos(0, 3)
|
171
310
|
self.win.addstr(full_title)
|
@@ -182,21 +321,17 @@ module Wassup
|
|
182
321
|
def update_box
|
183
322
|
return unless self.should_box
|
184
323
|
|
185
|
-
self.
|
186
|
-
self.win.box()
|
187
|
-
self.win.attron(Curses.color_pair(1))
|
324
|
+
show_focused = self.focused
|
188
325
|
|
189
|
-
self.
|
190
|
-
|
326
|
+
if self.focus_number.nil?
|
327
|
+
show_focused = true
|
328
|
+
end
|
191
329
|
|
192
|
-
|
193
|
-
|
330
|
+
self.win.attrset(show_focused ? Curses.color_pair(Wassup::Color::Pair::BORDER_FOCUS) : Curses.color_pair(Wassup::Color::Pair::BORDER))
|
331
|
+
self.win.box()
|
332
|
+
self.win.attrset(Curses.color_pair(Wassup::Color::Pair::NORMAL))
|
194
333
|
|
195
|
-
|
196
|
-
self.virtual_reload
|
197
|
-
else
|
198
|
-
self.load_thing
|
199
|
-
end
|
334
|
+
self.win.refresh
|
200
335
|
end
|
201
336
|
|
202
337
|
# Load the file into memory and
|
@@ -211,23 +346,59 @@ module Wassup
|
|
211
346
|
end
|
212
347
|
|
213
348
|
def virtual_reload
|
214
|
-
return if self.data_lines.nil?
|
349
|
+
return if self.data_lines.nil? || self.data_lines.empty?
|
215
350
|
|
351
|
+
# TODO: This errored out but might be because thread stuff???
|
216
352
|
self.data_lines[self.top..(self.top+self.subwin.maxy-1)].each_with_index do |line, idx|
|
217
353
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
354
|
+
write_full_line = false
|
355
|
+
should_highlight = self.focused && self.highlight && (idx + self.top) == self.highlighted_line
|
356
|
+
|
357
|
+
max_char = self.subwin.maxx()-3
|
358
|
+
|
359
|
+
self.subwin.attrset(Curses.color_pair(Wassup::Color::Pair::NORMAL))
|
360
|
+
|
361
|
+
splits = line.split(/\[.*?\]/) # returns ["hey something", "other thing", "okay"]
|
362
|
+
scans = line.scan(/\[.*?\]/) #returns ["red", "white"]
|
363
|
+
scans = scans.map do |str|
|
364
|
+
if str.start_with?('[fg=')
|
365
|
+
str = str.gsub('[fg=', '').gsub(']','')
|
366
|
+
Wassup::Color.new(str)
|
367
|
+
else
|
368
|
+
str
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
all_parts = splits.zip(scans).flatten.compact
|
373
|
+
|
374
|
+
char_count = 0
|
375
|
+
|
376
|
+
if should_highlight
|
377
|
+
self.subwin.attrset(Curses.color_pair(Wassup::Color::Pair::HIGHLIGHT))
|
378
|
+
end
|
379
|
+
|
380
|
+
all_parts.each do |part|
|
381
|
+
if part.is_a?(Wassup::Color)
|
382
|
+
#color = Curses.color_pair([1,2,3,4].sample)
|
383
|
+
if !should_highlight
|
384
|
+
self.subwin.attrset(Curses.color_pair(part.color_pair))
|
385
|
+
end
|
386
|
+
else
|
387
|
+
new_char_count = char_count + part.size
|
388
|
+
if new_char_count >= max_char
|
389
|
+
part = part[0...(max_char - char_count)]
|
390
|
+
end
|
391
|
+
|
392
|
+
self.subwin.setpos(idx, char_count)
|
393
|
+
self.subwin.addstr(part)
|
394
|
+
|
395
|
+
char_count += part.size
|
396
|
+
end
|
397
|
+
|
398
|
+
end
|
399
|
+
|
400
|
+
self.subwin.attrset(Curses.color_pair(Wassup::Color::Pair::NORMAL))
|
401
|
+
self.subwin.clrtoeol()
|
231
402
|
end
|
232
403
|
self.subwin.refresh
|
233
404
|
end
|
@@ -289,7 +460,7 @@ module Wassup
|
|
289
460
|
def scroll_left
|
290
461
|
self.selected_view_index -= 1
|
291
462
|
if self.selected_view_index < 0
|
292
|
-
self.selected_view_index = self.
|
463
|
+
self.selected_view_index = self.contents.size - 1
|
293
464
|
end
|
294
465
|
|
295
466
|
self.load_current_view
|
@@ -297,7 +468,7 @@ module Wassup
|
|
297
468
|
|
298
469
|
def scroll_right
|
299
470
|
self.selected_view_index += 1
|
300
|
-
if self.selected_view_index >= self.
|
471
|
+
if self.selected_view_index >= self.contents.size
|
301
472
|
self.selected_view_index = 0
|
302
473
|
end
|
303
474
|
|
@@ -327,10 +498,10 @@ module Wassup
|
|
327
498
|
self.top += 1
|
328
499
|
str = self.data_lines[self.top + self.subwin.maxy - 1]
|
329
500
|
if str
|
330
|
-
self.subwin.
|
501
|
+
self.subwin.attrset(Curses.color_pair(Wassup::Color::Pair::NORMAL))
|
331
502
|
self.subwin.setpos(self.subwin.maxy - 1, 0)
|
332
503
|
self.subwin.addstr(str)
|
333
|
-
self.subwin.
|
504
|
+
self.subwin.attrset(Curses.color_pair(Wassup::Color::Pair::NORMAL))
|
334
505
|
end
|
335
506
|
return true
|
336
507
|
else
|
@@ -348,27 +519,29 @@ module Wassup
|
|
348
519
|
|
349
520
|
if input == "j"
|
350
521
|
if virtual_scroll
|
351
|
-
virtual_scroll_down
|
522
|
+
self.virtual_scroll_down
|
352
523
|
else
|
353
524
|
scroll_down
|
354
525
|
end
|
355
526
|
elsif input == "k"
|
356
527
|
if virtual_scroll
|
357
|
-
virtual_scroll_up
|
528
|
+
self.virtual_scroll_up
|
358
529
|
else
|
359
530
|
scroll_up
|
360
531
|
end
|
361
532
|
elsif input == "h"
|
362
|
-
scroll_left
|
533
|
+
self.scroll_left
|
363
534
|
elsif input == "l"
|
364
|
-
scroll_right
|
365
|
-
elsif input == "
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
if !
|
370
|
-
|
371
|
-
|
535
|
+
self.scroll_right
|
536
|
+
elsif input == "r"
|
537
|
+
self.refresh(force: true)
|
538
|
+
else
|
539
|
+
selection_block = self.selection_blocks[input]
|
540
|
+
if !selection_block.nil? && !self.highlighted_line.nil?
|
541
|
+
content = self.contents[self.selected_view_index]
|
542
|
+
row = content.data[self.highlighted_line]
|
543
|
+
data = row.object || row.display
|
544
|
+
selection_block.call(data)
|
372
545
|
end
|
373
546
|
end
|
374
547
|
end
|
data/lib/wassup/pane_builder.rb
CHANGED
@@ -9,16 +9,87 @@ module Wassup
|
|
9
9
|
attr_accessor :highlight
|
10
10
|
|
11
11
|
attr_accessor :title
|
12
|
+
attr_accessor :description
|
13
|
+
|
14
|
+
attr_accessor :show_refresh
|
12
15
|
|
13
16
|
attr_accessor :interval
|
14
17
|
attr_accessor :content_block
|
15
|
-
attr_accessor :
|
18
|
+
attr_accessor :selection_blocks
|
19
|
+
attr_accessor :selection_blocks_description
|
20
|
+
|
21
|
+
class ContentBuilder
|
22
|
+
attr_accessor :contents
|
23
|
+
|
24
|
+
def initialize(contents)
|
25
|
+
@contents = contents
|
26
|
+
@need_to_clear = true
|
27
|
+
@show_refresh = true
|
28
|
+
end
|
29
|
+
|
30
|
+
def clear=(clear)
|
31
|
+
@need_to_clear = clear
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_row(display, object=nil, page:nil)
|
35
|
+
if @need_to_clear
|
36
|
+
@need_to_clear = false
|
37
|
+
self.contents = []
|
38
|
+
end
|
39
|
+
|
40
|
+
content = nil
|
41
|
+
|
42
|
+
# Create contents if none
|
43
|
+
if page.nil?
|
44
|
+
if self.contents.empty?
|
45
|
+
content = Pane::Content.new
|
46
|
+
self.contents << content
|
47
|
+
else
|
48
|
+
content = self.contents.first
|
49
|
+
end
|
50
|
+
elsif page.is_a?(String)
|
51
|
+
content = self.contents.find do |content|
|
52
|
+
content.title == page
|
53
|
+
end
|
54
|
+
|
55
|
+
if content.nil?
|
56
|
+
content = Pane::Content.new(page)
|
57
|
+
self.contents << content
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
content.add_row(display, object)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialize()
|
66
|
+
@height = 1
|
67
|
+
@weight = 1
|
68
|
+
@top = 0
|
69
|
+
@left = 0
|
70
|
+
|
71
|
+
@highlight = false
|
72
|
+
@interval = 60 * 5
|
73
|
+
|
74
|
+
@selection_blocks = {}
|
75
|
+
@selection_blocks_description = {}
|
76
|
+
end
|
16
77
|
|
17
78
|
def content(&block)
|
18
79
|
self.content_block = block
|
19
80
|
end
|
20
|
-
def selection(&block)
|
21
|
-
|
81
|
+
def selection(input=10, description=nil, &block)
|
82
|
+
if input.to_s.downcase == "enter"
|
83
|
+
input = 10
|
84
|
+
end
|
85
|
+
|
86
|
+
description_input = input
|
87
|
+
if input.to_s == "10"
|
88
|
+
input = "<Enter>"
|
89
|
+
end
|
90
|
+
|
91
|
+
self.selection_blocks[input] = block
|
92
|
+
self.selection_blocks_description[input] = description
|
22
93
|
end
|
23
94
|
end
|
24
95
|
end
|
data/lib/wassup/version.rb
CHANGED
data/lib/wassup.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wassup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Holtz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -32,6 +32,7 @@ executables:
|
|
32
32
|
extensions: []
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
|
+
- ".github/FUNDING.yml"
|
35
36
|
- ".gitignore"
|
36
37
|
- ".rspec"
|
37
38
|
- ".travis.yml"
|
@@ -44,9 +45,48 @@ files:
|
|
44
45
|
- bin/console
|
45
46
|
- bin/setup
|
46
47
|
- bin/wassup
|
48
|
+
- docs/.gitignore
|
49
|
+
- docs/README.md
|
50
|
+
- docs/babel.config.js
|
51
|
+
- docs/blog/2021-12-09-welcome/index.md
|
52
|
+
- docs/blog/authors.yml
|
53
|
+
- docs/docs/Supfile-basics/_category_.json
|
54
|
+
- docs/docs/Supfile-basics/understanding-the-supfile.md
|
55
|
+
- docs/docs/intro.md
|
56
|
+
- docs/docusaurus.config.js
|
57
|
+
- docs/package-lock.json
|
58
|
+
- docs/package.json
|
59
|
+
- docs/sidebars.js
|
60
|
+
- docs/src/components/HomepageFeatures.module.css
|
61
|
+
- docs/src/components/HomepageFeatures.tsx
|
62
|
+
- docs/src/css/custom.css
|
63
|
+
- docs/src/pages/index.module.css
|
64
|
+
- docs/src/pages/index.tsx
|
65
|
+
- docs/src/pages/markdown-page.md
|
66
|
+
- docs/static/.nojekyll
|
67
|
+
- docs/static/img/demo-supfile.png
|
68
|
+
- docs/static/img/favicon.ico
|
69
|
+
- docs/static/img/logo.svg
|
70
|
+
- docs/static/img/tutorial-intro-starter-screenshot.png
|
71
|
+
- docs/static/img/tutorial/docsVersionDropdown.png
|
72
|
+
- docs/static/img/tutorial/localeDropdown.png
|
73
|
+
- docs/static/img/undraw_docusaurus_mountain.svg
|
74
|
+
- docs/static/img/undraw_docusaurus_react.svg
|
75
|
+
- docs/static/img/undraw_docusaurus_tree.svg
|
76
|
+
- docs/static/img/wassup-long.png
|
77
|
+
- docs/static/img/wassup-screenshot.png
|
78
|
+
- docs/static/img/wassup.png
|
79
|
+
- docs/static/video/wassup-demo.mov
|
80
|
+
- docs/tsconfig.json
|
81
|
+
- examples/basic/Supfile
|
82
|
+
- examples/debug/Supfile
|
83
|
+
- examples/josh-fastlane/README.md
|
47
84
|
- examples/josh-fastlane/Supfile
|
85
|
+
- examples/josh-fastlane/demo.png
|
86
|
+
- examples/starter/Supfile
|
48
87
|
- lib/wassup.rb
|
49
88
|
- lib/wassup/app.rb
|
89
|
+
- lib/wassup/color.rb
|
50
90
|
- lib/wassup/pane.rb
|
51
91
|
- lib/wassup/pane_builder.rb
|
52
92
|
- lib/wassup/version.rb
|