console_view_helper 0.0.2 → 0.0.3

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.
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: []