cli-colorize 0.2.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.
Files changed (2) hide show
  1. data/lib/cli-colorize.rb +159 -0
  2. metadata +67 -0
@@ -0,0 +1,159 @@
1
+ #
2
+ # Author :: Chris St. John (<mailto:chris@stjohnstudios.com>)
3
+ # Date :: 08/02/2010
4
+ #
5
+
6
+ # A simple module for use when colorizing output to the terminal.
7
+ module CLIColorize
8
+
9
+ @@off = false
10
+ @@default_color = :blue
11
+
12
+ # ANSI control codes
13
+ # 0 Turn off all attributes
14
+ # 1 Set bright mode
15
+ # 4 Set underline mode
16
+ # 5 Set blink mode
17
+ # 7 Exchange foreground and background colors
18
+ # 8 Hide text (foreground color would be the same as background)
19
+ # 30 Black text
20
+ # 31 Red text
21
+ # 32 Green text
22
+ # 33 Yellow text
23
+ # 34 Blue text
24
+ # 35 Magenta text
25
+ # 36 Cyan text
26
+ # 37 White text
27
+ # 39 Default text color
28
+ # 40 Black background
29
+ # 41 Red background
30
+ # 42 Green background
31
+ # 43 Yellow background
32
+ # 44 Blue background
33
+ # 45 Magenta background
34
+ # 46 Cyan background
35
+ # 47 White background
36
+ # 49 Default background color
37
+
38
+ CTRLSTR_START = "\033["
39
+ CTRLSTR_END = "\033[0m"
40
+ CTRLSTR_DELIM = 'm'
41
+ CONFIG = {
42
+ :reset => '0',
43
+ :bright => '1',
44
+ :underline => '4',
45
+ :blink => '5',
46
+ :swap => '7',
47
+ :hide => '8'
48
+ }
49
+ SET_FORE = {
50
+ :black => '30',
51
+ :red => '31',
52
+ :green => '32',
53
+ :yellow => '33',
54
+ :blue => '34',
55
+ :magenta => '35',
56
+ :cyan => '36',
57
+ :white => '37',
58
+ :default => '39'
59
+ }
60
+ SET_BACK = {
61
+ :black => '40',
62
+ :red => '41',
63
+ :green => '42',
64
+ :yellow => '43',
65
+ :blue => '44',
66
+ :magenta => '45',
67
+ :cyan => '46',
68
+ :white => '47',
69
+ :default => '49'
70
+ }
71
+
72
+ # Set control characters around text to colorize output to the terminal.
73
+ def CLIColorize.colorize(text, color=nil)
74
+ unless color.is_a? Hash
75
+ color = @@default_color if color.nil?
76
+ "#{CTRLSTR_START+SET_FORE[color.to_sym]+CTRLSTR_DELIM}#{text}#{CTRLSTR_END}"
77
+ else
78
+ args = []
79
+ args << SET_FORE[color[:foreground].to_sym] unless color[:foreground].nil?
80
+ args << SET_BACK[color[:background].to_sym] unless color[:background].nil?
81
+ args << CONFIG[color[:config].to_sym] unless color[:config].nil?
82
+ control_string = args.join(';')
83
+ "#{CTRLSTR_START+control_string+CTRLSTR_DELIM}#{text}#{CTRLSTR_END}"
84
+ end
85
+ end
86
+
87
+ # Instance method that exposes the class method colorize to classes that `include 'CLIColorize'`
88
+ def colorize(text, color=nil)
89
+ CLIColorize.colorize(text, color)
90
+ end
91
+
92
+ # Call STDOUT.puts with the colorized text.
93
+ def CLIColorize.puts(text, color=nil)
94
+ STDOUT.puts CLIColorize.colorize(text, color)
95
+ end
96
+
97
+ # Call STDOUT.print with the colorized text.
98
+ def CLIColorize.print(text, color=nil)
99
+ STDOUT.print CLIColorize.colorize(text, color)
100
+ end
101
+
102
+ # Use safe_colorize in conjunction with CLIColorize.off and CLIColorize.on to conditionally
103
+ # determine whether or not output will be given the control characters for colorization.
104
+ # This is designed to work with a command-line switch to the script that uses this module.
105
+ def CLIColorize.safe_colorize(text, color=nil)
106
+ return text if @@off
107
+ colorize(text, color)
108
+ end
109
+
110
+ # Instance method that exposes the class method safe_colorize to classes that `include 'CLIColorize'`
111
+ def safe_colorize(text, color=nil)
112
+ CLIColorize.safe_colorize(text, color)
113
+ end
114
+
115
+ # Makes the safe_colorize method return text with colorization control codes. This is the default state.
116
+ def safe_colorize_active
117
+ CLIColorize.on
118
+ end
119
+
120
+ # Makes the safe_colorize method return text without colorization control codes.
121
+ def safe_colorize_deactive
122
+ CLIColorize.off
123
+ end
124
+
125
+ # Call STDOUT.puts with the colorized text.
126
+ def CLIColorize.safe_puts(text, color=nil)
127
+ STDOUT.puts CLIColorize.safe_colorize(text, color)
128
+ end
129
+
130
+ # Call STDOUT.print with the colorized text.
131
+ def CLIColorize.safe_print(text, color=nil)
132
+ STDOUT.print CLIColorize.safe_colorize(text, color)
133
+ end
134
+
135
+ # Instance method that exposes the class method safe_puts to classes that `include 'CLIColorize'`
136
+ def safe_puts(text, color=nil)
137
+ CLIColorize.safe_puts(text, color)
138
+ end
139
+
140
+ # Instance method that exposes the class method safe_puts to classes that `include 'CLIColorize'`
141
+ def safe_print(text, color=nil)
142
+ CLIColorize.safe_print(text, color)
143
+ end
144
+
145
+ def CLIColorize.default_color; @@default_color; end
146
+ def CLIColorize.default_color=(color)
147
+ @@default_color = color.to_sym
148
+ end
149
+ def default_color; CLIColorize.default_color; end
150
+ def default_color=(color)
151
+ CLIColorize.default_color=(color)
152
+ end
153
+
154
+ private
155
+ # Call CLIColorize.off to turn off colorizing (for instance to make the output safe
156
+ # for evaluation or for output sometimes not headed to the terminal).
157
+ def CLIColorize.off; @@off = true; end
158
+ def CLIColorize.on; @@off = false; end
159
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cli-colorize
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
+ platform: ruby
12
+ authors:
13
+ - Chris St. John
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-29 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: The cli-colorize gem is a command-line interface colorization library.
23
+ email: chris@stjohnstudios.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/cli-colorize.rb
32
+ has_rdoc: true
33
+ homepage: https://github.com/stjohncj/cli-colorize
34
+ licenses: []
35
+
36
+ post_install_message:
37
+ rdoc_options: []
38
+
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.3.7
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: command-line interface colorization library
66
+ test_files: []
67
+