console_view_helper 0.0.2

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 +15 -0
  2. data/lib/console_view_helper.rb +162 -0
  3. metadata +59 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODQwZGVlN2QyY2I2MWJkNjQ1Yjk0Y2NhNDhlYTZlYTFmYTJkMmQwYQ==
5
+ data.tar.gz: !binary |-
6
+ NDAyNmUzYjZkZGFiNzA3MzkyOWJmMjdiNDY0NTFhN2RkMjI2ZWI3Zg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZmFiZGE2MmY2MjliMjU2NjgwZWU1Y2M0Y2IwNzAzZjk4NDUxMGZkMGVkYWU5
10
+ Nzg3ZTMxNjkxNDI0ZmFiY2Y5M2QzYmQ1ZTM3NGNiZjRlZTBmYTRiNDdhM2M2
11
+ YzU3ODVhOGZmYWI1ODY3NGM3Yzc0Njc3ZjQwNDBkZmI3MGRmODM=
12
+ data.tar.gz: !binary |-
13
+ MTJjOGM5OWY2Yjk1MTZhYTQ3YjgyMTVjYjdhNTgyNjA4Yzg3NzkzOWMzNTE0
14
+ ODA3NjI3ODYxOWZjZDcyNDNjOTU3ZjFlYzNhMzAyMWI4ZmJkYTUwMmExNDIz
15
+ N2FiYmExMzMyNDA5NDA0NmM2ZDljMTU3ZDM3ZDJiMDNmZWE2NDk=
@@ -0,0 +1,162 @@
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'
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: console_view_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Alfonso Mancilla
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colored
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
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
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/console_view_helper.rb
35
+ homepage: http://rubygems.org/gems/console_view_helper
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubyforge_project:
55
+ rubygems_version: 2.4.5
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: Helper methods to build simple and clean console application interfaces
59
+ test_files: []