jamescook-pow 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -25,11 +25,29 @@ Examples:
25
25
  p! "Hello world, in bold"
26
26
  p! "Mix and match", :color => :purple, :background => :black
27
27
 
28
+ ========================================================
28
29
 
29
- You can also set defaults in your ~/.irbrc or wherever.
30
+ You can set defaults in your ~/.irbrc or wherever.
30
31
  require 'pow'
31
32
  Pow.defaults = {:bold => true} # Now any puts will default to bold
32
33
 
33
34
 
35
+ Profiles:
36
+ =======================================================
37
+
38
+ Pow will try to load "~/.pow_defaults" into the Pow.defaults hash when loaded/required.
39
+ You can create custom profiles with the Pow::Profile class.
40
+
41
+ -- IRB Example
42
+ > profile = Pow::Profile.new # defaults to a file in $HOME
43
+ > profile.settings = {:bold => true, :color => :purple, :on => :black}
44
+ > profile.save
45
+ > Pow.load_profile # No argument needed if using default settings file
46
+
47
+
48
+ Misc:
49
+
50
+ Pow can be enabled/disabled with Pow.enable or Pow.disable
51
+
34
52
  There's a script included that you can pipe text into and output customized text:
35
53
  cat README | ruby bin/ruby-pow --bold --background=purple
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jamescook-pow}
8
- s.version = "0.1.5"
8
+ s.version = "0.1.6"
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-26}
12
+ s.date = %q{2009-11-27}
13
13
  s.default_executable = %q{ruby-pow}
14
14
  s.description = %q{Ruby 'puts' with shell colors.}
15
15
  s.email = %q{jamecook@gmail.com}
@@ -23,8 +23,10 @@ Gem::Specification.new do |s|
23
23
  "bin/ruby-pow",
24
24
  "jamescook-pow.gemspec",
25
25
  "lib/pow.rb",
26
+ "lib/pow/profile.rb",
26
27
  "pow.rb",
27
28
  "rakefile.rb",
29
+ "test/pow_profile_test.rb",
28
30
  "test/pow_test.rb"
29
31
  ]
