everyday-cli-utils 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/everyday-cli-utils.gemspec +0 -2
- data/lib/everyday-cli-utils/curses_utils.rb +40 -40
- data/lib/everyday-cli-utils/mycurses.rb +199 -199
- data/lib/everyday-cli-utils/version.rb +1 -1
- data/lib/everyday-cli-utils.rb +1 -2
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22981760ec07c6812935693a6ee28d02441e6bb1
|
4
|
+
data.tar.gz: f888f94e58a15d8bb2bfdb5ea04af6903dfe43b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86fd47cad9ba83012945384c904870a346c374deda57a085221b1244cde553da9832473b66962aaa6c858549668f94937f1040149aa0ad8ae6ea6b591df1905f
|
7
|
+
data.tar.gz: 01344d8e1f8bbef5f4a4eb7d8da778474344dcdbfdbf8b948500b63c56e3cc991aeea1b6a7de48dca02dbc1f8d38bbad367d8b0f3e091b4938a54786e3d0a60b
|
data/everyday-cli-utils.gemspec
CHANGED
@@ -1,40 +1,40 @@
|
|
1
|
-
module EverydayCliUtils
|
2
|
-
module CursesUtils
|
3
|
-
COLOR_TO_CURSES = {
|
4
|
-
:black => Curses::COLOR_BLACK,
|
5
|
-
:red => Curses::COLOR_RED,
|
6
|
-
:green => Curses::COLOR_GREEN,
|
7
|
-
:yellow => Curses::COLOR_YELLOW,
|
8
|
-
:blue => Curses::COLOR_BLUE,
|
9
|
-
:purple => Curses::COLOR_MAGENTA,
|
10
|
-
:cyan => Curses::COLOR_CYAN,
|
11
|
-
:white => Curses::COLOR_WHITE,
|
12
|
-
:none => -1,
|
13
|
-
}
|
14
|
-
|
15
|
-
def find_color(bgcolor, fgcolor)
|
16
|
-
@colors.find_index { |v| v[0] == (fgcolor || :none) && v[1] == (bgcolor || :none) }
|
17
|
-
end
|
18
|
-
|
19
|
-
def add_color(bgcolor, fgcolor)
|
20
|
-
Curses::init_pair(@colors.count + 1, COLOR_TO_CURSES[fgcolor || :none], COLOR_TO_CURSES[bgcolor || :none])
|
21
|
-
ind = @colors.count + 1
|
22
|
-
@colors << [fgcolor || :none, bgcolor || :none]
|
23
|
-
ind
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
private
|
28
|
-
def handle_color(fgcolor, bgcolor)
|
29
|
-
return 0 if (fgcolor.nil? || fgcolor == :none) && (bgcolor.nil? || bgcolor == :none)
|
30
|
-
ind = find_color(bgcolor, fgcolor)
|
31
|
-
ind = ind.nil? ? add_color(bgcolor, fgcolor) : ind + 1
|
32
|
-
Curses::color_pair(ind)
|
33
|
-
end
|
34
|
-
|
35
|
-
def get_format(str)
|
36
|
-
bold, underline, fgcolor, bgcolor = Format::parse_format(str)
|
37
|
-
(bold ? Curses::A_BOLD : 0) | (underline ? Curses::A_UNDERLINE : 0) | handle_color(fgcolor, bgcolor)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
1
|
+
#module EverydayCliUtils
|
2
|
+
# module CursesUtils
|
3
|
+
# COLOR_TO_CURSES = {
|
4
|
+
# :black => Curses::COLOR_BLACK,
|
5
|
+
# :red => Curses::COLOR_RED,
|
6
|
+
# :green => Curses::COLOR_GREEN,
|
7
|
+
# :yellow => Curses::COLOR_YELLOW,
|
8
|
+
# :blue => Curses::COLOR_BLUE,
|
9
|
+
# :purple => Curses::COLOR_MAGENTA,
|
10
|
+
# :cyan => Curses::COLOR_CYAN,
|
11
|
+
# :white => Curses::COLOR_WHITE,
|
12
|
+
# :none => -1,
|
13
|
+
# }
|
14
|
+
#
|
15
|
+
# def find_color(bgcolor, fgcolor)
|
16
|
+
# @colors.find_index { |v| v[0] == (fgcolor || :none) && v[1] == (bgcolor || :none) }
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# def add_color(bgcolor, fgcolor)
|
20
|
+
# Curses::init_pair(@colors.count + 1, COLOR_TO_CURSES[fgcolor || :none], COLOR_TO_CURSES[bgcolor || :none])
|
21
|
+
# ind = @colors.count + 1
|
22
|
+
# @colors << [fgcolor || :none, bgcolor || :none]
|
23
|
+
# ind
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
#
|
27
|
+
# private
|
28
|
+
# def handle_color(fgcolor, bgcolor)
|
29
|
+
# return 0 if (fgcolor.nil? || fgcolor == :none) && (bgcolor.nil? || bgcolor == :none)
|
30
|
+
# ind = find_color(bgcolor, fgcolor)
|
31
|
+
# ind = ind.nil? ? add_color(bgcolor, fgcolor) : ind + 1
|
32
|
+
# Curses::color_pair(ind)
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# def get_format(str)
|
36
|
+
# bold, underline, fgcolor, bgcolor = Format::parse_format(str)
|
37
|
+
# (bold ? Curses::A_BOLD : 0) | (underline ? Curses::A_UNDERLINE : 0) | handle_color(fgcolor, bgcolor)
|
38
|
+
# end
|
39
|
+
# end
|
40
|
+
#end
|
@@ -1,199 +1,199 @@
|
|
1
|
-
require 'curses'
|
2
|
-
require_relative 'format'
|
3
|
-
require_relative 'curses_utils'
|
4
|
-
|
5
|
-
module EverydayCliUtils
|
6
|
-
class MyCurses
|
7
|
-
include CursesUtils
|
8
|
-
#region External
|
9
|
-
def initialize(use_curses, linesh, linesf)
|
10
|
-
@use_curses = use_curses
|
11
|
-
@linesh = linesh
|
12
|
-
@linesf = linesf
|
13
|
-
@colors = []
|
14
|
-
@headers = []
|
15
|
-
@bodies = []
|
16
|
-
@footers = []
|
17
|
-
@cur_l = 0
|
18
|
-
@max_l = 0
|
19
|
-
@ch = nil
|
20
|
-
setup_curses(linesf, linesh) if @use_curses
|
21
|
-
end
|
22
|
-
|
23
|
-
def setup_curses(linesf, linesh)
|
24
|
-
Curses::noecho
|
25
|
-
Curses::init_screen
|
26
|
-
@subpad_start = linesh
|
27
|
-
update_subpad_size
|
28
|
-
@padh = Curses::Pad.new(linesh, Curses::cols)
|
29
|
-
@padb = Curses::Pad.new(Curses::lines - linesh - linesf, Curses::cols)
|
30
|
-
@padf = Curses::Pad.new(linesf, Curses::cols)
|
31
|
-
configure_curses
|
32
|
-
end
|
33
|
-
|
34
|
-
def configure_curses
|
35
|
-
@padh.keypad(true)
|
36
|
-
@padh.clear
|
37
|
-
@padh.nodelay = true
|
38
|
-
@padb.keypad(true)
|
39
|
-
@padb.clear
|
40
|
-
@padb.nodelay = true
|
41
|
-
@padf.keypad(true)
|
42
|
-
@padf.clear
|
43
|
-
@padf.nodelay = true
|
44
|
-
Curses::cbreak
|
45
|
-
Curses::start_color
|
46
|
-
Curses::use_default_colors
|
47
|
-
end
|
48
|
-
|
49
|
-
def clear
|
50
|
-
@headers = []
|
51
|
-
@bodies = []
|
52
|
-
@footers = []
|
53
|
-
end
|
54
|
-
|
55
|
-
def myprints
|
56
|
-
@use_curses ? print_curses : print_normal
|
57
|
-
end
|
58
|
-
|
59
|
-
def print_normal
|
60
|
-
@headers.each { |v| puts v }
|
61
|
-
@bodies.each { |v| puts v }
|
62
|
-
@footers.each { |v| puts v }
|
63
|
-
end
|
64
|
-
|
65
|
-
def print_curses
|
66
|
-
resize_curses
|
67
|
-
myprint(@headers.join("\n"), @padh)
|
68
|
-
myprint(@bodies.join("\n"), @padb)
|
69
|
-
myprint(@footers.join("\n"), @padf)
|
70
|
-
update_max_l
|
71
|
-
@cur_l = [@cur_l, @max_l].min
|
72
|
-
padh_refresh
|
73
|
-
padb_refresh
|
74
|
-
padf_refresh
|
75
|
-
end
|
76
|
-
|
77
|
-
def resize_curses
|
78
|
-
@padh.resize(@headers.count, Curses::cols)
|
79
|
-
@padb.resize(@bodies.count, Curses::cols)
|
80
|
-
@padf.resize(@footers.count, Curses::cols)
|
81
|
-
@padh.clear
|
82
|
-
@padb.clear
|
83
|
-
@padf.clear
|
84
|
-
@padh.setpos(0, 0)
|
85
|
-
@padb.setpos(0, 0)
|
86
|
-
@padf.setpos(0, 0)
|
87
|
-
end
|
88
|
-
|
89
|
-
def read_ch
|
90
|
-
@ch = @padf.getch
|
91
|
-
end
|
92
|
-
|
93
|
-
def clear_ch
|
94
|
-
read_ch
|
95
|
-
while @ch == 10 || @ch == Curses::Key::ENTER || @ch == Curses::Key::UP || @ch == Curses::Key::DOWN
|
96
|
-
read_ch
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def scroll_iteration
|
101
|
-
old_subpad_size = @subpad_size
|
102
|
-
update_subpad_size
|
103
|
-
update_max_l
|
104
|
-
update_scroll(@subpad_size != old_subpad_size)
|
105
|
-
sleep(0.05)
|
106
|
-
read_ch
|
107
|
-
end
|
108
|
-
|
109
|
-
def header_live_append(str)
|
110
|
-
@padh << str
|
111
|
-
padh_refresh
|
112
|
-
end
|
113
|
-
|
114
|
-
def body_live_append(str)
|
115
|
-
@padb << str
|
116
|
-
padb_refresh
|
117
|
-
end
|
118
|
-
|
119
|
-
def footer_live_append(str)
|
120
|
-
@padf << str
|
121
|
-
padf_refresh
|
122
|
-
end
|
123
|
-
|
124
|
-
def dispose
|
125
|
-
Curses::close_screen if @use_curses
|
126
|
-
end
|
127
|
-
|
128
|
-
#endregion
|
129
|
-
|
130
|
-
#region Internal
|
131
|
-
def myputs(text, pad)
|
132
|
-
myprint("#{text}\n", pad)
|
133
|
-
end
|
134
|
-
|
135
|
-
def myprint(text, pad)
|
136
|
-
if @use_curses
|
137
|
-
if text.include?("\e")
|
138
|
-
pieces = text.scan(/#{"\e"}\[(.+?)m([^#{"\e"}]+?)#{"\e"}\[0m|([^#{"\e"}]+)/)
|
139
|
-
pieces.each { |v|
|
140
|
-
if v[2].nil?
|
141
|
-
pad.attron(get_format(v[0])) {
|
142
|
-
pad << v[1]
|
143
|
-
}
|
144
|
-
else
|
145
|
-
pad << v[2]
|
146
|
-
end
|
147
|
-
}
|
148
|
-
else
|
149
|
-
pad << text
|
150
|
-
end
|
151
|
-
else
|
152
|
-
print text
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def update_max_l
|
157
|
-
@max_l = [0, @bodies.count - @subpad_size].max
|
158
|
-
end
|
159
|
-
|
160
|
-
def update_subpad_size
|
161
|
-
Curses::refresh
|
162
|
-
@subpad_size = Curses::lines - @linesh - @linesf
|
163
|
-
end
|
164
|
-
|
165
|
-
def padh_refresh
|
166
|
-
@padh.refresh(0, 0, 0, 0, @subpad_start - 1, Curses::cols - 1)
|
167
|
-
end
|
168
|
-
|
169
|
-
def padb_refresh
|
170
|
-
@padb.refresh(@cur_l, 0, @subpad_start, 0, @subpad_start + @subpad_size - 1, Curses::cols - 1)
|
171
|
-
end
|
172
|
-
|
173
|
-
def padf_refresh
|
174
|
-
@padf.refresh(0, 0, @subpad_start + [@subpad_size, @bodies.count].min, 0, @subpad_start + [@subpad_size, @bodies.count].min + @footers.count, Curses::cols - 1)
|
175
|
-
end
|
176
|
-
|
177
|
-
def update_scroll(force_refresh = false)
|
178
|
-
if @ch == Curses::Key::UP
|
179
|
-
@cur_l = [0, @cur_l - 1].max
|
180
|
-
elsif @ch == Curses::Key::DOWN
|
181
|
-
@cur_l = [@max_l, @cur_l + 1].min
|
182
|
-
end
|
183
|
-
@cur_l = [@cur_l, @max_l].min
|
184
|
-
if @ch == Curses::Key::UP || @ch == Curses::Key::DOWN || force_refresh
|
185
|
-
Curses::refresh
|
186
|
-
padh_refresh
|
187
|
-
padb_refresh
|
188
|
-
padf_refresh
|
189
|
-
end
|
190
|
-
@cur_l
|
191
|
-
end
|
192
|
-
|
193
|
-
#endregion
|
194
|
-
|
195
|
-
attr_reader :ch
|
196
|
-
attr_accessor :bodies, :headers, :footers
|
197
|
-
private :myputs, :myprint, :update_max_l, :update_subpad_size, :padh_refresh, :padb_refresh, :padf_refresh, :update_scroll
|
198
|
-
end
|
199
|
-
end
|
1
|
+
#require 'curses'
|
2
|
+
#require_relative 'format'
|
3
|
+
#require_relative 'curses_utils'
|
4
|
+
#
|
5
|
+
#module EverydayCliUtils
|
6
|
+
# class MyCurses
|
7
|
+
# include CursesUtils
|
8
|
+
# #region External
|
9
|
+
# def initialize(use_curses, linesh, linesf)
|
10
|
+
# @use_curses = use_curses
|
11
|
+
# @linesh = linesh
|
12
|
+
# @linesf = linesf
|
13
|
+
# @colors = []
|
14
|
+
# @headers = []
|
15
|
+
# @bodies = []
|
16
|
+
# @footers = []
|
17
|
+
# @cur_l = 0
|
18
|
+
# @max_l = 0
|
19
|
+
# @ch = nil
|
20
|
+
# setup_curses(linesf, linesh) if @use_curses
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# def setup_curses(linesf, linesh)
|
24
|
+
# Curses::noecho
|
25
|
+
# Curses::init_screen
|
26
|
+
# @subpad_start = linesh
|
27
|
+
# update_subpad_size
|
28
|
+
# @padh = Curses::Pad.new(linesh, Curses::cols)
|
29
|
+
# @padb = Curses::Pad.new(Curses::lines - linesh - linesf, Curses::cols)
|
30
|
+
# @padf = Curses::Pad.new(linesf, Curses::cols)
|
31
|
+
# configure_curses
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# def configure_curses
|
35
|
+
# @padh.keypad(true)
|
36
|
+
# @padh.clear
|
37
|
+
# @padh.nodelay = true
|
38
|
+
# @padb.keypad(true)
|
39
|
+
# @padb.clear
|
40
|
+
# @padb.nodelay = true
|
41
|
+
# @padf.keypad(true)
|
42
|
+
# @padf.clear
|
43
|
+
# @padf.nodelay = true
|
44
|
+
# Curses::cbreak
|
45
|
+
# Curses::start_color
|
46
|
+
# Curses::use_default_colors
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# def clear
|
50
|
+
# @headers = []
|
51
|
+
# @bodies = []
|
52
|
+
# @footers = []
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# def myprints
|
56
|
+
# @use_curses ? print_curses : print_normal
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# def print_normal
|
60
|
+
# @headers.each { |v| puts v }
|
61
|
+
# @bodies.each { |v| puts v }
|
62
|
+
# @footers.each { |v| puts v }
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# def print_curses
|
66
|
+
# resize_curses
|
67
|
+
# myprint(@headers.join("\n"), @padh)
|
68
|
+
# myprint(@bodies.join("\n"), @padb)
|
69
|
+
# myprint(@footers.join("\n"), @padf)
|
70
|
+
# update_max_l
|
71
|
+
# @cur_l = [@cur_l, @max_l].min
|
72
|
+
# padh_refresh
|
73
|
+
# padb_refresh
|
74
|
+
# padf_refresh
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# def resize_curses
|
78
|
+
# @padh.resize(@headers.count, Curses::cols)
|
79
|
+
# @padb.resize(@bodies.count, Curses::cols)
|
80
|
+
# @padf.resize(@footers.count, Curses::cols)
|
81
|
+
# @padh.clear
|
82
|
+
# @padb.clear
|
83
|
+
# @padf.clear
|
84
|
+
# @padh.setpos(0, 0)
|
85
|
+
# @padb.setpos(0, 0)
|
86
|
+
# @padf.setpos(0, 0)
|
87
|
+
# end
|
88
|
+
#
|
89
|
+
# def read_ch
|
90
|
+
# @ch = @padf.getch
|
91
|
+
# end
|
92
|
+
#
|
93
|
+
# def clear_ch
|
94
|
+
# read_ch
|
95
|
+
# while @ch == 10 || @ch == Curses::Key::ENTER || @ch == Curses::Key::UP || @ch == Curses::Key::DOWN
|
96
|
+
# read_ch
|
97
|
+
# end
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# def scroll_iteration
|
101
|
+
# old_subpad_size = @subpad_size
|
102
|
+
# update_subpad_size
|
103
|
+
# update_max_l
|
104
|
+
# update_scroll(@subpad_size != old_subpad_size)
|
105
|
+
# sleep(0.05)
|
106
|
+
# read_ch
|
107
|
+
# end
|
108
|
+
#
|
109
|
+
# def header_live_append(str)
|
110
|
+
# @padh << str
|
111
|
+
# padh_refresh
|
112
|
+
# end
|
113
|
+
#
|
114
|
+
# def body_live_append(str)
|
115
|
+
# @padb << str
|
116
|
+
# padb_refresh
|
117
|
+
# end
|
118
|
+
#
|
119
|
+
# def footer_live_append(str)
|
120
|
+
# @padf << str
|
121
|
+
# padf_refresh
|
122
|
+
# end
|
123
|
+
#
|
124
|
+
# def dispose
|
125
|
+
# Curses::close_screen if @use_curses
|
126
|
+
# end
|
127
|
+
#
|
128
|
+
# #endregion
|
129
|
+
#
|
130
|
+
# #region Internal
|
131
|
+
# def myputs(text, pad)
|
132
|
+
# myprint("#{text}\n", pad)
|
133
|
+
# end
|
134
|
+
#
|
135
|
+
# def myprint(text, pad)
|
136
|
+
# if @use_curses
|
137
|
+
# if text.include?("\e")
|
138
|
+
# pieces = text.scan(/#{"\e"}\[(.+?)m([^#{"\e"}]+?)#{"\e"}\[0m|([^#{"\e"}]+)/)
|
139
|
+
# pieces.each { |v|
|
140
|
+
# if v[2].nil?
|
141
|
+
# pad.attron(get_format(v[0])) {
|
142
|
+
# pad << v[1]
|
143
|
+
# }
|
144
|
+
# else
|
145
|
+
# pad << v[2]
|
146
|
+
# end
|
147
|
+
# }
|
148
|
+
# else
|
149
|
+
# pad << text
|
150
|
+
# end
|
151
|
+
# else
|
152
|
+
# print text
|
153
|
+
# end
|
154
|
+
# end
|
155
|
+
#
|
156
|
+
# def update_max_l
|
157
|
+
# @max_l = [0, @bodies.count - @subpad_size].max
|
158
|
+
# end
|
159
|
+
#
|
160
|
+
# def update_subpad_size
|
161
|
+
# Curses::refresh
|
162
|
+
# @subpad_size = Curses::lines - @linesh - @linesf
|
163
|
+
# end
|
164
|
+
#
|
165
|
+
# def padh_refresh
|
166
|
+
# @padh.refresh(0, 0, 0, 0, @subpad_start - 1, Curses::cols - 1)
|
167
|
+
# end
|
168
|
+
#
|
169
|
+
# def padb_refresh
|
170
|
+
# @padb.refresh(@cur_l, 0, @subpad_start, 0, @subpad_start + @subpad_size - 1, Curses::cols - 1)
|
171
|
+
# end
|
172
|
+
#
|
173
|
+
# def padf_refresh
|
174
|
+
# @padf.refresh(0, 0, @subpad_start + [@subpad_size, @bodies.count].min, 0, @subpad_start + [@subpad_size, @bodies.count].min + @footers.count, Curses::cols - 1)
|
175
|
+
# end
|
176
|
+
#
|
177
|
+
# def update_scroll(force_refresh = false)
|
178
|
+
# if @ch == Curses::Key::UP
|
179
|
+
# @cur_l = [0, @cur_l - 1].max
|
180
|
+
# elsif @ch == Curses::Key::DOWN
|
181
|
+
# @cur_l = [@max_l, @cur_l + 1].min
|
182
|
+
# end
|
183
|
+
# @cur_l = [@cur_l, @max_l].min
|
184
|
+
# if @ch == Curses::Key::UP || @ch == Curses::Key::DOWN || force_refresh
|
185
|
+
# Curses::refresh
|
186
|
+
# padh_refresh
|
187
|
+
# padb_refresh
|
188
|
+
# padf_refresh
|
189
|
+
# end
|
190
|
+
# @cur_l
|
191
|
+
# end
|
192
|
+
#
|
193
|
+
# #endregion
|
194
|
+
#
|
195
|
+
# attr_reader :ch
|
196
|
+
# attr_accessor :bodies, :headers, :footers
|
197
|
+
# private :myputs, :myprint, :update_max_l, :update_subpad_size, :padh_refresh, :padb_refresh, :padf_refresh, :update_scroll
|
198
|
+
# end
|
199
|
+
#end
|
data/lib/everyday-cli-utils.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative 'everyday-cli-utils/version'
|
2
2
|
|
3
3
|
module EverydayCliUtils
|
4
|
-
AVAILABLE_MODULES = [:ask, :format, :format_safe, :histogram, :histogram_safe, :kmeans, :kmeans_safe, :maputil, :maputil_safe, :
|
4
|
+
AVAILABLE_MODULES = [:ask, :format, :format_safe, :histogram, :histogram_safe, :kmeans, :kmeans_safe, :maputil, :maputil_safe, :option]
|
5
5
|
MODULE_TO_RELATIVE = {
|
6
6
|
ask: 'everyday-cli-utils/ask',
|
7
7
|
format: 'everyday-cli-utils/format',
|
@@ -12,7 +12,6 @@ module EverydayCliUtils
|
|
12
12
|
kmeans_safe: 'everyday-cli-utils/safe/kmeans',
|
13
13
|
maputil: 'everyday-cli-utils/maputil',
|
14
14
|
maputil_safe: 'everyday-cli-utils/safe/maputil',
|
15
|
-
mycurses: 'everyday-cli-utils/mycurses',
|
16
15
|
option: 'everyday-cli-utils/option'
|
17
16
|
}
|
18
17
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: everyday-cli-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Henderson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: curses
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
description: A few CLI and general utilities. Includes a numbered-menu select loop
|
98
84
|
utility, a ANSI formatting escape code handler, a text-based histogram maker, k-means
|
99
85
|
and n-means (k-means with minimum optimal k) calculators, various collection utility
|