term-colorizer 0.1.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmYwMTFhZjFhNWEzZWEzZTI3MTc0YzViNWExYjFmMzIxNWRjODhlMA==
4
+ OWQ4ZTgwNWEyNGZmYmVlMGMyYTU5ZTIzOTJiNzEyYzg5MmEzNDJkZQ==
5
5
  data.tar.gz: !binary |-
6
- ZjI3NmY3NDU2OGViNzMzMTk2ZDAzNDdlN2QxZDY1ZTk4YjU5ODU5MA==
6
+ NmIyNGJiODRiMjhiMDYxMzM5ZTkwOGU0ZGM0ZDAxMGI2MDYwZTM4OQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MWJjZmM4NTExOWEzOGNhNjBhM2I3ZWE4YjVhODBjZjlhZjkwZTJmZTFjNTEz
10
- YTM0MzBhMDE0ZDU3MTUxMDZmYzRkM2YzYTUzZmE0ZjEyMjBkMzI2MjU2Y2Vm
11
- YTA2MDJhNmQwZTc3ZDlhMWQ5ZmI5ZWYxNWM0ZGRkZTk3ZjBiODQ=
9
+ MzUyMThjYjliNGE2NmQ0YTA4NjE1NTU4N2M3MDZiYzUzNDFjYWUxN2IxMjk1
10
+ NjFlOWRlNDZlMjRiNTRjZmEyYWUyNGM1M2M4NTJhOTdiOTMwNGU4YTk2ZmNj
11
+ ZWY5MTg2NTY5YjQyMmMyMTAyZDlkNWVlNThiYjBmZDg3NDA4YjI=
12
12
  data.tar.gz: !binary |-
13
- OGYzYmRjY2FmNDk2ZTljNmVlYWUyMThkYmFjMWJjNzUyMWUwOTk3NzM5Yzkx
14
- OWM5OGIwOThkMjA4ZGU3ZmMwNGE3ZWU3ZmFmN2ZkYWQyMDI5OTljYzNjMmMy
15
- M2U4MWI5OGNkYTU0YmMzNjlmMDUyYTA4ZTAyMTY3YzM2MmVhYWU=
13
+ ODdiZmM2MmUxMWNjNjg0ZjE2MGZkOWUwYjgwY2JlOTI4YTg0MGM3ZmY4MDAy
14
+ NGQ5ODk1NDgxZWRkZTA5MmM1OGU1MDUyZjhlZWNjNDFkMzYyZThjMTJjNTU2
15
+ N2RhZmUwZWNmNDQwNDhmYTI5Mjg4OWUxODc4NjJkZTNkYjY2NGY=
@@ -1,5 +1,4 @@
1
1
  rvm:
2
- - 1.8.7
3
2
  - 1.9.3
4
3
  - 2.0.0
5
4
  - jruby-19mode
@@ -1,7 +1,21 @@
1
- ### 0.1.4 (Next Release)
1
+ ### 0.2.2 (Next Release)
2
2
 
3
3
  * Your contribution here.
4
4
 