30
32
  s.homepage = %q{http://github.com/jamescook/pow}
@@ -33,7 +35,8 @@ Gem::Specification.new do |s|
33
35
  s.rubygems_version = %q{1.3.5}
34
36
  s.summary = %q{puts with colors}
35
37
  s.test_files = [
36
- "test/pow_test.rb"
38
+ "test/pow_profile_test.rb",
39
+ "test/pow_test.rb"
37
40
  ]
38
41
 
39
42
  if s.respond_to? :specification_version then
data/lib/pow.rb CHANGED
@@ -3,6 +3,9 @@ module Pow
3
3
  class << self
4
4
  def included(base)
5
5
  @@defaults = {}
6
+ @@enabled = true
7
+ @@profile = nil
8
+ Pow.load_profile
6
9
  base.send(:define_method, :puts){ |*args| Puts.new(*args) }
7
10
  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 ..
8
11
  base.send(:define_method, :puts_){ |*args| opts=(args.detect{|a| a.is_a?(Hash)} || {}).merge(:misc => {:underline => true}); args.reject!{|a| a.is_a?(Hash)}; args = [args.push(opts)].flatten; Puts.new(*args) } # Now that's just self-explanatory ..
@@ -12,12 +15,41 @@ module Pow
12
15
  base.send(:alias_method, :p_, :puts_)
13
16
  end
14
17
 
18
+ def enable
19
+ @@enabled = true
20
+ end
21
+
22
+ def disable
23
+ @@enabled = false
24
+ end
25
+
26
+ def enabled?
27
+ @@enabled == true
28
+ end
29
+
30
+ def disabled?
31
+ @@enabled == false
32
+ end
33
+
15
34
  def defaults
16
35
  @@defaults
17
36
  end
18
37
 
19
38
  def defaults=(val)
20
- @@defaults.merge!(val)
39
+ @@defaults = val || {}
40
+ end
41
+
42
+ def profile
43
+ @@profile
44
+ end
45
+
46
+ def load_profile( profile_path=:default )
47
+ @@profile = Pow::Profile.new( profile_path )
48
+ Pow.defaults = @@profile.read[:settings] rescue {}
49
+ end
50
+
51
+ def unload_profile
52
+ Pow.defaults = {}
21
53
  end
22
54
  end
23
55
 
@@ -90,7 +122,7 @@ module Pow
90
122
  end
91
123
  @@color = options[:color] || :white
92
124
  @writer = options[:writer] || STDOUT
93
- @formatted_text = format_string(options)
125
+ @formatted_text = Pow.enabled? ? format_string(options) : options[:text] + "\n"
94
126
  out!(@formatted_text)
95
127
  end
96
128
 
@@ -141,7 +173,7 @@ module Pow
141
173
 
142
174
  def format_string(options={})
143
175
  newline = options.fetch(:newline){ "\n" }
144
- color = options.fetch(:color){ :white }
176
+ color = options.fetch(:color){ Pow.defaults[:color] || :white }
145
177
  text = options.fetch(:text){ '' }
146
178
  bold = options.fetch(:bold){ Pow.defaults[:bold] }
147
179
  negative = options.fetch(:negative){ Pow.defaults[:negative] }
@@ -0,0 +1,40 @@
1
+ require 'yaml'
2
+ require 'fileutils'
3
+
4
+ module Pow
5
+
6
+ class Profile
7
+ attr_accessor :profile_path, :settings, :name
8
+ attr_reader :yaml
9
+
10
+ def initialize(profile_path=:default)
11
+ @profile_path = (profile_path == :default) ? File.expand_path("~/.pow_defaults") : profile_path
12
+ @settings = read if File.exists?(@profile_path)
13
+ @name = "Default"
14
+ end
15
+
16
+ def write
17
+ FileUtils.mkdir_p( File.dirname(profile_path) )
18
+ File.open( profile_path, 'wb'){|f| YAML.dump( settings, f ) }
19
+ read
20
+ end
21
+ alias_method :save, :write
22
+
23
+ def read
24
+ @yaml = YAML.load_file( profile_path )
25
+ end
26
+
27
+ def settings=(val)
28
+ @settings = {:name => name, :settings => val}
29
+ end
30
+
31
+ def inspect
32
+ "<Pow::Profile '#{name}'>"
33
+ end
34
+
35
+ def preview
36
+ opts = {:text => "Hello world!"}.merge( settings )
37
+ Puts.new( opts ).out!
38
+ end
39
+ end
40
+ end
data/pow.rb CHANGED
@@ -1 +1,5 @@
1
- require "lib/pow"
1
+ Dir["lib/pow/**"].each do |file|
2
+ require File.expand_path( file )
3
+ end
4
+
5
+ require "lib/pow.rb"
@@ -3,7 +3,7 @@ begin
3
3
  require 'jeweler'
4
4
  Jeweler::Tasks.new do |gemspec|
5
5
  gemspec.name = "jamescook-pow"
6
- gemspec.version = "0.1.5"
6
+ gemspec.version = "0.1.6"
7
7
  gemspec.summary = "puts with colors"
8
8
  gemspec.description = "Ruby 'puts' with shell colors."
9
9
  gemspec.email = "jamecook@gmail.com"
@@ -18,7 +18,9 @@ task :default => [:test]
18
18
 
19
19
  desc "Run tests"
20
20
  task :test do |t|
21
- ruby "test/pow_test.rb"
21
+ Dir[ File.join(File.dirname(File.expand_path(__FILE__)), "test", "**") ].each do |test_file|
22
+ ruby test_file
23
+ end
22
24
  end
23
25
 
24
26
 
@@ -0,0 +1,33 @@
1
+ require 'test/unit'
2
+ require "stringio"
3
+ require File.join( File.dirname(__FILE__), "..", "pow")
4
+
5
+ class PowProfileTest < Test::Unit::TestCase
6
+ include Pow
7
+ def setup
8
+ @puts = Pow::Puts
9
+ @writer = StringIO.new
10
+ @temp_defaults_path = File.join(File.dirname(__FILE__), 'DEFAULTS')
11
+ @settings = {:bold => false, :color => :purple}
12
+ Pow.enable
13
+ end
14
+
15
+ def teardown
16
+ File.unlink( @temp_defaults_path ) if File.exists?(@temp_defaults_path)
17
+ end
18
+
19
+ def test_pow_new_profile_exists_on_save
20
+ profile = Pow::Profile.new( @temp_defaults_path )
21
+ profile.settings = @settings
22
+ profile.save
23
+ assert_equal true, File.exists?( @temp_defaults_path )
24
+ end
25
+
26
+ def test_pow_loads_profile
27
+ profile = Pow::Profile.new( @temp_defaults_path )
28
+ profile.settings = {:color => :red, :bold => false}
29
+ profile.save
30
+ Pow.load_profile( @temp_defaults_path )
31
+ assert_equal profile.settings[:settings], Pow.defaults
32
+ end
33
+ end
@@ -7,6 +7,28 @@ class PowTest < Test::Unit::TestCase
7
7
  def setup
8
8
  @puts = Pow::Puts
9
9
  @writer = StringIO.new
10
+ Pow.enable
11
+ Pow.unload_profile # Prevents users profile from messing up test output
12
+ end
13
+
14
+ def test_pow_enable
15
+ Pow.disable
16
+ Pow.enable
17
+ assert_equal false, Pow.enabled?
18
+ end
19
+
20
+ def test_pow_enable
21
+ Pow.enable
22
+ Pow.disable
23
+ Pow.enable
24
+ assert_equal true, Pow.enabled?
25
+ end
26
+
27
+ def test_puts_strips_formatting_when_pow_disabled
28
+ Pow.disable
29
+ @puts.new(:text => "TEST", :bold => true, :writer => @writer).out!
30
+ @writer.rewind
31
+ assert_equal "TEST\n", @writer.gets
10
32
  end
11
33
 
12
34
  def test_puts
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.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Cook
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-26 00:00:00 -06:00
12
+ date: 2009-11-27 00:00:00 -06:00
13
13
  default_executable: ruby-pow
14
14
  dependencies: []
15
15
 
@@ -27,8 +27,10 @@ files:
27
27
  - bin/ruby-pow
28
28
  - jamescook-pow.gemspec
29
29
  - lib/pow.rb
30
+ - lib/pow/profile.rb
30
31
  - pow.rb
31
32
  - rakefile.rb
33
+ - test/pow_profile_test.rb
32
34
  - test/pow_test.rb
33
35
  has_rdoc: true
34
36
  homepage: http://github.com/jamescook/pow
@@ -59,4 +61,5 @@ signing_key:
59
61
  specification_version: 3
60
62
  summary: puts with colors
61
63
  test_files:
64
+ - test/pow_profile_test.rb
62
65
  - test/pow_test.rb