colorputs 0.2.2 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ae9a10c9171d187ce40cb99a92850bddc386d95
4
- data.tar.gz: a30994927b620ea14c80948490dbebaf9786d53b
3
+ metadata.gz: 3341f3b8c950f5e4cffac502ea3d3e1c9692135f
4
+ data.tar.gz: 5743ea6b1498682d889aa783cd6606718f4ee27d
5
5
  SHA512:
6
- metadata.gz: 5f9a1aa2d96ab7402f45eb9fdb6a28d9752f468ad0a513c0d3db797b533a4f4885ca3de5fe8f1380a6d4e0debb0332a1f0b3a182700327e8725f3aa2ba66f34d
7
- data.tar.gz: f2b0d11d8db402a6efab3b07f595dd3775f0b2f474fb23a695ff425b6d369b62772ae8dd855ec9fc72e5d0b7047bf766b59466560d74b5493e99a01b5d8e85b8
6
+ metadata.gz: 7ea532ed1c779e1eee930a52cba7eef2542c67f4d004e5124658c8356c5e0778361fb931e28a35e7af4e6198d8f9d457ea8667d5b910c4c62b96e561c0a49922
7
+ data.tar.gz: c8fbc7f87042f17424c3679055da10043637e70222445fa0c3f3593b7b6a3be9ad54cb8166ad3f0ef871947ab4db38a9c4489bc2d9fd2f17fe46ea58ea4572d2
@@ -0,0 +1,6 @@
1
+ ## Colorputs Contributors
2
+
3
+ Colorputs is written by Agustín Bea (https://github.com/agus22lp) and Lautaro (https://github.com/lndl).<br>
4
+ Besides, we have these contributors:
5
+
6
+ - F-3r (https://github.com/F-3r)
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Lautaro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,57 @@
1
+ colorputs
2
+ =========
3
+
4
+ Color in p and puts method!
5
+
6
+ Description
7
+ -----------
8
+
9
+ Colorputs provides a beatiful color printing for Ruby console-based applications
10
+
11
+ Instalation
12
+ -----------
13
+
14
+ gem install colorputs
15
+
16
+ Examples of usage
17
+ -----------------
18
+
19
+ p 'Hello world!', :red
20
+
21
+ Will print out "Hello world!" colored in red.
22
+
23
+ Availables colors and modes
24
+ ---------------------------
25
+
26
+ <table>
27
+ <tr>
28
+ <th>Symbol</th><th>Color/Mode</th>
29
+ </tr>
30
+ <tr>
31
+ <td>:red</td><td>Red</td>
32
+ </tr>
33
+ <tr>
34
+ <td>:blue</td><td>Blue</td>
35
+ </tr>
36
+ <tr>
37
+ <td>:green</td><td>Green</td>
38
+ </tr>
39
+ <tr>
40
+ <td>:yellow</td><td>Yellow</td>
41
+ </tr>
42
+ <tr>
43
+ <td>:cyan</td><td>Cyan</td>
44
+ </tr>
45
+ <tr>
46
+ <td>:magenta</td><td>Magenta</td>
47
+ </tr>
48
+ <tr>
49
+ <td>:white</td><td>White</td>
50
+ </tr>
51
+ <tr>
52
+ <td>:black</td><td>Black</td>
53
+ </tr>
54
+ <tr>
55
+ <td>:rainbow</td><td>Rainbow colors!</td>
56
+ </tr>
57
+ </table>
@@ -0,0 +1,17 @@
1
+ lib = File.expand_path(File.join('..', 'lib'), __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'colorputs'
6
+ s.version = '0.2.3'
7
+ s.date = '2013-11-27'
8
+ s.summary = "Color in puts method!!"
9
+ s.description = "Enables to use puts and p standard methods with a easy color interface"
10
+ s.authors = ["Agustín Beamurguía, Lautaro De León"]
11
+ s.email = ['agus.beam@gmail.com, laudleon@gmail.com']
12
+ s.files = `git ls-files`.split("\n")
13
+ s.test_files = `git ls-files | grep specs/`.split("\n")
14
+ s.require_paths = ["lib/"]
15
+ s.homepage = 'http://github.com/lndl/colorputs'
16
+ s.license = 'MIT'
17
+ end
@@ -1,36 +1,5 @@
1
- module Kernel
1
+ require 'colorputs/main.rb'
2
2
 
3
- colors = Hash.new
4
-
5
- std_coloring = proc do |color_code, str|
6
- "\e#{color_code}#{str}\e[0m"
7
- end.curry()
8
-
9
- rainbow_coloring = proc do |str|
10
- str.chars.inject("") { |acc,c| acc + colors.values[rand(colors.size - 2)].(c) }
11
- end
12
-
13
- colors.merge!({
14
- red: std_coloring.('[91m'),
15
- green: std_coloring.('[92m'),
16
- yellow: std_coloring.('[93m'),
17
- blue: std_coloring.('[94m'),
18
- magenta: std_coloring.('[95m'),
19
- cyan: std_coloring.('[96m'),
20
- white: std_coloring.('[37m'),
21
- black: std_coloring.('[30m'),
22
- rainbow: rainbow_coloring
23
- })
24
-
25
- old_puts = method :puts
26
-
27
- p_color_body = proc do |print_m_sym, obj, *args|
28
- maybe_color = args.last
29
- fancy_str = colors[maybe_color].(obj.send(print_m_sym)) rescue obj
30
- args.pop unless fancy_str == obj
31
- old_puts.(fancy_str, args)
32
- end.curry()
33
-
34
- define_method :puts, p_color_body.(:to_s)
35
- define_method :p, p_color_body.(:inspect)
3
+ class Object
4
+ include Colorputs
36
5
  end
@@ -0,0 +1,63 @@
1
+ module Colorputs
2
+
3
+ colors = Hash.new
4
+ modes = Hash.new
5
+
6
+ format_wrapper = ->(start_code, str, end_code) { "\e[#{start_code}m#{str}\e[#{end_code}m" }
7
+
8
+ std_mode = proc do |start_mode, end_mode, str|
9
+ format_wrapper.(start_mode, str, end_mode)
10
+ end.curry()
11
+
12
+ std_coloring = proc do |color_code, str|
13
+ format_wrapper.(color_code, str, 39)
14
+ end.curry()
15
+
16
+ rainbow_coloring = proc do |str|
17
+ str.chars.inject("") { |acc,c| acc + colors.values[rand(colors.size - 2)].(c) }
18
+ end
19
+
20
+ modes.merge!({
21
+ b: std_mode.(1,21), # Bold
22
+ bl: std_mode.(5,25), # Blinking
23
+ u: std_mode.(4,24), # Underlined
24
+ r: std_mode.(7,27) # Reversed
25
+ })
26
+
27
+ colors.merge!({
28
+ red: std_coloring.('91'),
29
+ green: std_coloring.('92'),
30
+ yellow: std_coloring.('93'),
31
+ blue: std_coloring.('94'),
32
+ magenta: std_coloring.('95'),
33
+ cyan: std_coloring.('96'),
34
+ white: std_coloring.('37'),
35
+ black: std_coloring.('30'),
36
+ rainbow: rainbow_coloring
37
+ })
38
+
39
+ old_puts = Kernel.method :puts
40
+
41
+ fancyner = proc do |normal_str, maybe_Cp_code|
42
+ if maybe_Cp_code.instance_of? Symbol
43
+ maybe_color, maybe_mode = maybe_Cp_code.to_s.split('_').map(&:to_sym)
44
+ fancy_str = colors[maybe_color].(normal_str) rescue normal_str
45
+ fancy_str = modes[maybe_mode].(fancy_str) rescue fancy_str
46
+ fancy_str
47
+ else
48
+ normal_str
49
+ end
50
+ end
51
+
52
+ p_color_body = proc do |print_m_sym, ret_lambda, obj, *args|
53
+ maybe_Cp_code = args.last # Cp -> Colorputs ;)
54
+ normal_str = obj.send(print_m_sym)
55
+ fancy_str = fancyner.(normal_str, maybe_Cp_code)
56
+ args.pop unless fancy_str == normal_str
57
+ old_puts.(fancy_str, args)
58
+ ret_lambda.(obj,args)
59
+ end.curry()
60
+
61
+ define_method :puts, p_color_body.(:to_s, ->(_ , _) { nil })
62
+ define_method :p, p_color_body.(:inspect, ->(obj, args) { (args == []) ? obj : [obj] + args })
63
+ end
@@ -0,0 +1,122 @@
1
+ require './spec_helper'
2
+
3
+ describe 'Colorputs:' do
4
+ before do
5
+ class MyColorizedObject
6
+ include Colorputs
7
+ end
8
+ @mco = MyColorizedObject.new
9
+ end
10
+
11
+ describe '::p ->' do
12
+ describe 'when no Colorputs specifics args are sent,' do
13
+ it 'must return like the original p method' do
14
+ @mco.send(:p, 'Hello').should eql(p 'Hello')
15
+ end
16
+ end
17
+
18
+ describe 'when some color is sent,' do
19
+ describe 'when only one argument is sent to print,' do
20
+ it 'must return like the original p method' do
21
+ @mco.send(:p, 'Hello', :red).should eql(p 'Hello')
22
+ end
23
+ it 'must return only one valid string argument' do
24
+ @mco.send(:p, 'Hello', :red).should be_a_kind_of String
25
+ end
26
+ end
27
+ describe 'when an argument list is sent to print,' do
28
+ it 'must return like the original p method' do
29
+ @mco.send(:p, 'Hello','How','Are','You', :blue, :red).should eql(p 'Hello', 'How', 'Are', 'You', :blue)
30
+ end
31
+ it 'must return the whole argument list, except the color' do
32
+ @mco.send(:p, 'Hello','How','Are','You', :blue, :red).should be_a_kind_of Array
33
+ @mco.send(:p, 'Hello','How','Are','You', :blue, :red).size.should eql(5)
34
+ end
35
+ end
36
+ end
37
+
38
+ describe 'when a wrong color is sent,' do
39
+ it 'safely ignore it and returns like an ordinary p method' do
40
+ @mco.send(:p, 'Hello', :wrong).should eql(p 'Hello', :wrong)
41
+ end
42
+
43
+ it 'must return the whole argument list, including the wrong color label' do
44
+ @mco.send(:p, 'Hello', :wrong).should be_a_kind_of Array
45
+ @mco.send(:p, 'Hello', :wrong).size.should eql(2)
46
+ end
47
+ end
48
+
49
+ describe 'when a valid color/mode string is sent, ' do
50
+ it 'must ignore it (only symboles are accepted)' do
51
+ @mco.send(:p, 'Hello', 'green_b').should eql(p 'Hello', 'green_b')
52
+ @mco.send(:p, 'Hello', 'green_b').size.should eql(2)
53
+ end
54
+ end
55
+
56
+ describe 'when mode suffix is sent,' do
57
+ describe 'when is used in combination with color' do
58
+ it 'must return like the original p method' do
59
+ @mco.send(:p, 'Hello', :red_b).should eql(p 'Hello')
60
+ end
61
+ it 'must return only one valid string argument' do
62
+ @mco.send(:p, 'Hello', :red_b).should be_a_kind_of String
63
+ end
64
+ end
65
+ describe 'when is not used in combination with color' do
66
+ it 'must return like the original p method' do
67
+ @mco.send(:p, 'Hello', :_b).should eql(p 'Hello')
68
+ end
69
+ it 'must return only one valid string argument' do
70
+ @mco.send(:p, 'Hello', :_b).should be_a_kind_of String
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ describe '::puts ->' do
77
+ describe 'when no Colorputs specifics args are sent,' do
78
+ it 'must return like the original puts method' do
79
+ @mco.send(:puts, 'Hello').should eql(puts 'Hello')
80
+ end
81
+ end
82
+
83
+ describe 'when some color is sent,' do
84
+ describe 'when only one argument is sent to print,' do
85
+ it 'must return like the original puts method' do
86
+ @mco.send(:puts, 'Hello', :red).should eql(puts 'Hello')
87
+ end
88
+ end
89
+ describe 'when an argument list is sent to print,' do
90
+ it 'must return like the original puts method' do
91
+ @mco.send(:puts, 'Hello','How','Are','You', :blue, :red).should eql(puts 'Hello', 'How', 'Are', 'You', :blue)
92
+ end
93
+ end
94
+ end
95
+
96
+ describe 'when a wrong color is sent,' do
97
+ it 'safely ignore it and returns like an ordinary puts method' do
98
+ @mco.send(:puts, 'Hello', :wrong).should eql(puts 'Hello', :wrong)
99
+ end
100
+ end
101
+
102
+ describe 'when a valid color/mode string is sent, ' do
103
+ it 'must ignore it (only symboles are accepted)' do
104
+ @mco.send(:puts, 'Hello', 'green_b').should eql(puts 'Hello', 'green_b')
105
+ end
106
+ end
107
+
108
+ describe 'when mode suffix is sent,' do
109
+ describe 'when is used in combination with color' do
110
+ it 'must return like the original p method' do
111
+ @mco.send(:puts, 'Hello', :red_b).should eql(puts 'Hello')
112
+ end
113
+ end
114
+ describe 'when is not used in combination with color' do
115
+ it 'must return like the original p method' do
116
+ @mco.send(:puts, 'Hello', :_b).should eql(puts 'Hello')
117
+ end
118
+ end
119
+ end
120
+ end
121
+
122
+ end
@@ -0,0 +1,2 @@
1
+ require "#{ File.dirname(__FILE__) }/../lib/colorputs/main"
2
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: colorputs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustín Beamurguía, Lautaro De León
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-07 00:00:00.000000000 Z
11
+ date: 2013-11-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Enables to use puts and p standard methods with a easy color interface
14
14
  email:
@@ -17,7 +17,15 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - AUTHORS.md
21
+ - Gemfile
22
+ - LICENSE
23
+ - README.md
24
+ - colorputs.gemspec
20
25
  - lib/colorputs.rb
26
+ - lib/colorputs/main.rb
27
+ - specs/spec_colorputs.rb
28
+ - specs/spec_helper.rb
21
29
  homepage: http://github.com/lndl/colorputs
22
30
  licenses:
23
31
  - MIT
@@ -42,4 +50,6 @@ rubygems_version: 2.0.3
42
50
  signing_key:
43
51
  specification_version: 4
44
52
  summary: Color in puts method!!
45
- test_files: []
53
+ test_files:
54
+ - specs/spec_colorputs.rb
55
+ - specs/spec_helper.rb