5
+ ### 0.2.1 (8/25/2013)
6
+
7
+ * Nothing special added, just updated readme! ;-) - [@vishaltelangre](https://github.com/vishaltelangre).
8
+ * Stable release till date.
9
+
10
+ ### 0.2.0 (8/25/2013)
11
+
12
+ * NOTE: This version had been mistakenly yanked by me.
13
+ * Added background color methods, see available background_methods using `bg_color_methods` - [@vishaltelangre](https://github.com/vishaltelangre).
14
+ * Added bonus methods such as `underline`, and `strikethrough`. - [@vishaltelangre](https://github.com/vishaltelangre).
15
+ * Added reset methods such as `no_color`, `no_bg_color`, `no_underline`, `no_strikethrough`, `plain_text`, `reset_fancyness` - [@vishaltelangre](https://github.com/vishaltelangre).
16
+ * Added `fancy_color_methods` which is alias of `term_colorizer_methods` to see all public methods availed by term-colorizer gem. - [@vishaltelangre](https://github.com/vishaltelangre).
17
+ * Added a lot many test cases for testing scenarios caused by implementation of new features. Run `rspec` command to run the tests. - [@vishaltelangre](https://github.com/vishaltelangre).
18
+
5
19
  ### 0.1.3 (7/24/2013)
6
20
 
7
21
  * Added `color_methods` method to see avialable color methods. Also added more rspec test cases - [@vishaltelangre](https://github.com/vishaltelangre).
data/README.md CHANGED
@@ -6,7 +6,7 @@ Term::Colorizer
6
6
 
7
7
  Print colorized strings on terminal (Useful for printing fancy logs)
8
8
 
9
- ## Usage
9
+ ## Installation
10
10
 
11
11
  Install gem by using following command:
12
12
 
@@ -18,23 +18,62 @@ or add it to your Gemfile as:
18
18
  gem 'term-colorizer', require: 'term-colorizer'
19
19
  ```
20
20
 
21
- and use it as:
21
+ ## Usage
22
22
 
23
23
  ``` ruby
24
24
  "Duck can quack".green
25
25
  # => "\e[32mDuck can quack\e[0m"
26
26
 
27
- puts "Wow, that's really " + "hot!".bright_red
27
+ puts "Wow, that's really".underline + " cool ".black.strikethrough + "hot!".bg_red.bright_yellow
28
28
  # guess what it will do?
29
29
  ```
30
30
 
31
- To know avaialable color methods:
31
+ To see all accessible methods provided by term-colorizer, use:
32
+
33
+ ```ruby
34
+ >> "Hello".term_colorizer_methods
35
+ => [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :bright_black, :bright_red, :bright_green, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white, :bg_black, :bg_red, :bg_green, :bg_yellow, :bg_blue, :bg_magenta, :bg_cyan, :bg_white, :underline, :strikethrough, :term_colorizer_methods, :fancy_color_methods, :no_underline, :no_strikethrough, :no_color, :no_bg_color, :plain_text, :reset_fancyness]
36
+ ```
37
+
38
+
39
+ To see available color methods only:
40
+
41
+ ```ruby
42
+ >> "Hello".color_methods
43
+ => [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white]
44
+ ```
45
+
46
+
47
+ To see available bright (bold) color methods only:
48
+
32
49
  ```ruby
33
- "Hello world!".color_methods
34
- # => [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :bright_black, :bright_red, :bright_green, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white]
50
+ >> "Hello".bright_color_methods
51
+ => [:bright_black, :bright_red, :bright_green, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white]
35
52
  ```
36
53
 
37
- :)
54
+
55
+ To see available background color methods only:
56
+
57
+ ```ruby
58
+ >> "Hello".bg_color_methods
59
+ => [:bg_black, :bg_red, :bg_green, :bg_yellow, :bg_blue, :bg_magenta, :bg_cyan, :bg_white]
60
+ ```
61
+
62
+ ## Screenshots
63
+
64
+ ![term-colorizer-screenshot-1!](https://raw.github.com/vishaltelangre/term-colorizer/master/screenshot_1.png)
65
+
66
+ And, for sake -- also added bunch of reset methods, viz. `plain_text`, `reset_fancyness`, `no_color`, `no_bg_color`, `no_underline`, `no_strikethrough`.
67
+ You can use 'em as:
68
+
69
+ ```ruby
70
+ >> "That's it, boy!".green.bg_yellow.plain_text
71
+ => "That's it, boy!"
72
+ ```
73
+
74
+ ![term-colorizer-screenshot-2!](https://raw.github.com/vishaltelangre/term-colorizer/master/screenshot_2.png)
75
+
76
+ :yum:
38
77
 
39
78
  ## Contributing
40
79
 
@@ -42,6 +81,7 @@ You're encouraged to contribute to this gem.
42
81
 
43
82
  * Fork this project.
44
83
  * Make changes, write tests.
84
+ * Report bugs, comment on and close open issues.
45
85
  * Updated [CHANGELOG](CHANGELOG.md).
46
86
  * Make a pull request, bonus points for topic branches.
47
87
 
@@ -1,50 +1,170 @@
1
1
  module Term
2
2
  module Colorizer
3
- TERM_COLORS = {
4
- :black => "\e[30mSTR\e[0m",
5
- :red => "\e[31mSTR\e[0m",
6
- :green => "\e[32mSTR\e[0m",
7
- :yellow => "\e[33mSTR\e[0m",
8
- :blue => "\e[34mSTR\e[0m",
9
- :magenta => "\e[35mSTR\e[0m",
10
- :cyan => "\e[36mSTR\e[0m",
11
- :white => "\e[37mSTR\e[0m",
12
- :bright_black => "\e[1m\e[30mSTR\e[0m",
13
- :bright_red => "\e[1m\e[31mSTR\e[0m",
14
- :bright_green => "\e[1m\e[32mSTR\e[0m",
15
- :bright_yellow => "\e[1m\e[33mSTR\e[0m",
16
- :bright_blue => "\e[1m\e[34mSTR\e[0m",
17
- :bright_magenta => "\e[1m\e[35mSTR\e[0m",
18
- :bright_cyan => "\e[1m\e[36mSTR\e[0m",
19
- :bright_white => "\e[1m\e[37mSTR\e[0m"
3
+ # Standard ANSI color-codes configuration.
4
+ TC_CONFIG = {
5
+ :colors => {
6
+ :black => 30, :red => 31, :green => 32,
7
+ :yellow => 33, :blue => 34, :magenta => 35,
8
+ :cyan => 36, :white => 37
9
+ },
10
+ :bg_colors => {}
20
11
  }
21
- module ClassMethods
12
+
13
+ TC_CONFIG[:colors].map do |key, value|
14
+ TC_CONFIG[:bg_colors][key] = value + 10
22
15
  end
23
16
 
24
17
  module InstanceMethods
25
- # returns array of available color methods
18
+ # Returns list of normal color methods.
26
19
  def color_methods
27
- TERM_COLORS.keys
20
+ TC_CONFIG[:colors].keys
21
+ end
22
+
23
+ # Returns list of bright (bold) color methods.
24
+ def bright_color_methods
25
+ color_methods.collect do |color|
26
+ "bright_#{color}".to_sym
27
+ end
28
+ end
29
+
30
+ # Returns list of background color methods.
31
+ def bg_color_methods
32
+ color_methods.collect do |color|
33
+ "bg_#{color}".to_sym
34
+ end
28
35
  end
29
36
 
30
- # overriden method_missing's default behaviour to
31
- # define the color methods on the fly when called
32
- def method_missing(method, *args, &block) #:nodoc:
33
- super unless TERM_COLORS.keys.include? method
37
+ # Returns list of all public methods provided by term-colorizer gem.
38
+ def term_colorizer_methods
39
+ methods = []
40
+ methods += color_methods
41
+ methods += bright_color_methods
42
+ methods += bg_color_methods
43
+ methods += [
44
+ :underline, :strikethrough, :term_colorizer_methods,
45
+ :fancy_color_methods, :no_underline, :no_strikethrough,
46
+ :no_color, :no_bg_color, :plain_text, :reset_fancyness
47
+ ]
48
+ end
49
+
50
+ # Alias of `term_colorizer_methods` method.
51
+ def fancy_color_methods
52
+ self.term_colorizer_methods
53
+ end
54
+
55
+ # Overrides `method_missing` method's default behaviour to define the
56
+ # term colorizer methods on the fly when called.
57
+ def method_missing(method, *args, &block)
58
+ super unless term_colorizer_methods.include? method
34
59
  self.class.send(:define_method, method) do
35
- TERM_COLORS[method].sub(/STR/, self.to_s)
60
+ str = self
61
+ str = add_normal_color(str, method) if color_methods.include? method
62
+ str = add_bright_color(str, method) if bright_color_methods.include? method
63
+ str = add_bg_color(str, method) if bg_color_methods.include? method
64
+ str = add_underline(str) if "underline".eql? method.to_s
65
+ str = add_strikethrough_effect(str) if "strikethrough".eql? method.to_s
66
+ str = str + "\e[0m" unless str.end_with? "\e[0m"
67
+ str
36
68
  end and self.send(method, *args)
37
69
  end
38
70
 
39
- # overriden respond_to? so as to it will return true
40
- # when asked for any of available color methods
41
- def respond_to_missing?(method, include_private = false) #:nodoc:
42
- TERM_COLORS.keys.include? method || super
71
+ # Overrides `respond_to?` method so as to it will return true when asked
72
+ # for any of term colorizer methods.
73
+ def respond_to_missing?(method, include_private = false)
74
+ term_colorizer_methods.include? method || super
75
+ end
76
+
77
+ # Returns original plain text string by cleaning all the fancyness added
78
+ # to it by term colorizer methods.
79
+ def plain_text
80
+ self.gsub(/\e\[[0-9]m|\e\[[34][0-7]m/, '')
81
+ end
82
+
83
+ # Alias of `plain_text` method.
84
+ def reset_fancyness
85
+ self.plain_text
86
+ end
87
+
88
+ # Returns string by cleaning off colors added to it by term colorizer
89
+ # methods.
90
+ def no_color
91
+ reset_prev_formatting self, :color
92
+ end
93
+
94
+ # Returns string by cleaning off background colors added to it by term
95
+ # colorizer methods.
96
+ def no_bg_color
97
+ reset_prev_formatting self, :bg_color
98
+ end
99
+
100
+ # Returns string by removing underlines in it.
101
+ def no_underline
102
+ reset_prev_formatting self, :underline
103
+ end
104
+
105
+ # Returns string by removing strikethrough effect(s) added to it.
106
+ def no_strikethrough
107
+ reset_prev_formatting self, :strikethrough
108
+ end
109
+
110
+ private
111
+
112
+ # Private method returns string by adding normal color effect
113
+ def add_normal_color(str, color)
114
+ str = reset_prev_formatting str, :color
115
+ "\e[#{TC_CONFIG[:colors][color].to_s}m#{str}"
116
+ end
117
+
118
+ # Private method returns string by adding bright (bold) color effect
119
+ def add_bright_color(str, color)
120
+ color = color.to_s.sub("bright_", "").to_sym
121
+ str = reset_prev_formatting str, :color
122
+ "\e[1m\e[#{TC_CONFIG[:colors][color].to_s}m#{str}"
123
+ end
124
+
125
+ # Private method returns string by adding background color effect
126
+ def add_bg_color(str, color)
127
+ color = color.to_s.sub("bg_", "").to_sym
128
+ str = reset_prev_formatting str, :bg_color
129
+ "\e[#{TC_CONFIG[:bg_colors][color].to_s}m#{str}"
130
+ end
131
+
132
+ def add_underline(str)
133
+ "\e[4m#{str}"
134
+ end
135
+
136
+ def add_strikethrough_effect(str)
137
+ "\e[9m#{str}"
138
+ end
139
+
140
+ # Cleans off string formatting for colors or background colors added by
141
+ # term colorizer methods previously
142
+ def reset_prev_formatting(str, type)
143
+ case type
144
+ when :color
145
+ str = str.gsub("\e[1m", '').gsub(/\e\[[3][0-7]m/, '')
146
+ when :bg_color
147
+ str = str.gsub(/\e\[[4][0-7]m/, '')
148
+ when :underline
149
+ str = str.gsub("\e[4m", '')
150
+ when :strikethrough
151
+ str = str.gsub("\e[9m", '')
152
+ end
153
+
154
+ # Remove ANSI termination characters from `str`.
155
+ str = str.gsub("\e[0m", '')
156
+
157
+ # Hack! Add ANSI termination character at the end of `str` if `str`
158
+ # contains any fancy stuff added by term colorizer methods before.
159
+ if str.scan(/\e\[[1-9]/).any?
160
+ str = str + "\e[0m" unless str.end_with? "\e[0m"
161
+ end
162
+
163
+ return str
43
164
  end
44
165
  end
45
166
 
46
167
  def self.included(base)
47
- base.extend ClassMethods
48
168
  base.send :include, InstanceMethods
49
169
  end
50
170
  end
@@ -52,4 +172,4 @@ end
52
172
 
53
173
  class String
54
174
  include Term::Colorizer
55
- end
175
+ end
@@ -1,5 +1,5 @@
1
1
  module Term
2
2
  module Colorizer
3
- VERSION = '0.1.3'
3
+ VERSION = '0.2.1'
4
4
  end
5
5
  end
Binary file
Binary file
@@ -1,16 +1,146 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Term::Colorizer do
4
- it "should return a equivalent ANSI formatted string with for red color" do
5
- "Duck can quack".red.should eq "\e[31mDuck can quack\e[0m"
4
+ string = "It's a very simple sentence!"
5
+
6
+ context "Testing methods' availability..." do
7
+ it "check color methods" do
8
+ methods = [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white]
9
+ methods.map do |method|
10
+ expect(string.color_methods).to include(method)
11
+ end
12
+ end
13
+
14
+ it "check bright_color_methods" do
15
+ methods = [:bright_black, :bright_red, :bright_green, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white]
16
+ methods.map do |method|
17
+ expect(string.bright_color_methods).to include(method)
18
+ end
19
+ end
20
+
21
+ it "check bg_color_methods" do
22
+ methods = [:bg_black, :bg_red, :bg_green, :bg_yellow, :bg_blue, :bg_magenta, :bg_cyan, :bg_white]
23
+ methods.map do |method|
24
+ expect(string.bg_color_methods).to include(method)
25
+ end
26
+ end
27
+
28
+ it "check all public methods availed by term colorizer gem" do
29
+ methods = [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :bright_black, :bright_red, :bright_green, :bright_yellow, :bright_blue, :bright_magenta, :bright_cyan, :bright_white, :bg_black, :bg_red, :bg_green, :bg_yellow, :bg_blue, :bg_magenta, :bg_cyan, :bg_white, :underline, :strikethrough, :term_colorizer_methods, :fancy_color_methods, :no_underline, :no_strikethrough, :no_color, :no_bg_color, :plain_text, :reset_fancyness]
30
+ methods.map do |method|
31
+ expect(string.term_colorizer_methods).to include(method)
32
+ string.should respond_to(method)
33
+ end
34
+ end
35
+
36
+ it "`term_colorizer_methods` should display combined output of `color_methods`+`bright_color_methods`+`bg_color_methods`" do
37
+ expected_methods = string.color_methods + string.bright_color_methods + string.bg_color_methods
38
+ expected_methods.map do |method|
39
+ expect(string.term_colorizer_methods).to include(method)
40
+ end
41
+ end
42
+
43
+ it "check whether `fancy_color_methods` is an alias method of `term_colorizer_methods`" do
44
+ string.fancy_color_methods.should == string.term_colorizer_methods
45
+ end
6
46
  end
7
47
 
8
- it "should have `color_methods` method available on String instance" do
9
- "Hello world!".should respond_to(:color_methods)
48
+ context "Testing color & background color methods..." do
49
+ context "Testing normal color methods..." do
50
+ it "check all normal color methods' responses" do
51
+ string.black.should eq("\e[30mIt's a very simple sentence!\e[0m")
52
+ string.red.should eq("\e[31mIt's a very simple sentence!\e[0m")
53
+ string.green.should eq("\e[32mIt's a very simple sentence!\e[0m")
54
+ string.yellow.should eq("\e[33mIt's a very simple sentence!\e[0m")
55
+ string.blue.should eq("\e[34mIt's a very simple sentence!\e[0m")
56
+ string.magenta.should eq("\e[35mIt's a very simple sentence!\e[0m")
57
+ string.cyan.should eq("\e[36mIt's a very simple sentence!\e[0m")
58
+ string.white.should eq("\e[37mIt's a very simple sentence!\e[0m")
59
+ end
60
+
61
+ it "check resultant string when chained normal color methods applied on same string" do
62
+ string.red.should eq "\e[31mIt's a very simple sentence!\e[0m"
63
+ string.red.cyan.should eq "\e[36mIt's a very simple sentence!\e[0m"
64
+ string.red.cyan.green.white.black.black.yellow.should eq "\e[33mIt's a very simple sentence!\e[0m"
65
+ end
66
+ end
67
+
68
+ context "Testing bright color methods..." do
69
+ it "check all bright color methods' responses" do
70
+ string.bright_black.should eq("\e[1m\e[30mIt's a very simple sentence!\e[0m")
71
+ string.bright_red.should eq("\e[1m\e[31mIt's a very simple sentence!\e[0m")
72
+ string.bright_green.should eq("\e[1m\e[32mIt's a very simple sentence!\e[0m")
73
+ string.bright_yellow.should eq("\e[1m\e[33mIt's a very simple sentence!\e[0m")
74
+ string.bright_blue.should eq("\e[1m\e[34mIt's a very simple sentence!\e[0m")
75
+ string.bright_magenta.should eq("\e[1m\e[35mIt's a very simple sentence!\e[0m")
76
+ string.bright_cyan.should eq("\e[1m\e[36mIt's a very simple sentence!\e[0m")
77
+ string.bright_white.should eq("\e[1m\e[37mIt's a very simple sentence!\e[0m")
78
+ end
79
+
80
+ it "check resultant string when chained color methods applied on same string" do
81
+ string.bright_red.should eq "\e[1m\e[31mIt's a very simple sentence!\e[0m"
82
+ string.bright_red.bright_cyan.should eq "\e[1m\e[36mIt's a very simple sentence!\e[0m"
83
+ string.bright_red.bright_cyan.bright_green.bright_white.bright_black.bright_black.bright_yellow.should eq "\e[1m\e[33mIt's a very simple sentence!\e[0m"
84
+ end
85
+ end
86
+
87
+ context "Testing background color methods..." do
88
+ it "check all background color methods' responses" do
89
+ string.bg_black.should eq("\e[40mIt's a very simple sentence!\e[0m")
90
+ string.bg_red.should eq("\e[41mIt's a very simple sentence!\e[0m")
91
+ string.bg_green.should eq("\e[42mIt's a very simple sentence!\e[0m")
92
+ string.bg_yellow.should eq("\e[43mIt's a very simple sentence!\e[0m")
93
+ string.bg_blue.should eq("\e[44mIt's a very simple sentence!\e[0m")
94
+ string.bg_magenta.should eq("\e[45mIt's a very simple sentence!\e[0m")
95
+ string.bg_cyan.should eq("\e[46mIt's a very simple sentence!\e[0m")
96
+ string.bg_white.should eq("\e[47mIt's a very simple sentence!\e[0m")
97
+ end
98
+
99
+ it "check resultant string when chained background methods applied on same string" do
100
+ string.bg_red.should eq "\e[41mIt's a very simple sentence!\e[0m"
101
+ string.bg_red.bg_cyan.should eq "\e[46mIt's a very simple sentence!\e[0m"
102
+ string.bg_red.bg_cyan.bg_green.bg_white.bg_black.bg_black.bg_yellow.should eq "\e[43mIt's a very simple sentence!\e[0m"
103
+ end
104
+ end
105
+
106
+ context "Testing reset methods for color & background..." do
107
+ it "check `no_color` and `no_bg_color` methods' behaviours" do
108
+ string.magenta.should respond_to(:no_color)
109
+ string.should respond_to(:no_bg_color)
110
+ string.magenta.no_color.should eq(string)
111
+ string.magenta.no_color.no_bg_color.should eq(string)
112
+ string.bright_magenta.bg_green.red.no_bg_color.no_color.no_color.should eq(string)
113
+ string.bg_yellow.bright_white.no_color.should eq(string.bg_yellow)
114
+ string.bg_black.magenta.bright_black.red.red.red.white.no_bg_color.bright_cyan.no_color.should eq(string)
115
+ end
116
+ end
10
117
  end
11
118
 
12
- it "should respond to an available color method, e.g. \"Hello world!\".respond_to?(:bright_green)" do
13
- "Hello world!".should respond_to(:bright_green)
119
+ context "Testing bonus methods..." do
120
+ it "check `underline` method's behaviour" do
121
+ string.red.underline.underline.green.should eq("\e[32m\e[4m\e[4mIt's a very simple sentence!\e[0m")
122
+ string.sub(/(simple)/, '\1'.red.underline.underline.green.yellow).should eq("It's a very \e[33m\e[4m\e[4msimple\e[0m sentence!")
123
+ end
124
+
125
+ it "check `strikethrough` method's behaviour" do
126
+ string.red.strikethrough.green.strikethrough.should eq("\e[9m\e[32m\e[9mIt's a very simple sentence!\e[0m")
127
+ string.sub(/(simple)/, '\1'.red.strikethrough.green.yellow).should eq("It's a very \e[33m\e[9msimple\e[0m sentence!")
128
+ end
129
+
130
+ it "check `no_underline` and `no_strikethrough` methods' behaviours" do
131
+ string.sub(/(simple)/, '\1'.red.bg_yellow.green.yellow.red.underline.no_underline.strikethrough).should eq("It's a very \e[9m\e[31m\e[43msimple\e[0m sentence!")
132
+ string.sub(/(simple)/, '\1'.red.strikethrough.green.yellow.strikethrough.strikethrough.no_strikethrough.no_color).should eq(string)
133
+ end
14
134
  end
15
135
 
16
- end
136
+ context "Final Tests..." do
137
+ it "check resultant string when applied many color, background, bonus methods on different sections of string and also called reset methods on it" do
138
+ string.sub(/(simple)/, '\1'.red.bg_yellow.green.yellow.red.underline.no_underline.strikethrough.no_bg_color).should eq("It's a very \e[9m\e[31msimple\e[0m sentence!")
139
+ string.sub(/(simple)/, '\1'.red.bg_yellow.green.yellow.red.underline.no_underline.strikethrough.no_bg_color.no_color.no_strikethrough).should eq(string)
140
+ complex_string = string.yellow + " It has nothing to do with my ".green + "name,".underline + " but FYI, my name is".bg_magenta.black + " " + "foo".strikethrough.red + " Vishal!".upcase.bright_cyan
141
+ complex_string.should eq("\e[33mIt's a very simple sentence!\e[0m\e[32m It has nothing to do with my \e[0m\e[4mname,\e[0m\e[30m\e[45m but FYI, my name is\e[0m \e[31m\e[9mfoo\e[0m\e[1m\e[36m VISHAL!\e[0m")
142
+ complex_string.plain_text.should == "It's a very simple sentence! It has nothing to do with my name, but FYI, my name is foo VISHAL!"
143
+ complex_string.reset_fancyness.should == complex_string.plain_text
144
+ end
145
+ end
146
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: term-colorizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Telangre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2013-08-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: the@vishaltelangre.com
@@ -27,6 +27,8 @@ files:
27
27
  - lib/term-colorizer.rb
28
28
  - lib/term-colorizer/colorizer.rb
29
29
  - lib/term-colorizer/version.rb
30
+ - screenshot_1.png
31
+ - screenshot_2.png
30
32
  - spec/spec_helper.rb
31
33
  - spec/term-colorizer/colorizer_spec.rb
32
34
  - spec/term-colorizer/version_spec.rb