jamescook-pow 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -12,9 +12,13 @@ Examples:
12
12
  puts.yellow "Hello world in yellow"
13
13
  puts.red "Hello world in red"
14
14
  puts.red! "Hello world in red, but with boldness"
15
- puts.red_ "Hello world in red, but with strikethrough"
15
+ puts.red_ "Hello world in red, but with underscore"
16
16
  puts.rainbow "Hellow world, but more silly."
17
17
 
18
+ p.red "Hello world, but less typing .. also red."
19
+ p! "Hello world, in bold"
20
+ p! "Mix and match", :color => :purple, :background => :black
21
+
18
22
 
19
23
  TODO:
20
24
  - Figure out if you can bold a 'dark' color
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jamescook-pow}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Cook"]
12
- s.date = %q{2009-11-19}
13
- s.description = %q{'puts' with shell colors.}
12
+ s.date = %q{2009-11-20}
13
+ s.description = %q{Ruby 'puts' with shell colors.}
14
14
  s.email = %q{jamecook@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "README"
data/lib/pow.rb CHANGED
@@ -2,6 +2,10 @@ module Pow
2
2
  # Override puts on include to allow coloring (but also retain existing function)
3
3
  def self.included(base)
4
4
  base.send(:define_method, :puts){ |*args| Puts.new(*args) }
5
+ base.send(:define_method, :puts!){ |*args| opts=(args.detect{|a| a.is_a?(Hash)} || {}).merge(:misc => {:bold => true}); args.reject!{|a| a.is_a?(Hash)}; args = [args.push(opts)].flatten; Puts.new(*args) } # Now that's just self-explanatory ..
6
+
7
+ base.send(:alias_method, :p, :puts)
8
+ base.send(:alias_method, :p!, :puts!)
5
9
  end
6
10
  CODES = {
7
11
  :clear => 0,
@@ -49,14 +53,14 @@ module Pow
49
53
  class Puts
50
54
  attr_accessor :writer
51
55
  def initialize(*args)
52
- options = args[0].is_a?(String) ? {:text => args[0] } : (args[0] || {})
56
+ options = args[0].is_a?(String) ? {:text => args[0]}.merge(args[1] || {}) : (args[0] || {})
53
57
  CODES.keys.each do |key|
54
58
  # Color
55
59
  self.class.send(:define_method, key.to_sym) { |*args| Puts.new({:color => key.to_sym, :text => args[0], :misc => args[1]}).out! }
56
60
  # Bold
57
61
  self.class.send(:define_method, "#{key}!".to_sym) { |*args| Puts.new({:color => key.to_sym, :text => args[0], :bold => true, :misc => args[1]}).out! }
58
- # Strikethrough
59
- self.class.send(:define_method, "#{key}_".to_sym) { |*args| Puts.new({:color => key.to_sym, :text => args[0], :strikethrough => true, :misc => args[1]}).out! }
62
+ # Underline
63
+ self.class.send(:define_method, "#{key}_".to_sym) { |*args| Puts.new({:color => key.to_sym, :text => args[0], :underline => true, :misc => args[1]}).out! }
60
64
  end
61
65
  # FIXME make this part a method or less fug
62
66
  if options[:misc] && options[:misc].is_a?(Hash)
@@ -113,6 +117,7 @@ module Pow
113
117
  background = options.fetch(:background){ false }
114
118
  concealed = options.fetch(:concealed){ false }
115
119
  strikethrough = options.fetch(:strikethrough){ false }
120
+ underscore = options.fetch(:underscore){ false }
116
121
 
117
122
  if text != ""
118
123
  result = [escape_sequence(color), text, escape_sequence(:reset), newline].join
@@ -142,6 +147,10 @@ module Pow
142
147
  result.insert(0, escape_sequence(:strikethrough))
143
148
  end
144
149
 
150
+ if underscore
151
+ result.insert(0, escape_sequence(:underscore))
152
+ end
153
+
145
154
  return result
146
155
  end
147
156
 
@@ -1,10 +1,11 @@
1
+ require "rake"
1
2
  begin
2
3
  require 'jeweler'
3
4
  Jeweler::Tasks.new do |gemspec|
4
5
  gemspec.name = "jamescook-pow"
5
- gemspec.version = "0.1.1"
6
+ gemspec.version = "0.1.2"
6
7
  gemspec.summary = "puts with colors"
7
- gemspec.description = "'puts' with shell colors."
8
+ gemspec.description = "Ruby 'puts' with shell colors."
8
9
  gemspec.email = "jamecook@gmail.com"
9
10
  gemspec.homepage = "http://github.com/jamescook/pow"
10
11
  gemspec.authors = ["James Cook"]
@@ -12,3 +13,12 @@ begin
12
13
  rescue LoadError
13
14
  puts "Jeweler not available. Install it with: sudo gem install jeweler"
14
15
  end
16
+
17
+ task :default => [:test]
18
+
19
+ desc "Run tests"
20
+ task :test do |t|
21
+ ruby "test/pow_test.rb"
22
+ end
23
+
24
+
@@ -39,6 +39,12 @@ class PowTest < Test::Unit::TestCase
39
39
  assert_equal "\e[1mTEST\e[0m\n", @writer.gets
40
40
  end
41
41
 
42
+ def test_puts_with_underscore
43
+ @puts.new(:text => "TEST", :underscore => :true, :writer => @writer).out!
44
+ @writer.rewind
45
+ assert_equal "\e[4m\e[37mTEST\e[0m\n", @writer.gets
46
+ end
47
+
42
48
  def test_puts_with_strikethrough
43
49
  @puts.new(:text => "TEST", :strikethrough => :true, :writer => @writer).out!
44
50
  @writer.rewind
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jamescook-pow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Cook
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-19 00:00:00 -06:00
12
+ date: 2009-11-20 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: "'puts' with shell colors."
16
+ description: Ruby 'puts' with shell colors.
17
17
  email: jamecook@gmail.com
18
18
  executables: []
19
19