geek_painter 0.0.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/README.rdoc +6 -2
- data/Rakefile +53 -0
- data/VERSION +1 -1
- data/geek_painter.gemspec +59 -0
- data/geek_painter_client.rb +6 -2
- data/lib/geek_painter/canvas.rb +43 -0
- data/lib/geek_painter/escaping_tools.rb +15 -0
- data/lib/geek_painter/palette.rb +34 -0
- data/lib/geek_painter/string.rb +22 -0
- data/lib/geek_painter.rb +12 -0
- metadata +16 -5
data/.document
ADDED
data/.gitignore
ADDED
data/README.rdoc
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
-
|
1
|
+
== Geek Painter
|
2
2
|
|
3
3
|
A very simple DSL to generate a colored shell prompt to use in *nix OS
|
4
4
|
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
gem install geek_painter
|
8
|
+
|
5
9
|
== Usage
|
6
10
|
|
7
11
|
#put the following lines in a file (ie. geek_painter_client.rb or whatever you want)
|
8
|
-
painting = GeekPainter.
|
12
|
+
painting = GeekPainter.paint do
|
9
13
|
trace "[".in :brown
|
10
14
|
trace "\\u".in :red
|
11
15
|
trace ":".in :yellow
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "geek_painter"
|
8
|
+
gem.summary = %Q{A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals}
|
9
|
+
gem.description = %Q{A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals. it might be used to generate a valid string to be used as a prompt or to generated strings that represent colored text on a terminal.}
|
10
|
+
gem.email = "raf.magana@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/rafmagana/geek_painter"
|
12
|
+
gem.authors = ["Rafael Magana"]
|
13
|
+
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
|
+
end
|
16
|
+
Jeweler::GemcutterTasks.new
|
17
|
+
rescue LoadError
|
18
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'rake/testtask'
|
22
|
+
Rake::TestTask.new(:test) do |test|
|
23
|
+
test.libs << 'lib' << 'test'
|
24
|
+
test.pattern = 'test/**/test_*.rb'
|
25
|
+
test.verbose = true
|
26
|
+
end
|
27
|
+
|
28
|
+
begin
|
29
|
+
require 'rcov/rcovtask'
|
30
|
+
Rcov::RcovTask.new do |test|
|
31
|
+
test.libs << 'test'
|
32
|
+
test.pattern = 'test/**/test_*.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
rescue LoadError
|
36
|
+
task :rcov do
|
37
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
task :test => :check_dependencies
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rake/rdoctask'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "geek_painter #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.1
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{geek_painter}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Rafael Magana"]
|
12
|
+
s.date = %q{2010-04-03}
|
13
|
+
s.description = %q{A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals. it might be used to generate a valid string to be used as a prompt or to generated strings that represent colored text on a terminal.}
|
14
|
+
s.email = %q{raf.magana@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"geek_painter.gemspec",
|
27
|
+
"geek_painter_client.rb",
|
28
|
+
"lib/geek_painter.rb",
|
29
|
+
"lib/geek_painter/canvas.rb",
|
30
|
+
"lib/geek_painter/escaping_tools.rb",
|
31
|
+
"lib/geek_painter/palette.rb",
|
32
|
+
"lib/geek_painter/string.rb",
|
33
|
+
"test/helper.rb",
|
34
|
+
"test/test_geek_painter.rb"
|
35
|
+
]
|
36
|
+
s.homepage = %q{http://github.com/rafmagana/geek_painter}
|
37
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.3.6}
|
40
|
+
s.summary = %q{A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals}
|
41
|
+
s.test_files = [
|
42
|
+
"test/helper.rb",
|
43
|
+
"test/test_geek_painter.rb"
|
44
|
+
]
|
45
|
+
|
46
|
+
if s.respond_to? :specification_version then
|
47
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
52
|
+
else
|
53
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
54
|
+
end
|
55
|
+
else
|
56
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
data/geek_painter_client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require "
|
1
|
+
require "rubygems"
|
2
|
+
require "geek_painter"
|
2
3
|
|
3
4
|
painting = GeekPainter.paint do
|
4
5
|
trace "[".in :brown
|
@@ -12,4 +13,7 @@ painting = GeekPainter.paint do
|
|
12
13
|
end
|
13
14
|
|
14
15
|
painting.print_raw
|
15
|
-
#
|
16
|
+
# >>
|
17
|
+
# >> \[\033[0;33m\][\[\033[0;31m\]\u\[\033[1;33m\]:\[\033[0;31m\]\h\[\033[0;35m\]] \[\033[0m\]\w \[\033[1;33m\]$(__git_ps1)\[\033[0m\] $ \[\033[0m\]
|
18
|
+
# >>
|
19
|
+
# >> copy the string above and put it in your ~/.bashrc or ~/.bash_profile like this => PS1='the_string'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module GeekPainter
|
2
|
+
#
|
3
|
+
# The main DSL, every single call to the "trace" method pushes the parameters to an array
|
4
|
+
# and "raw" method then joins the array to generate the actual string to be used in PS1 or wherever.
|
5
|
+
#
|
6
|
+
# ie. canvas = Canvas.new
|
7
|
+
# canvas.trace "\\[\\033[33m\\]user:" => yellow text
|
8
|
+
# canvas.trace "\\[\\033[34m\\]host" => blue text
|
9
|
+
# canvas.show => \\[\\033[33m\\]user:\\[\\033[34m\\]host => user:host
|
10
|
+
|
11
|
+
class Canvas
|
12
|
+
include EscapingTools
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@traces = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def trace(string)
|
19
|
+
add_trace(string)
|
20
|
+
end
|
21
|
+
|
22
|
+
def raw
|
23
|
+
@traces << escape_char("0")
|
24
|
+
@traces.join("")
|
25
|
+
end
|
26
|
+
|
27
|
+
def print_raw
|
28
|
+
puts ""
|
29
|
+
puts raw
|
30
|
+
puts ""
|
31
|
+
puts "copy the string above and put it in your ~/.bashrc or ~/.bash_profile like this => PS1='the_string'"
|
32
|
+
end
|
33
|
+
|
34
|
+
def show
|
35
|
+
puts raw
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
def add_trace(trace)
|
40
|
+
@traces << trace
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module GeekPainter
|
2
|
+
#
|
3
|
+
# The palette of colors
|
4
|
+
#
|
5
|
+
class Palette
|
6
|
+
extend EscapingTools
|
7
|
+
def self.grab_escaped(color_name)
|
8
|
+
case color_name
|
9
|
+
when :black then escape "0;30"
|
10
|
+
when :dark_gray then escape "1;30"
|
11
|
+
when :light_gray then escape "1;37"
|
12
|
+
when :red then escape "0;31"
|
13
|
+
when :light_red then escape "1;31"
|
14
|
+
when :green then escape "0;32"
|
15
|
+
when :light_green then escape "1;32"
|
16
|
+
when :yellow then escape "1;33"
|
17
|
+
when :brown then escape "0;33"
|
18
|
+
when :blue then escape "0;34"
|
19
|
+
when :light_blue then escape "1;34"
|
20
|
+
when :magenta then escape "0;35"
|
21
|
+
when :light_magenta then escape "1;35"
|
22
|
+
when :cyan then escape "0;36"
|
23
|
+
when :light_cyan then escape "1;36;5"
|
24
|
+
when :white then escape "1;37"
|
25
|
+
when :default then escape "0"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def self.escape(color_code)
|
31
|
+
self.escape_char(color_code.to_s)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# Extend String to help the DSL to be more readable
|
3
|
+
# adds a "in" method to specify the color of the text
|
4
|
+
# ie. "my_text".in :red
|
5
|
+
#
|
6
|
+
module GeekPainter
|
7
|
+
module RubyCoreExtensions
|
8
|
+
module String
|
9
|
+
def in(color_name)
|
10
|
+
Palette.grab_escaped(color_name) + self.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def reset
|
14
|
+
self + escape_char("0")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
String.class_eval do
|
21
|
+
include GeekPainter::RubyCoreExtensions::String
|
22
|
+
end
|
data/lib/geek_painter.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'geek_painter/escaping_tools'
|
2
|
+
require 'geek_painter/string'
|
3
|
+
require 'geek_painter/palette'
|
4
|
+
require 'geek_painter/canvas'
|
5
|
+
|
6
|
+
module GeekPainter
|
7
|
+
def self.paint(&block)
|
8
|
+
@canvas = Canvas.new
|
9
|
+
@canvas.instance_eval(&block)
|
10
|
+
@canvas
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Rafael Magana
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: "0"
|
30
30
|
type: :development
|
31
31
|
version_requirements: *id001
|
32
|
-
description: A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals
|
32
|
+
description: A very simple DSL to generate a colored shell prompt string to use in *nix OS terminals. it might be used to generate a valid string to be used as a prompt or to generated strings that represent colored text on a terminal.
|
33
33
|
email: raf.magana@gmail.com
|
34
34
|
executables: []
|
35
35
|
|
@@ -39,10 +39,21 @@ extra_rdoc_files:
|
|
39
39
|
- LICENSE
|
40
40
|
- README.rdoc
|
41
41
|
files:
|
42
|
+
- .document
|
43
|
+
- .gitignore
|
42
44
|
- LICENSE
|
45
|
+
- README.rdoc
|
46
|
+
- Rakefile
|
43
47
|
- VERSION
|
48
|
+
- geek_painter.gemspec
|
44
49
|
- geek_painter_client.rb
|
45
|
-
-
|
50
|
+
- lib/geek_painter.rb
|
51
|
+
- lib/geek_painter/canvas.rb
|
52
|
+
- lib/geek_painter/escaping_tools.rb
|
53
|
+
- lib/geek_painter/palette.rb
|
54
|
+
- lib/geek_painter/string.rb
|
55
|
+
- test/helper.rb
|
56
|
+
- test/test_geek_painter.rb
|
46
57
|
has_rdoc: true
|
47
58
|
homepage: http://github.com/rafmagana/geek_painter
|
48
59
|
licenses: []
|