make_menu 1.0.0 → 1.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/make_menu/badge_set.rb +34 -0
- data/lib/make_menu/field_set.rb +52 -0
- data/lib/make_menu/menu.rb +35 -4
- data/lib/make_menu/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 220d243f1715ae665a12f8ed497f109209ba10fc5282298b7d9fec956ff99856
|
4
|
+
data.tar.gz: dd1adb0c2bed5934598a72e2b3d5ffc4c48477b438b2a1c6206351d742868e9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0f933ee0f3af0635c97dfc166e1c416784e0a5b24fac03cadab830179ed36fdce07711fc32e03ba353615de72128534b52d2cbf7b2e6009765043cb8bfb5d7e
|
7
|
+
data.tar.gz: 87c98103a07b39f4d54e4278042b5f110754ccad21b299b073928945b142c507636e1685ef811f2f93f9f52309b710876d052f0c23c1e7b6ceddbd918f1b9df5
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
module MakeMenu
|
2
|
+
class BadgeSet
|
3
|
+
def initialize
|
4
|
+
@badges = []
|
5
|
+
end
|
6
|
+
|
7
|
+
def display
|
8
|
+
rows = []
|
9
|
+
row = ''
|
10
|
+
@badges.each do |badge|
|
11
|
+
label = badge[:label]
|
12
|
+
value = badge[:handler].call ? badge[:on] : badge[:off]
|
13
|
+
if row.decolor.size + label.decolor.size + value.decolor.size >= (0.7 * ::TTY::Screen.cols)
|
14
|
+
rows << row
|
15
|
+
row = ''
|
16
|
+
end
|
17
|
+
row += " #{label}#{value} "
|
18
|
+
end
|
19
|
+
rows << row
|
20
|
+
|
21
|
+
puts rows.join("\n\n").align_block(:center)
|
22
|
+
puts
|
23
|
+
end
|
24
|
+
|
25
|
+
def add(label = '', on: ' ON '.green_bg.bold, off: ' OFF '.red_bg.dark, &block)
|
26
|
+
@badges << {
|
27
|
+
label: label,
|
28
|
+
on: on,
|
29
|
+
off: off,
|
30
|
+
handler: block
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module MakeMenu
|
2
|
+
class FieldSet
|
3
|
+
def initialize
|
4
|
+
@fields = []
|
5
|
+
@max_widths = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
def display
|
9
|
+
build
|
10
|
+
@fields.each do |field|
|
11
|
+
label_cell = field[:label]
|
12
|
+
.align(
|
13
|
+
:right,
|
14
|
+
width: @max_widths[:label]
|
15
|
+
).color(field[:label_color])
|
16
|
+
|
17
|
+
value_cel = field[:value]
|
18
|
+
.align(
|
19
|
+
:left,
|
20
|
+
width: @max_widths[:value],
|
21
|
+
pad_right: true
|
22
|
+
).color(field[:value_color])
|
23
|
+
|
24
|
+
puts "#{label_cell}#{value_cel}".align(:center)
|
25
|
+
end
|
26
|
+
puts
|
27
|
+
end
|
28
|
+
|
29
|
+
def build
|
30
|
+
@max_widths[:label] = 0
|
31
|
+
@max_widths[:value] = 0
|
32
|
+
|
33
|
+
@fields.each do |field|
|
34
|
+
label = field[:label]
|
35
|
+
value = field[:value] = field[:handler].call
|
36
|
+
label_width = label.decolor.size
|
37
|
+
value_width = value.decolor.size
|
38
|
+
@max_widths[:label] = label_width if label_width > @max_widths[:label]
|
39
|
+
@max_widths[:value] = value_width if value_width > @max_widths[:value]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def add(label = nil, label_color: :normal, value_color: :normal, &block)
|
44
|
+
@fields << {
|
45
|
+
label: label || '',
|
46
|
+
label_color: label_color,
|
47
|
+
value_color: value_color,
|
48
|
+
handler: block
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/make_menu/menu.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'builder'
|
4
|
+
require_relative 'badge_set'
|
5
|
+
require_relative 'field_set'
|
4
6
|
require_relative 'menu_item_group'
|
5
7
|
require_relative 'text/table'
|
6
8
|
require_relative 'console/prompter'
|
@@ -21,7 +23,10 @@ module MakeMenu
|
|
21
23
|
pause_on_success: false
|
22
24
|
}
|
23
25
|
@highlights = {}
|
26
|
+
|
24
27
|
@header = nil
|
28
|
+
@field_set = nil
|
29
|
+
@badge_set = nil
|
25
30
|
end
|
26
31
|
|
27
32
|
attr_reader :makefile, :groups, :items, :options, :highlights
|
@@ -35,6 +40,8 @@ module MakeMenu
|
|
35
40
|
system 'clear' if clear_screen?
|
36
41
|
|
37
42
|
display_header
|
43
|
+
display_badges
|
44
|
+
display_fields
|
38
45
|
|
39
46
|
puts colorize(MakeMenu::Text::Table.new(groups).to_s)
|
40
47
|
puts
|
@@ -73,6 +80,10 @@ module MakeMenu
|
|
73
80
|
end
|
74
81
|
end
|
75
82
|
|
83
|
+
def header(&block)
|
84
|
+
@header = block
|
85
|
+
end
|
86
|
+
|
76
87
|
def display_header
|
77
88
|
if @header
|
78
89
|
@header.call
|
@@ -82,6 +93,30 @@ module MakeMenu
|
|
82
93
|
end
|
83
94
|
end
|
84
95
|
|
96
|
+
def add_field(field, &block)
|
97
|
+
fields.add field, &block
|
98
|
+
end
|
99
|
+
|
100
|
+
def fields
|
101
|
+
@field_set ||= FieldSet.new
|
102
|
+
end
|
103
|
+
|
104
|
+
def display_fields
|
105
|
+
@field_set.display if @field_set
|
106
|
+
end
|
107
|
+
|
108
|
+
def add_badge(label = '', on: ' ON '.green_bg.bold, off: ' OFF '.red_bg.dark, &block)
|
109
|
+
badges.add label, on: on, off: off, &block
|
110
|
+
end
|
111
|
+
|
112
|
+
def badges
|
113
|
+
@badge_set ||= BadgeSet.new
|
114
|
+
end
|
115
|
+
|
116
|
+
def display_badges
|
117
|
+
@badge_set.display if @badge_set
|
118
|
+
end
|
119
|
+
|
85
120
|
def options
|
86
121
|
@options.merge!(yield) if block_given?
|
87
122
|
@options
|
@@ -92,10 +127,6 @@ module MakeMenu
|
|
92
127
|
@highlights
|
93
128
|
end
|
94
129
|
|
95
|
-
def header(&block)
|
96
|
-
@header = block
|
97
|
-
end
|
98
|
-
|
99
130
|
def add_group(group)
|
100
131
|
groups << group
|
101
132
|
group
|
data/lib/make_menu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: make_menu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Barri Mason
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-screen
|
@@ -33,9 +33,11 @@ files:
|
|
33
33
|
- Gemfile
|
34
34
|
- Gemfile.lock
|
35
35
|
- lib/make_menu.rb
|
36
|
+
- lib/make_menu/badge_set.rb
|
36
37
|
- lib/make_menu/builder.rb
|
37
38
|
- lib/make_menu/console/color_string.rb
|
38
39
|
- lib/make_menu/console/prompter.rb
|
40
|
+
- lib/make_menu/field_set.rb
|
39
41
|
- lib/make_menu/menu.rb
|
40
42
|
- lib/make_menu/menu_item.rb
|
41
43
|
- lib/make_menu/menu_item_group.rb
|