fancy_irb 0.6.3 → 0.6.4
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.
- data/README.rdoc +10 -10
- data/Rakefile +27 -18
- data/VERSION +1 -1
- data/fancy_irb.gemspec +16 -39
- data/lib/fancy_irb/irb_ext.rb +16 -6
- data/lib/fancy_irb.rb +7 -7
- metadata +16 -21
data/README.rdoc
CHANGED
@@ -29,19 +29,21 @@ You can pass an options hash. These are the default values:
|
|
29
29
|
:stderr => :light_red,
|
30
30
|
:stdout => :dark_gray,
|
31
31
|
:input => nil,
|
32
|
-
:output => true, #
|
32
|
+
:output => true, # wirb's output colorization
|
33
33
|
},
|
34
34
|
:result_proc => default_result_proc, # how to get the output result (see below)
|
35
35
|
:output_procs => [default_colorizer_proc], # you can modify/enhance/log your output
|
36
|
+
:east_asian_width => false, # set to true if you have double-width characters (slower)
|
36
37
|
}
|
37
38
|
|
38
39
|
=== Rocket mode
|
39
|
-
|
40
40
|
Rocket mode means: Output result as comment if there is enough space left on the terminal line and +stdout+ does not output more than the current terminal height.
|
41
41
|
|
42
|
+
=== Wrong display widths?
|
43
|
+
When using double-width unicode chars, you should set <tt>:east_asian_width</tt> to <tt>true</tt>. It is deactivated because of performance issues.
|
44
|
+
|
42
45
|
=== Available colors
|
43
|
-
|
44
|
-
=> [:light_purple, :yellow, :light_gray, :white, :black, :dark_gray, :red, :green, :light_green, :brown, :light_blue, :light_red, :cyan, :blue, :light_cyan, :purple, :nothing]
|
46
|
+
See <tt>Wirb::COLORS.keys</tt>
|
45
47
|
|
46
48
|
=== Modify your output
|
47
49
|
|
@@ -61,8 +63,8 @@ You can modify how to get and display the input. The <tt>result_proc</tt> is a p
|
|
61
63
|
|
62
64
|
default_colorizer_proc = proc{ |value|
|
63
65
|
FancyIrb.real_lengths[:output] = value.size
|
64
|
-
if defined?(
|
65
|
-
|
66
|
+
if defined?(Wirb) && FancyIrb[:colorize, :output]
|
67
|
+
Wirb.colorize_result value
|
66
68
|
else
|
67
69
|
value
|
68
70
|
end
|
@@ -82,7 +84,7 @@ You can modify how to get and display the input. The <tt>result_proc</tt> is a p
|
|
82
84
|
:colorize => { :output => false,
|
83
85
|
:result_prompt => :yellow },
|
84
86
|
:result_proc => proc{ |context|
|
85
|
-
|
87
|
+
context.last_value.awesome_inspect
|
86
88
|
}
|
87
89
|
|
88
90
|
=== Smileyfy output
|
@@ -99,8 +101,6 @@ You can modify how to get and display the input. The <tt>result_proc</tt> is a p
|
|
99
101
|
=== Features, maybe
|
100
102
|
* Count string lengths without ansi escape sequences (would be more flexible than remembering)
|
101
103
|
* "Always rocket"-mode
|
102
|
-
* Allow custom ansi escape strings instead of wirble's colors
|
103
|
-
* Refactor some code duplications
|
104
104
|
|
105
105
|
Feel free to fix a bug or implement a todo ;)
|
106
106
|
|
@@ -108,6 +108,6 @@ Feel free to fix a bug or implement a todo ;)
|
|
108
108
|
|
109
109
|
Inspired by the irb_rocket gem from genki.
|
110
110
|
|
111
|
-
Copyright (c) 2010-2011 Jan Lelis
|
111
|
+
Copyright (c) 2010-2011 Jan Lelis <http://rbjl.net> released under the MIT license.
|
112
112
|
|
113
113
|
J-_-L
|
data/Rakefile
CHANGED
@@ -1,26 +1,35 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
def gemspec
|
7
|
+
@gemspec ||= eval(File.read('fancy_irb.gemspec'), binding, 'fancy_irb.gemspec')
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Build the gem"
|
11
|
+
task :gem => :gemspec do
|
12
|
+
sh "gem build fancy_irb.gemspec"
|
13
|
+
FileUtils.mkdir_p 'pkg'
|
14
|
+
FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", 'pkg'
|
15
|
+
end
|
3
16
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
gem.name = "fancy_irb"
|
8
|
-
gem.summary = %q{FancyIrb patches your IRB to create a smooth output experience.}
|
9
|
-
gem.description = %q{FancyIrb patches your IRB to create a smooth output experience.
|
10
|
-
* Use fancy colors! You can colorize the prompts, irb errors, stderr and stdout
|
11
|
-
* Output results as Ruby comment #=> (rocket)
|
12
|
-
* Enhance your output value, using procs}
|
13
|
-
gem.email = "mail@janlelis.de"
|
14
|
-
gem.homepage = "http://github.com/janlelis/fancy_irb"
|
15
|
-
gem.authors = ["Jan Lelis"]
|
16
|
-
gem.add_dependency 'wirble'
|
17
|
-
gem.add_dependency 'unicode-display_width'
|
18
|
-
end
|
19
|
-
Jeweler::GemcutterTasks.new
|
20
|
-
rescue LoadError
|
21
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
17
|
+
desc "Install the gem locally (without docs)"
|
18
|
+
task :install => :gem do
|
19
|
+
sh %{gem install pkg/#{gemspec.name}-#{gemspec.version} --no-rdoc --no-ri}
|
22
20
|
end
|
23
21
|
|
22
|
+
desc "Generate the gemspec"
|
23
|
+
task :generate do
|
24
|
+
puts gemspec.to_ruby
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Validate the gemspec"
|
28
|
+
task :gemspec do
|
29
|
+
gemspec.validate
|
30
|
+
end
|
31
|
+
|
32
|
+
|
24
33
|
require 'rake/rdoctask'
|
25
34
|
Rake::RDocTask.new do |rdoc|
|
26
35
|
version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.4
|
data/fancy_irb.gemspec
CHANGED
@@ -1,24 +1,21 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
5
|
-
|
2
|
+
require 'rubygems' unless defined? Gem
|
3
|
+
|
6
4
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.description =
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
s.
|
18
|
-
s.
|
19
|
-
|
20
|
-
|
21
|
-
]
|
5
|
+
s.name = "fancy_irb"
|
6
|
+
s.version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
|
7
|
+
s.authors = ["Jan Lelis"]
|
8
|
+
s.email = "mail@janlelis.de"
|
9
|
+
s.homepage = "http://github.com/janlelis/fancy_irb"
|
10
|
+
s.summary = "FancyIrb patches your IRB to create a smooth output experience."
|
11
|
+
s.description = "FancyIrb patches your IRB to create a smooth output experience. You can colorize the prompts, irb errors, stderr and stdout. Results can be putted as #=> (rocket). Furthermore, it's possible to apply filter procs to your output value."
|
12
|
+
s.required_rubygems_version = '>= 1.3.6'
|
13
|
+
s.required_ruby_version = '>= 1.8.7'
|
14
|
+
#s.files = Dir.glob(%w[{lib,test}/**/*.rb bin/* [A-Z]*.{txt,rdoc} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec}
|
15
|
+
s.extra_rdoc_files = ["README.rdoc", "LICENSE"]
|
16
|
+
s.license = 'MIT'
|
17
|
+
s.add_dependency('wirb', '>= 0')
|
18
|
+
s.add_dependency('unicode-display_width', ">= 0")
|
22
19
|
s.files = [
|
23
20
|
"LICENSE",
|
24
21
|
"README.rdoc",
|
@@ -28,25 +25,5 @@ Gem::Specification.new do |s|
|
|
28
25
|
"lib/fancy_irb.rb",
|
29
26
|
"lib/fancy_irb/irb_ext.rb"
|
30
27
|
]
|
31
|
-
s.homepage = %q{http://github.com/janlelis/fancy_irb}
|
32
|
-
s.require_paths = ["lib"]
|
33
|
-
s.rubygems_version = %q{1.3.7}
|
34
|
-
s.summary = %q{FancyIrb patches your IRB to create a smooth output experience.}
|
35
|
-
|
36
|
-
if s.respond_to? :specification_version then
|
37
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
-
s.specification_version = 3
|
39
|
-
|
40
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
41
|
-
s.add_runtime_dependency(%q<wirble>, [">= 0"])
|
42
|
-
s.add_runtime_dependency(%q<unicode-display_width>, [">= 0"])
|
43
|
-
else
|
44
|
-
s.add_dependency(%q<wirble>, [">= 0"])
|
45
|
-
s.add_dependency(%q<unicode-display_width>, [">= 0"])
|
46
|
-
end
|
47
|
-
else
|
48
|
-
s.add_dependency(%q<wirble>, [">= 0"])
|
49
|
-
s.add_dependency(%q<unicode-display_width>, [">= 0"])
|
50
|
-
end
|
51
28
|
end
|
52
29
|
|
data/lib/fancy_irb/irb_ext.rb
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
if FancyIrb[:east_asian_width]
|
2
|
+
require 'unicode/display_size'
|
3
|
+
else
|
4
|
+
class String
|
5
|
+
alias display_size size
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
1
9
|
module IRB
|
2
10
|
class Irb
|
3
11
|
TPUT = {
|
@@ -8,8 +16,8 @@ module IRB
|
|
8
16
|
}
|
9
17
|
|
10
18
|
def colorize(string, color)
|
11
|
-
if defined?(
|
12
|
-
|
19
|
+
if defined?(::Wirb) && color
|
20
|
+
::Wirb.colorize_string string.to_s, color.to_sym
|
13
21
|
else
|
14
22
|
# if defined? Wirble
|
15
23
|
# Wirble::Colorize::Color.escape( :nothing ) + string.to_s
|
@@ -33,7 +41,7 @@ module IRB
|
|
33
41
|
}
|
34
42
|
|
35
43
|
# reset color
|
36
|
-
print
|
44
|
+
print ::Wirb.get_color( :nothing )
|
37
45
|
|
38
46
|
# try to output in rocket mode (depending on rocket_mode setting)
|
39
47
|
if FancyIrb[:rocket_mode]
|
@@ -67,7 +75,7 @@ module IRB
|
|
67
75
|
# colorize prompt & input
|
68
76
|
alias prompt_non_fancy prompt
|
69
77
|
def prompt(*args, &block)
|
70
|
-
print
|
78
|
+
print ::Wirb.get_color(:nothing)
|
71
79
|
prompt = prompt_non_fancy(*args, &block)
|
72
80
|
|
73
81
|
# this is kinda hacky... but that's irb °_°
|
@@ -78,8 +86,8 @@ module IRB
|
|
78
86
|
|
79
87
|
colorized_prompt = colorize prompt, FancyIrb[:colorize, :input_prompt]
|
80
88
|
if input_color = FancyIrb[:colorize, :input]
|
81
|
-
colorized_prompt +
|
82
|
-
|
89
|
+
colorized_prompt + ::Wirb.get_color( input_color ) # NOTE: No reset, relies on next one
|
90
|
+
# TODO buggy
|
83
91
|
else
|
84
92
|
colorized_prompt
|
85
93
|
end
|
@@ -177,3 +185,5 @@ end
|
|
177
185
|
END{
|
178
186
|
print `tput sgr0`
|
179
187
|
}
|
188
|
+
|
189
|
+
# J-_-L
|
data/lib/fancy_irb.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'stringio'
|
2
|
-
require '
|
3
|
-
require 'unicode/display_width'
|
2
|
+
require 'wirb'
|
4
3
|
|
5
4
|
module FancyIrb
|
6
5
|
VERSION = ( File.read File.expand_path( '../VERSION', File.dirname(__FILE__)) ).chomp
|
@@ -41,8 +40,8 @@ class << FancyIrb
|
|
41
40
|
|
42
41
|
default_colorizer_proc = proc{ |value|
|
43
42
|
FancyIrb.real_lengths[:output] = value.size
|
44
|
-
if defined?(
|
45
|
-
|
43
|
+
if defined?(Wirb) && FancyIrb[:colorize, :output]
|
44
|
+
Wirb.colorize_result value
|
46
45
|
else
|
47
46
|
value
|
48
47
|
end
|
@@ -60,10 +59,11 @@ class << FancyIrb
|
|
60
59
|
:stderr => :light_red,
|
61
60
|
:stdout => :dark_gray,
|
62
61
|
:input => nil,
|
63
|
-
:output => true, #
|
62
|
+
:output => true, # wirb's output colorization
|
64
63
|
},
|
65
64
|
:result_proc => default_result_proc, # how to get the output result
|
66
65
|
:output_procs => [default_colorizer_proc], # you can modify/enhance/log your output
|
66
|
+
:east_asian_width => false, # set to true if you have double-width characters (slower)
|
67
67
|
}
|
68
68
|
|
69
69
|
@options = default_options
|
@@ -118,8 +118,8 @@ class << FancyIrb
|
|
118
118
|
|
119
119
|
def write_stream(stream, data, color = nil)
|
120
120
|
stream.write_non_fancy(
|
121
|
-
if defined?(
|
122
|
-
|
121
|
+
if defined?(Wirb) && FancyIrb.stdout_colorful && color
|
122
|
+
Wirb.colorize_string data.to_s, color
|
123
123
|
else
|
124
124
|
data.to_s
|
125
125
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fancy_irb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 1
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
8
|
+
- 4
|
9
|
+
version: 0.6.4
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Jan Lelis
|
@@ -15,18 +14,17 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-27 00:00:00 +01:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
21
|
+
name: wirb
|
23
22
|
prerelease: false
|
24
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,25 +38,20 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
41
|
segments:
|
45
42
|
- 0
|
46
43
|
version: "0"
|
47
44
|
type: :runtime
|
48
45
|
version_requirements: *id002
|
49
|
-
description:
|
50
|
-
FancyIrb patches your IRB to create a smooth output experience.
|
51
|
-
* Use fancy colors! You can colorize the prompts, irb errors, stderr and stdout
|
52
|
-
* Output results as Ruby comment #=> (rocket)
|
53
|
-
* Enhance your output value, using procs
|
46
|
+
description: "FancyIrb patches your IRB to create a smooth output experience. You can colorize the prompts, irb errors, stderr and stdout. Results can be putted as #=> (rocket). Furthermore, it's possible to apply filter procs to your output value."
|
54
47
|
email: mail@janlelis.de
|
55
48
|
executables: []
|
56
49
|
|
57
50
|
extensions: []
|
58
51
|
|
59
52
|
extra_rdoc_files:
|
60
|
-
- LICENSE
|
61
53
|
- README.rdoc
|
54
|
+
- LICENSE
|
62
55
|
files:
|
63
56
|
- LICENSE
|
64
57
|
- README.rdoc
|
@@ -69,8 +62,8 @@ files:
|
|
69
62
|
- lib/fancy_irb/irb_ext.rb
|
70
63
|
has_rdoc: true
|
71
64
|
homepage: http://github.com/janlelis/fancy_irb
|
72
|
-
licenses:
|
73
|
-
|
65
|
+
licenses:
|
66
|
+
- MIT
|
74
67
|
post_install_message:
|
75
68
|
rdoc_options: []
|
76
69
|
|
@@ -81,19 +74,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
81
74
|
requirements:
|
82
75
|
- - ">="
|
83
76
|
- !ruby/object:Gem::Version
|
84
|
-
hash: 3
|
85
77
|
segments:
|
86
|
-
-
|
87
|
-
|
78
|
+
- 1
|
79
|
+
- 8
|
80
|
+
- 7
|
81
|
+
version: 1.8.7
|
88
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
83
|
none: false
|
90
84
|
requirements:
|
91
85
|
- - ">="
|
92
86
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 3
|
94
87
|
segments:
|
95
|
-
-
|
96
|
-
|
88
|
+
- 1
|
89
|
+
- 3
|
90
|
+
- 6
|
91
|
+
version: 1.3.6
|
97
92
|
requirements: []
|
98
93
|
|
99
94
|
rubyforge_project:
|