console_view_helper 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/console_view_helper.rb +201 -162
  3. metadata +17 -7
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODQwZGVlN2QyY2I2MWJkNjQ1Yjk0Y2NhNDhlYTZlYTFmYTJkMmQwYQ==
4
+ N2I4ZWY4MmQ5NjIwYWI1NWJkZjUzZWJhMTE3OGM1YTk3NmJjN2QyMg==
5
5
  data.tar.gz: !binary |-
6
- NDAyNmUzYjZkZGFiNzA3MzkyOWJmMjdiNDY0NTFhN2RkMjI2ZWI3Zg==
6
+ OWQ3NWU0ZGRjZDVkNzdiYjEzNmE3YmU3NTkwNDZiM2Q1MmU5ZWU0Zg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmFiZGE2MmY2MjliMjU2NjgwZWU1Y2M0Y2IwNzAzZjk4NDUxMGZkMGVkYWU5
10
- Nzg3ZTMxNjkxNDI0ZmFiY2Y5M2QzYmQ1ZTM3NGNiZjRlZTBmYTRiNDdhM2M2
11
- YzU3ODVhOGZmYWI1ODY3NGM3Yzc0Njc3ZjQwNDBkZmI3MGRmODM=
9
+ NmEwYjljOWZlZjUwZGRhOGU1NTU3NjNhNzk4Yzk2NTRkY2E3M2U4YjIwZTRl
10
+ N2RiNDA0OGFhMDRlYTA1NWJiODAxNWY2ZGI5N2U1ZDk2YTUwMTI0OTI5YjM4
11
+ NzEzYjQ5YmFhYWZkNzAzZTQzYjYyYTQ5ZmJiYmE3OTUwNWEyZjk=
12
12
  data.tar.gz: !binary |-
