colorputs 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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