term 0.9.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.
@@ -0,0 +1,126 @@
1
+ # coding: utf-8
2
+
3
+ # @author {mailto:cuihaiqin@gmail.com cuihq}
4
+ class String
5
+ # string formatting.
6
+ # see ANSI/VT100 Control sequences.
7
+
8
+ # reset all attributes.
9
+ #
10
+ # @return [String] formatting string
11
+ def reset
12
+ "\e[0m#{self}\e[0m"
13
+ end
14
+
15
+ # string styles.
16
+ # see ANSI/VT100 Control sequences.
17
+ STYLE = {
18
+ bold: 1,
19
+ dim: 2,
20
+ italicized: 3,
21
+ underlined: 4,
22
+ blink: 5,
23
+ inverse: 7,
24
+ hidden: 8,
25
+ crossed_out: 9
26
+ }.freeze
27
+
28
+ # @!method bold
29
+ # blod string.
30
+ #
31
+ # @return [String] formatting string
32
+
33
+ # @!method reset_bold
34
+ # reset bold string.
35
+ #
36
+ # @see bold
37
+ # @return [String] formatting string
38
+
39
+ # @!method dim
40
+ # dim string.
41
+ #
42
+ # @return [String] formatting string
43
+
44
+ # @!method reset_dim
45
+ # reset dim string.
46
+ #
47
+ # @see dim
48
+ # @return [String] formatting string
49
+
50
+ # @!method italicized
51
+ # italicized string.
52
+ #
53
+ # @return [String] formatting string
54
+
55
+ # @!method reset_italicized
56
+ # reset italicized string.
57
+ #
58
+ # @see italicized
59
+ # @return [String] formatting string
60
+
61
+ # @!method underlined
62
+ # underlined string.
63
+ #
64
+ # @return [String] formatting string
65
+
66
+ # @!method reset_underlined
67
+ # reset underlined string.
68
+ #
69
+ # @see underlined
70
+ # @return [String] formatting string
71
+
72
+ # @!method blink
73
+ # blink string.
74
+ #
75
+ # does not work with most of the terminal emulators
76
+ # @note works in the tty and XIO.
77
+ # @return [String] formatting string
78
+
79
+ # @!method reset_blink
80
+ # reset blink string.
81
+ #
82
+ # @see blink
83
+ # @return [String] formatting string
84
+
85
+ # @!method inverse
86
+ # nvert the foreground and background colors.
87
+ #
88
+ # @return [String] formatting string
89
+
90
+ # @!method reset_inverse
91
+ # reset inverse string.
92
+ #
93
+ # @see inverse
94
+ # @return [String] formatting string
95
+
96
+ # @!method hidden
97
+ # hidden string.
98
+ #
99
+ # @note usefull for passwords.
100
+ # @return [String] formatting string
101
+
102
+ # @!method reset_hidden
103
+ # reset hidden string.
104
+ #
105
+ # @see hidden
106
+ # @return [String] formatting string
107
+
108
+ # @!method crossed_out
109
+ # crossed out string.
110
+ #
111
+ # @return [String] formatting string
112
+
113
+ # @!method reset_crossed_out
114
+ # reset crossed out string.
115
+ #
116
+ # @see crossed_out
117
+ # @return [String] formatting string
118
+ STYLE.each do |name, value|
119
+ define_method(name) do
120
+ "\e[#{value}m#{self}\e[0m"
121
+ end
122
+ define_method("reset_#{name}") do
123
+ "\e[#{10 + value}m#{self}\e[0m"
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,76 @@
1
+ # cording: utf-8
2
+
3
+ require 'unicode/display_width'
4
+
5
+ # @author {mailto:cuihaiqin@gmail.com cuihq}
6
+ class IO
7
+ # Table Component.
8
+ class Table
9
+ # the table border character.
10
+ BORDER = {
11
+ sep: '│',
12
+ line: '-',
13
+ top: ['┌', '┬', '┐'],
14
+ mid: ['├', '┼', '┤'],
15
+ bot: ['└', '┴', '┘']
16
+ }.freeze
17
+
18
+ def initialize
19
+ @data = []
20
+ @size = []
21
+ @column_width = []
22
+ end
23
+
24
+ # add row to the table
25
+ #
26
+ # @param row [Array] the row to the table
27
+ # @return [self] table self
28
+ def <<(row)
29
+ @data << row.map(&:to_s)
30
+ @size << row.map { |cell| cell.to_s.display_width }
31
+ self
32
+ end
33
+
34
+ # display table.
35
+ #
36
+ # @return [String] the table
37
+ def to_s
38
+ @column_width = calc_column_width
39
+ res = get_border_row(BORDER[:top])
40
+ res << @data.map { |row| get_content_row(row, BORDER[:sep]) }
41
+ .join(get_border_row(BORDER[:mid]))
42
+ res << get_border_row(BORDER[:bot])
43
+ end
44
+
45
+ private
46
+
47
+ # get column width.
48
+ def calc_column_width
49
+ @size.transpose.map(&:max)
50
+ end
51
+
52
+ # get border row.
53
+ def get_border_row(border)
54
+ left, mid, right = border
55
+ line = @column_width.map { |size| BORDER[:line] * size }.join(mid)
56
+ "#{left}#{line}#{right}#{$/}"
57
+ end
58
+
59
+ # get content row.
60
+ def get_content_row(row, sep)
61
+ res = ''
62
+ row.each_with_index do |cell, column|
63
+ size = @column_width[column] - cell.display_width
64
+ res << "#{cell}#{' ' * size}#{sep}"
65
+ end
66
+ "#{sep}#{res}#{$/}"
67
+ end
68
+ end
69
+
70
+ # get table component.
71
+ #
72
+ # @return [Table] the table instance
73
+ def self.table
74
+ IO::Table.new
75
+ end
76
+ end
@@ -0,0 +1,6 @@
1
+ # cording: utf-8
2
+
3
+ module Term
4
+ # the version of term.
5
+ VERSION = '0.9.1'
6
+ end
@@ -0,0 +1,50 @@
1
+ # cording: utf-8
2
+
3
+ require 'io/console'
4
+
5
+ # @author {mailto:cuihaiqin@gmail.com cuihq}
6
+ class IO
7
+ # set icon name and window title
8
+ #
9
+ # @example set the terminal icon name and window title
10
+ # IO.title = 'window title'
11
+ # @return [Term] Term self.
12
+ def self.title=(text = '')
13
+ print "\e]0;#{text}\a"
14
+ self
15
+ end
16
+
17
+ # set icon name
18
+ #
19
+ # @example set the terminal icon name
20
+ # IO.icon_name = 'icon title'
21
+ # @return [Term] Term self.
22
+ def self.icon_name=(text = '')
23
+ print "\e]1;#{text}\a"
24
+ self
25
+ end
26
+
27
+ # set window title
28
+ #
29
+ # @example set the terminal window title
30
+ # IO.window_title = 'window title'
31
+ # @return [Term] Term self.
32
+ def self.window_title=(text = '')
33
+ print "\e]2;#{text}\a"
34
+ self
35
+ end
36
+
37
+ # get window width.
38
+ #
39
+ # @return [Integer] the window width
40
+ def self.width
41
+ $stdout.winsize[1]
42
+ end
43
+
44
+ # get window height.
45
+ #
46
+ # @return [Integer] the window height
47
+ def self.height
48
+ $stdout.winsize[0]
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: term
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - cuihq
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: artii
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rqrcode
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: unicode-display_width
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rouge
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rb-readline
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubycritic
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: reek
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ description: A toolkit of Terminal. Rich support for color, mouse, and lightweight
196
+ component.
197
+ email: cuihaiqin@gmail.com
198
+ executables: []
199
+ extensions: []
200
+ extra_rdoc_files: []
201
+ files:
202
+ - LICENSE.txt
203
+ - README.md
204
+ - lib/term.rb
205
+ - lib/term/bell.rb
206
+ - lib/term/checkbox.rb
207
+ - lib/term/code.rb
208
+ - lib/term/color.rb
209
+ - lib/term/confirm.rb
210
+ - lib/term/cursor.rb
211
+ - lib/term/font.rb
212
+ - lib/term/input.rb
213
+ - lib/term/password.rb
214
+ - lib/term/process_bar.rb
215
+ - lib/term/qrcode.rb
216
+ - lib/term/redio.rb
217
+ - lib/term/style.rb
218
+ - lib/term/table.rb
219
+ - lib/term/version.rb
220
+ - lib/term/window.rb
221
+ homepage: http://github.com/cuihq/term
222
+ licenses:
223
+ - MIT
224
+ metadata: {}
225
+ post_install_message:
226
+ rdoc_options: []
227
+ require_paths:
228
+ - lib
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: 2.0.0
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ requirements: []
240
+ rubyforge_project:
241
+ rubygems_version: 2.6.12
242
+ signing_key:
243
+ specification_version: 4
244
+ summary: A toolkit of Terminal.
245
+ test_files: []