13
- MTJjOGM5OWY2Yjk1MTZhYTQ3YjgyMTVjYjdhNTgyNjA4Yzg3NzkzOWMzNTE0
14
- ODA3NjI3ODYxOWZjZDcyNDNjOTU3ZjFlYzNhMzAyMWI4ZmJkYTUwMmExNDIz
15
- N2FiYmExMzMyNDA5NDA0NmM2ZDljMTU3ZDM3ZDJiMDNmZWE2NDk=
13
+ MTZlZjdmZmUzNDM2OGJjZjZjZDRmZWMwZWI0NjIxOGJjN2U5OTMwY2NlOWE3
14
+ YzNhYWY2NGUxYmIxYmI2MmE4NWE0MWUwNDY4N2VjYmZiM2Y4Y2JkZWEzYTBk
15
+ ZWRkZWIxNjFmOTExNTIzODQ2MzU4ZGYwMDUwMDZjMTNhODIyZGQ=
@@ -1,162 +1,201 @@
1
- # Encoding: utf-8
2
-
3
- # Requires
4
- require 'io/console'
5
- require 'colored'
6
-
7
- module ConsoleViewHelper
8
-
9
- #########################
10
- # GENERAL #
11
- #########################
12
-
13
- # Indent n times
14
- def idt(n = 1)
15
- "\t" * n
16
- end
17
-
18
- # Asterisk n times
19
- def astk(n = 1)
20
- '*' * n
21
- end
22
-
23
- # New n lines
24
- def nl(n = 1)
25
- "\n" * n
26
- end
27
-
28
- # Hyphen n times
29
- def hyphen(n = 1)
30
- '-' * n
31
- end
32
-
33
- # Underscore n times
34
- def underscore(n = 1)
35
- '_' * n
36
- end
37
-
38
- # Bar n times
39
- def bar(n = 1)
40
- '|' * n
41
- end
42
-
43
- # Whitespace n times
44
- def whites(n = 1)
45
- ' ' * n
46
- end
47
-
48
- # Align text
49
- def align(text, size, direction = :left, append = ' ')
50
- case direction
51
- when :right
52
- text.rjust(size, append)
53
- when :center
54
- text.center(size, append)
55
- else
56
- text.ljust(size, append)
57
- end
58
- end
59
-
60
- # 'print' text indented n times
61
- def printi(text, n = 1)
62
- print idt(n) + text
63
- end
64
-
65
- # 'put' text indented n times
66
- def putsi(text, n = 1)
67
- puts idt(n) + text
68
- end
69
-
70
- # Display a fake loading effect
71
- def loading_effect(n = 3, opts = {})
72
- delay = opts[:delay] || 0.3
73
- symbol = opts[:symbol] || '.'
74
- 1.upto(n) do
75
- print symbol
76
- sleep delay
77
- end
78
- nil
79
- end
80
-
81
- # Explain the action being performed
82
- def explain(doing_txt, done_txt, n = 1, &block)
83
- printi doing_txt, n
84
- loading_effect
85
- result = block.call
86
- puts done_txt
87
- result
88
- end
89
-
90
- # Highlight text with color
91
- def colorize(text, status = :normal)
92
- case status
93
- when :success
94
- text.green
95
- when :error
96
- text.red
97
- when :warning
98
- text.yellow
99
- when :neutral
100
- text.blue
101
- else
102
- text.white
103
- end
104
- end
105
-
106
- #########################
107
- # COMPONENTS #
108
- #########################
109
-
110
- # Banner
111
- def banner(title, opts = {})
112
- subtitle = opts[:subtitle]
113
- base_width = (subtitle && subtitle.length > title.length ? subtitle.length : title.length) + 4
114
- width = opts[:width] || base_width
115
- n = opts[:indent] || 0
116
- banner = idt(n) + astk(width + 2) + nl
117
- banner << idt(n) + astk + whites(width) + astk + nl
118
- banner << idt(n) + astk + align(title, width, :center) + astk + nl
119
- banner << idt(n) + astk + align(subtitle, width, :center) + astk + nl if subtitle
120
- banner << idt(n) + astk + whites(width) + astk + nl
121
- banner << idt(n) + astk(width + 2) + nl
122
- end
123
-
124
- # User input
125
- def input(label = '>>', n = 0)
126
- printi label + whites, n
127
- gets.strip.chomp
128
- end
129
-
130
- # User input, but hidden
131
- def hidden_input(label = '>>', n = 0)
132
- printi label + whites, n
133
- STDIN.noecho(&:gets).strip.chomp
134
- end
135
-
136
- # ---
137
- module_function :idt, :astk, :nl, :hyphen, :underscore, :whites, :align, :printi, :putsi, :loading_effect, :explain, :colorize, :banner, :input, :hidden_input
138
- end
139
-
140
-
141
- # -------------------------- CONSOLE VIEW HELPER ------------------------------
142
- # - Helper methods to build simple and clean console application interfaces.
143
-
144
- # --- HOW TO USE ---
145
- # - Require and optionally include the module in your view file
146
- # require 'cosole_view_helper'
147
- # include ConsoleViewHelper
148
-
149
- # - When just required call the methods from the module name
150
- # ConsoleViewHelper.input 'username:'
151
-
152
- # - When included call the methods directly
153
- # input 'username:'
154
-
155
- # --- WINDOW USERS ---
156
- # - In order to use the 'colorize' method you will need the 'win32console' gem.
157
-
158
- # - Get it:
159
- # gem install 'win32console'
160
-
161
- # - Require it:
162
- # require 'win32console'
1
+ # Encoding: utf-8
2
+
3
+ # Requires
4
+ require 'io/console'
5
+ require 'colored'
6
+
7
+ module ConsoleViewHelper
8
+
9
+ #########################
10
+ # GENERAL #
11
+ #########################
12
+
13
+ # Indent n times
14
+ def idt(n = 1)
15
+ "\t" * n
16
+ end
17
+
18
+ # Asterisk n times
19
+ def astk(n = 1)
20
+ '*' * n
21
+ end
22
+
23
+ # New n lines
24
+ def nl(n = 1)
25
+ "\n" * n
26
+ end
27
+
28
+ # Hyphen n times
29
+ def hyphen(n = 1)
30
+ '-' * n
31
+ end
32
+
33
+ # Underscore n times
34
+ def underscore(n = 1)
35
+ '_' * n
36
+ end
37
+
38
+ # Bar n times
39
+ def bar(n = 1)
40
+ '|' * n
41
+ end
42
+
43
+ # Whitespace n times
44
+ def whites(n = 1)
45
+ ' ' * n
46
+ end
47
+
48
+ # Align text
49
+ def align(text, size, direction = :left, append = ' ')
50
+ case direction
51
+ when :right
52
+ text.rjust(size, append)
53
+ when :center
54
+ text.center(size, append)
55
+ else
56
+ text.ljust(size, append)
57
+ end
58
+ end
59
+
60
+ # 'print' text indented n times
61
+ def printi(text, n = 1)
62
+ print idt(n) + text
63
+ end
64
+
65
+ # 'put' text indented n times
66
+ def putsi(text, n = 1)
67
+ puts idt(n) + text
68
+ end
69
+
70
+ # Display a fake loading effect
71
+ def loading_effect(n = 3, opts = {})
72
+ delay = opts[:delay] || 0.3
73
+ symbol = opts[:symbol] || '.'
74
+ 1.upto(n) do
75
+ print symbol
76
+ sleep delay
77
+ end
78
+ nil
79
+ end
80
+
81
+ # Explain the action being performed
82
+ def explain(doing_txt, done_txt = '', n = 1, &block)
83
+ printi doing_txt, n
84
+ loading_effect
85
+ result = block.call
86
+ puts done_txt
87
+ result
88
+ end
89
+
90
+ # Highlight text with color
91
+ def colorize(text, status = :normal)
92
+ case status
93
+ when :success
94
+ text.green
95
+ when :error
96
+ text.red
97
+ when :warning
98
+ text.yellow
99
+ when :neutral
100
+ text.blue
101
+ else
102
+ text.white
103
+ end
104
+ end
105
+
106
+ #########################
107
+ # COMPONENTS #
108
+ #########################
109
+
110
+ # Banner
111
+ def banner(title, opts = {})
112
+ n = opts[:indent] || 0
113
+ symbol = opts[:symbol] || '*'
114
+ subtitle = opts[:subtitle]
115
+ base_width = (subtitle && subtitle.length > title.length ? subtitle.length : title.length) + 4
116
+ width = opts[:width] || base_width
117
+ raise ArgumentError.new("Specified width can't be minor thant #{base_width}. Increase or remove the width value.") if width < base_width
118
+ banner = idt(n) + (symbol * (width + 2)) + nl
119
+ banner << idt(n) + symbol + whites(width) + symbol + nl
120
+ banner << idt(n) + symbol + align(title, width, :center) + symbol + nl
121
+ banner << idt(n) + symbol + align(subtitle, width, :center) + symbol + nl if subtitle
122
+ banner << idt(n) + symbol + whites(width) + symbol + nl
123
+ banner << idt(n) + (symbol * (width + 2)) + nl
124
+ end
125
+
126
+ # Table
127
+ def table(columns, opts = {})
128
+ raise ArgumentError.new('Pass table columns as an array of arrays') unless columns.is_a?(Array) && columns.select { |item| !item.is_a?(Array) }.empty?
129
+ # Set options
130
+ n = opts[:indent] || 0
131
+ cell_width = opts[:cell_width] || 12
132
+ cell_separator = opts[:cell_separator] || bar
133
+ cell_border = opts[:cell_border] || hyphen
134
+ if opts[:header]
135
+ opts[:header].each_with_index do |th, i|
136
+ columns.push [] unless columns[i]
137
+ columns[i].unshift(th)
138
+ end
139
+ end
140
+ td_width = cell_width - 2
141
+ tr_width = (cell_width * columns.length) + columns.length + 1
142
+
143
+ # Build table
144
+ pos, table = 0, ''
145
+ begin
146
+ tr_empty_elems = 0
147
+ tr_str = idt(n) + (cell_border * tr_width) + nl + cell_separator
148
+ columns.each do |column|
149
+ td = if column[pos]
150
+ column[pos]
151
+ else
152
+ tr_empty_elems += 1
153
+ ''
154
+ end
155
+ td = align(td[0..td_width], cell_width, :center)
156
+ tr_str << td + cell_separator
157
+ end
158
+ tr_str << nl
159
+ table << tr_str if tr_empty_elems != columns.length
160
+ pos += 1
161
+ end while tr_empty_elems != columns.length
162
+ table << idt(n) + (cell_border * tr_width)
163
+ end
164
+
165
+
166
+ # List (unordered)
167
+ def list(items, opts = {})
168
+ raise ArgumentError.new('Pass list items in an array.') unless items.is_a? Array
169
+ n = opts[:indent] || 0
170
+ li_gap = opts[:li_gap] || 1
171
+ symbol = opts[:symbol] || '•'
172
+ list = idt(n)
173
+ items.each_with_index do |li, i|
174
+ symbol = opts[:ordered] ? "#{i + 1}." : symbol
175
+ list << symbol + ' ' + li + nl(li_gap) + idt(n)
176
+ end
177
+ list
178
+ end
179
+ alias_method :ulist, :list
180
+
181
+ # Ordered List
182
+ def olist(items, opts = {})
183
+ list items, opts.merge(ordered: true)
184
+ end
185
+ alias_method :menu, :olist
186
+
187
+ # User input
188
+ def input(label = '>>', n = 0)
189
+ printi label + whites, n
190
+ gets.strip.chomp
191
+ end
192
+
193
+ # User input, but hidden
194
+ def hidden_input(label = '>>', n = 0)
195
+ printi label + whites, n
196
+ STDIN.noecho(&:gets).strip.chomp
197
+ end
198
+
199
+ # ---
200
+ module_function :idt, :astk, :nl, :hyphen, :underscore, :bar, :whites, :align, :printi, :putsi, :loading_effect, :explain, :colorize, :banner, :menu, :table, :list, :olist, :ulist, :input, :hidden_input
201
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_view_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alfonso Mancilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-06 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored
@@ -24,15 +24,24 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.2'
27
- description: Set of methods and components I use commonly when building console application
28
- interfaces.
29
- email: almancill@gmail.com
27
+ description: ! 'The console_view_helper library is used to build clean and beautiful
28
+ console application interfaces.
29
+
30
+ Customizable Components such as banners, tables, menus, lists, text inputs, hidden
31
+ text inputs and
32
+
33
+ methods as colorize, putsi, printi, align, explain, among others,
34
+
35
+ will help you build a good console application interface with less code and in less
36
+ time.'
37
+ email:
38
+ - almancill@gmail.com
30
39
  executables: []
31
40
  extensions: []
32
41
  extra_rdoc_files: []
33
42
  files:
34
43
  - lib/console_view_helper.rb
35
- homepage: http://rubygems.org/gems/console_view_helper
44
+ homepage: https://github.com/ammancilla/console_view_helper
36
45
  licenses:
37
46
  - MIT
38
47
  metadata: {}
@@ -55,5 +64,6 @@ rubyforge_project:
55
64
  rubygems_version: 2.4.5
56
65
  signing_key:
57
66
  specification_version: 4
58
- summary: Helper methods to build simple and clean console application interfaces
67
+ summary: Set of components and methods used to build clean and beautiful console application
68
+ interfaces.
59
69
  test_files: []