wirb 1.0.3 → 2.0.0
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.
- checksums.yaml +4 -4
- data/{CHANGELOG.rdoc → CHANGELOG.md} +51 -25
- data/COPYING.txt +5 -5
- data/README.md +75 -0
- data/data/wirb/{classic_paint.yml → classic.yml} +11 -42
- data/data/wirb/colorless.yml +10 -27
- data/data/wirb/gray.yml +103 -0
- data/lib/wirb.rb +69 -114
- data/lib/wirb/inspector.rb +10 -0
- data/lib/wirb/irb.rb +3 -12
- data/lib/wirb/schema_builder.rb +44 -0
- data/lib/wirb/tokenizer.rb +404 -430
- data/lib/wirb/version.rb +1 -1
- data/lib/wirb/wp.rb +3 -7
- data/spec/spec_helper.rb +5 -122
- data/spec/tokenizer_enumerator_spec.rb +580 -37
- data/spec/tokenizer_misc_spec.rb +55 -53
- data/spec/tokenizer_number_spec.rb +30 -28
- data/spec/tokenizer_object_spec.rb +67 -31
- data/wirb.gemspec +8 -20
- metadata +33 -48
- data/.gemtest +0 -0
- data/README.rdoc +0 -79
- data/data/wirb/classic_wirb0.yml +0 -72
- data/lib/wirb/colorizer.rb +0 -26
- data/lib/wirb/colorizer/highline.rb +0 -16
- data/lib/wirb/colorizer/paint.rb +0 -11
- data/lib/wirb/colorizer/wirb0.rb +0 -53
- data/lib/wirb/colorizer/wirb0_highline.rb +0 -73
- data/lib/wirb/colorizer/wirb0_paint.rb +0 -71
- data/lib/wirb/colorizer/wirble.rb +0 -30
- data/spec/colorizer_highline_spec.rb +0 -23
- data/spec/colorizer_paint_spec.rb +0 -33
- data/spec/colorizer_spec.rb +0 -67
- data/spec/colorizer_wirb0_highline_spec.rb +0 -78
- data/spec/colorizer_wirb0_paint_spec.rb +0 -35
- data/spec/colorizer_wirb0_spec.rb +0 -11
- data/spec/colorizer_wirble_spec.rb +0 -24
- data/spec/tokenizer_rubygems_spec.rb +0 -84
data/.gemtest
DELETED
File without changes
|
data/README.rdoc
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
== Wirb Interactive Ruby {<img src="https://travis-ci.org/janlelis/wirb.png" />}[https://travis-ci.org/janlelis/wirb]
|
2
|
-
|
3
|
-
*Wirb* colorizes your inspected Ruby objects. It is based on Wirble[http://pablotron.org/software/wirble/], but only provides and improves result highlighting. It also provides a colorization engine abstraction layer and offers flexible schemas using yaml. Wirb is part of the {irbtools suite}[https://github.com/janlelis/irbtools].
|
4
|
-
|
5
|
-
Supported Rubies: 2.1, 2.0, 1.9, 1.8, jruby, rubinius
|
6
|
-
|
7
|
-
== Install
|
8
|
-
|
9
|
-
Install the gem with:
|
10
|
-
|
11
|
-
gem install wirb
|
12
|
-
|
13
|
-
== Usage
|
14
|
-
|
15
|
-
Add to your <tt>~/.irbrc</tt>
|
16
|
-
|
17
|
-
require 'wirb'
|
18
|
-
Wirb.start
|
19
|
-
|
20
|
-
== Features
|
21
|
-
|
22
|
-
* Syntax highlighting for Ruby objects
|
23
|
-
* Does not change the inspect method
|
24
|
-
* Support for generic objects, especially sets and enumerators and nesting more generic objects
|
25
|
-
* Funny looking test suite
|
26
|
-
* Can be used without irb
|
27
|
-
* Limited stdlib/gem objects support (e.g. Set, Gem::Requirement)
|
28
|
-
* Usable with any supported terminal colors engine
|
29
|
-
* Color schemas in yaml files
|
30
|
-
|
31
|
-
== wp
|
32
|
-
You can colorize any object with <tt>wp</tt> (wavy_print):
|
33
|
-
require 'wirb/wp'
|
34
|
-
wp some_object
|
35
|
-
|
36
|
-
== Colors
|
37
|
-
|
38
|
-
To only tweak some colors, take a look at the <tt>Wirb.schema</tt> hash. To use a custom schema, inspect the yaml files in the <tt>data/wirb/</tt> directory. You can create your own schema and load it using <tt>Wirb.load_schema(path_to_yaml_file)</tt>. Alternatively, you can use one of the bundled ones by passing a symbol instead of a path.
|
39
|
-
|
40
|
-
=== Colorizer
|
41
|
-
|
42
|
-
Wirb supports multiple colorization engines. Available engines can be found in <tt>lib/wirb/colorizer/*</tt>. Some of them require external gems as dependencies (e.g. HighLine). The current default engine is <em>Paint</em>. You can change the colorizer using:
|
43
|
-
|
44
|
-
Wirb.load_colorizer :Paint # or :HighLine or whatever
|
45
|
-
|
46
|
-
Be careful, though! You also need to select a color schema that supports your colorizer (Schemas define supported colorizers using the <tt>:colorizer</tt> key). Load a schema with:
|
47
|
-
|
48
|
-
Wirb.load_schema! :classic_paint # make sure your colorizer is paint
|
49
|
-
|
50
|
-
You can automatically use the first colorizer of the schema by using the non-exclamation mark version:
|
51
|
-
|
52
|
-
Wirb.load_schema :classic_paint # will fail if paint is not installed
|
53
|
-
|
54
|
-
Color schemas wanted! You've got a good looking alternative color schema? Please fork and add it to <tt>data/wirb/*</tt> :)
|
55
|
-
|
56
|
-
Colorizers wanted! Your favorite terminal colors gem is not supported yet? Please fork and add it to <tt>lib/wirb/colorizer/*</tt> :D
|
57
|
-
|
58
|
-
=== Bundled schemas
|
59
|
-
|
60
|
-
The following schemas are bundled (load with <tt>Wirb.load_schema :name</tt> and make sure the used colorizer is available).
|
61
|
-
|
62
|
-
* <tt>:classic_paint</tt> (paint implementation of default)
|
63
|
-
* <tt>:colorless</tt> (only uses :bright, :underline and :inverse effect)
|
64
|
-
* <tt>:classic_wirb0</tt> (default implemented with wirb0)
|
65
|
-
|
66
|
-
== Also see
|
67
|
-
|
68
|
-
* Configure views for specific objects: hirb[https://github.com/cldwalker/hirb]
|
69
|
-
* Wirb is part of: irbtools[https://github.com/janlelis/irbtools]
|
70
|
-
* ripl is an irb alternative, syntax highlighting plugin (uses wirb by default): ripl-color_result[https://github.com/janlelis/ripl-color_result]
|
71
|
-
* Advanced terminal color gems: Paint[https://github.com/janlelis/paint], HighLine[https://github.com/JEG2/highline]
|
72
|
-
|
73
|
-
== Credits
|
74
|
-
|
75
|
-
Copyright (c) 2011-2014 Jan Lelis <http://janlelis.de>, see COPYING for details.
|
76
|
-
|
77
|
-
Influenced by code from and thanks to: Copyright (C) 2006-2009 Paul Duncan <pabs@pablotron.org>
|
78
|
-
|
79
|
-
Contributions[https://github.com/janlelis/wirb/contributors] by and thanks to: {Richard LeBer}[https://github.com/rleber]
|
data/data/wirb/classic_wirb0.yml
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
colorizer:
|
2
|
-
- Wirb0
|
3
|
-
- Wirb0_Paint
|
4
|
-
- Wirb0_HighLine
|
5
|
-
|
6
|
-
# container
|
7
|
-
open_hash: light_green
|
8
|
-
close_hash: light_green
|
9
|
-
open_array: light_green
|
10
|
-
close_array: light_green
|
11
|
-
open_set: green
|
12
|
-
close_set: green
|
13
|
-
|
14
|
-
# delimiter
|
15
|
-
comma: green
|
16
|
-
refers: green
|
17
|
-
|
18
|
-
# class
|
19
|
-
class: light_green
|
20
|
-
class_separator: green
|
21
|
-
object_class: light_green
|
22
|
-
|
23
|
-
# object
|
24
|
-
open_object: green
|
25
|
-
object_description_prefix: green
|
26
|
-
object_description: brown
|
27
|
-
object_address_prefix: brown_underline
|
28
|
-
object_address: brown_underline
|
29
|
-
object_line_prefix: brown_underline
|
30
|
-
object_line: brown_underline
|
31
|
-
object_line_number: brown_underline
|
32
|
-
object_variable_prefix: light_purple
|
33
|
-
object_variable: light_purple
|
34
|
-
close_object: green
|
35
|
-
|
36
|
-
# symbol
|
37
|
-
symbol_prefix: yellow
|
38
|
-
symbol: yellow
|
39
|
-
open_symbol_string: brown
|
40
|
-
symbol_string: yellow
|
41
|
-
close_symbol_string: brown
|
42
|
-
|
43
|
-
# string
|
44
|
-
open_string: light_gray
|
45
|
-
string: purple
|
46
|
-
close_string: light_gray
|
47
|
-
|
48
|
-
# regexp
|
49
|
-
open_regexp: light_blue
|
50
|
-
regexp: purple
|
51
|
-
close_regexp: light_blue
|
52
|
-
regexp_flags: light_red
|
53
|
-
|
54
|
-
# number
|
55
|
-
number: cyan
|
56
|
-
special_number: cyan
|
57
|
-
range: red
|
58
|
-
open_rational: light_cyan
|
59
|
-
rational_separator: light_cyan
|
60
|
-
close_rational: light_cyan
|
61
|
-
open_complex: cyan
|
62
|
-
close_complex: cyan
|
63
|
-
|
64
|
-
# misc
|
65
|
-
#default:
|
66
|
-
#keyword:
|
67
|
-
time: purple
|
68
|
-
nil: light_red
|
69
|
-
false: red
|
70
|
-
true: green
|
71
|
-
gem_requirement_condition: cyan
|
72
|
-
gem_requirement_version: light_cyan
|
data/lib/wirb/colorizer.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# Jan:
|
2
|
-
# General philosophical question: Would it be more flexible to have @colorizer point
|
3
|
-
# to an _instance_ of a Colorizer object, rather than a Colorizer class? (And therefore
|
4
|
-
# to have run and color be instance methods of Colorizer, rather than class methods.)
|
5
|
-
# In certain circumstances this could give greater flexibility, for instance to set
|
6
|
-
# colorizer options...
|
7
|
-
|
8
|
-
module Wirb
|
9
|
-
module Colorizer
|
10
|
-
class << self
|
11
|
-
def const_missing(colorizer)
|
12
|
-
path = File.dirname(__FILE__) + '/colorizer/' + colorizer.to_s.downcase
|
13
|
-
|
14
|
-
begin
|
15
|
-
require path
|
16
|
-
rescue LoadError => e
|
17
|
-
raise LoadError, "Could not load colorizer #{colorizer} at #{path}: #{e}"
|
18
|
-
end
|
19
|
-
|
20
|
-
raise LoadError, "Colorizer definition at #{path} does not appear to define #{self}::#{colorizer}" \
|
21
|
-
unless const_defined?(colorizer)
|
22
|
-
const_get colorizer
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'highline'
|
2
|
-
|
3
|
-
module Wirb::Colorizer::HighLine
|
4
|
-
@highline = ::HighLine.new
|
5
|
-
|
6
|
-
class << self
|
7
|
-
|
8
|
-
def run(string, *color_args)
|
9
|
-
@highline.color(string, *color_args.flatten)
|
10
|
-
end
|
11
|
-
|
12
|
-
def color(*color_args)
|
13
|
-
@highline.color_code(*color_args.flatten)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
data/lib/wirb/colorizer/paint.rb
DELETED
data/lib/wirb/colorizer/wirb0.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
module Wirb::Colorizer::Wirb0
|
2
|
-
COLORS = {
|
3
|
-
:nothing => '0;0',
|
4
|
-
|
5
|
-
# light
|
6
|
-
:black => '0;30',
|
7
|
-
:red => '0;31',
|
8
|
-
:green => '0;32',
|
9
|
-
:brown => '0;33',
|
10
|
-
:blue => '0;34',
|
11
|
-
:purple => '0;35',
|
12
|
-
:cyan => '0;36',
|
13
|
-
:light_gray => '0;37',
|
14
|
-
|
15
|
-
# bold
|
16
|
-
:dark_gray => '1;30',
|
17
|
-
:light_red => '1;31',
|
18
|
-
:light_green => '1;32',
|
19
|
-
:yellow => '1;33',
|
20
|
-
:light_blue => '1;34',
|
21
|
-
:light_purple => '1;35',
|
22
|
-
:light_cyan => '1;36',
|
23
|
-
:white => '1;37',
|
24
|
-
|
25
|
-
# underline
|
26
|
-
:black_underline => '4;30',
|
27
|
-
:red_underline => '4;31',
|
28
|
-
:green_underline => '4;32',
|
29
|
-
:brown_underline => '4;33',
|
30
|
-
:blue_underline => '4;34',
|
31
|
-
:purple_underline => '4;35',
|
32
|
-
:cyan_underline => '4;36',
|
33
|
-
:white_underline => '4;37',
|
34
|
-
|
35
|
-
# background
|
36
|
-
:black_background => '7;30',
|
37
|
-
:red_background => '7;31',
|
38
|
-
:green_background => '7;32',
|
39
|
-
:brown_background => '7;33',
|
40
|
-
:blue_background => '7;34',
|
41
|
-
:purple_background => '7;35',
|
42
|
-
:cyan_background => '7;36',
|
43
|
-
:white_background => '7;37',
|
44
|
-
}
|
45
|
-
|
46
|
-
def self.run(string, *color_args)
|
47
|
-
color(*color_args) + string.to_s + color(:nothing)
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.color(*color_args)
|
51
|
-
color_args.first && COLORS[color_args.first.to_sym] ? "\e[#{COLORS[color_args.first.to_sym]}m" : ''
|
52
|
-
end
|
53
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
# Colorizer for using HighLine colors with Wirb
|
2
|
-
#
|
3
|
-
# Automatically translates Wirb color to Highline colors:
|
4
|
-
# HighLineConnector.color(s, :brown_underline) #=> calls HighLine.color(s, :yellow, :underline)
|
5
|
-
#
|
6
|
-
# You can mix and match using HighLine color names and Wirb color names. Prefix HighLine color names
|
7
|
-
# with :highline. For instance:
|
8
|
-
#
|
9
|
-
# Wirb.colorizer.run(s, :highline, :yellow) #=> calls HighLine.color(s, :yellow)
|
10
|
-
# Wirb.colorizer.run(s, :yellow) #=> calls HighLine.color(s, :bold, :yellow) because
|
11
|
-
# # Wirb uses :yellow to mean bold yellow
|
12
|
-
|
13
|
-
require 'highline'
|
14
|
-
|
15
|
-
module Wirb::Colorizer::Wirb0_HighLine
|
16
|
-
def self.color(*colors)
|
17
|
-
::HighLine.color_code(*color_name(*colors))
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.run(s, *colors)
|
21
|
-
::HighLine.color(s, *color_name(*colors))
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
def self.color_name(*colors)
|
26
|
-
colors = colors.flatten.compact
|
27
|
-
if colors.first == :highline # In this case, colors already use HighLine's names
|
28
|
-
colors[1..-1]
|
29
|
-
else
|
30
|
-
translated_colors = colors.map do |color|
|
31
|
-
color = color.to_s
|
32
|
-
case color
|
33
|
-
when "nothing"
|
34
|
-
color = "clear"
|
35
|
-
when /light_gray/
|
36
|
-
color = color.sub("light_gray", "white")
|
37
|
-
when /dark_gray/
|
38
|
-
color = color.sub("dark_gray", "light_black") # Changed to [:bold, :black] below
|
39
|
-
when /yellow/
|
40
|
-
color = color.sub("yellow", "light_yellow") # Changed to [:bold, :yellow] below
|
41
|
-
when /white/
|
42
|
-
color = color.sub("white", "light_white") # Changed to [:bold, :white] below
|
43
|
-
when /brown/
|
44
|
-
color = color.sub("brown", "yellow")
|
45
|
-
when /purple/
|
46
|
-
color = color.sub("purple", "magenta")
|
47
|
-
end
|
48
|
-
color_set = [color.to_sym]
|
49
|
-
if color_set.first.to_s =~ /^light_(.*)/
|
50
|
-
color_set[0] = $1.to_sym
|
51
|
-
color_set << :bold
|
52
|
-
end
|
53
|
-
case color_set.first.to_s
|
54
|
-
when /(.*)_underline$/
|
55
|
-
color_set[0] = [$1.to_sym]
|
56
|
-
color_set << :underline
|
57
|
-
when /(.*)_background$/
|
58
|
-
color_set[0] = [('on_'+$1).to_sym]
|
59
|
-
end
|
60
|
-
color_set
|
61
|
-
end
|
62
|
-
translated_colors.flatten
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def color_code(*args)
|
67
|
-
self.class.color_code(*args)
|
68
|
-
end
|
69
|
-
|
70
|
-
def color(*args)
|
71
|
-
self.class.color(*args)
|
72
|
-
end
|
73
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'paint'
|
2
|
-
|
3
|
-
Paint::SHORTCUTS[:wirb] = {
|
4
|
-
:nothing => Paint::NOTHING,
|
5
|
-
|
6
|
-
# light
|
7
|
-
:black => Paint.color(:black),
|
8
|
-
:red => Paint.color(:red),
|
9
|
-
:green => Paint.color(:green),
|
10
|
-
:brown => Paint.color(:yellow),
|
11
|
-
:blue => Paint.color(:blue),
|
12
|
-
:purple => Paint.color(:magenta),
|
13
|
-
:cyan => Paint.color(:cyan),
|
14
|
-
:light_gray => Paint.color(:white),
|
15
|
-
|
16
|
-
# bold
|
17
|
-
:dark_gray => Paint.color(:black, :bold),
|
18
|
-
:light_red => Paint.color(:red, :bold),
|
19
|
-
:light_green => Paint.color(:green, :bold),
|
20
|
-
:yellow => Paint.color(:yellow, :bold),
|
21
|
-
:light_blue => Paint.color(:blue, :bold),
|
22
|
-
:light_purple => Paint.color(:magenta, :bold),
|
23
|
-
:light_cyan => Paint.color(:cyan, :bold),
|
24
|
-
:white => Paint.color(:white, :bold),
|
25
|
-
|
26
|
-
# underline
|
27
|
-
:black_underline => Paint.color(:black, :underline),
|
28
|
-
:red_underline => Paint.color(:red, :underline),
|
29
|
-
:green_underline => Paint.color(:green, :underline),
|
30
|
-
:brown_underline => Paint.color(:yellow, :underline),
|
31
|
-
:blue_underline => Paint.color(:blue, :underline),
|
32
|
-
:purple_underline => Paint.color(:magenta, :underline),
|
33
|
-
:cyan_underline => Paint.color(:cyan, :underline),
|
34
|
-
:white_underline => Paint.color(:white, :underline),
|
35
|
-
|
36
|
-
# background
|
37
|
-
:black_background => Paint.color(nil, :black), # first color passed is foreground, second one is background
|
38
|
-
:red_background => Paint.color(nil, :red),
|
39
|
-
:green_background => Paint.color(nil, :green),
|
40
|
-
:brown_background => Paint.color(nil, :yellow),
|
41
|
-
:blue_background => Paint.color(nil, :blue),
|
42
|
-
:purple_background => Paint.color(nil, :magenta),
|
43
|
-
:cyan_background => Paint.color(nil, :cyan),
|
44
|
-
:white_background => Paint.color(nil, :white),
|
45
|
-
}
|
46
|
-
|
47
|
-
module Wirb::Colorizer::Wirb0_Paint
|
48
|
-
def self.run(string, *color_args)
|
49
|
-
if color_args.first && color_args.size == 1 && color_args.first.is_a?(Symbol)
|
50
|
-
if color_args.first == :paint # force usage of paint colors
|
51
|
-
Paint[string, *color_args[1..-1]]
|
52
|
-
else
|
53
|
-
Paint::Wirb.send(color_args.first, string)
|
54
|
-
end
|
55
|
-
else
|
56
|
-
Paint[string, *color_args]
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def self.color(*color_args)
|
61
|
-
if color_args.first && color_args.size == 1 && color_args.first.is_a?(Symbol)
|
62
|
-
if color_args.first == :paint # force usage of paint colors
|
63
|
-
Paint[string, *color_args[1..-1]]
|
64
|
-
else
|
65
|
-
Paint::Wirb.send(color_args.first)
|
66
|
-
end
|
67
|
-
else
|
68
|
-
Paint.color(*color_args)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Wirb::Colorizer::Wirble
|
2
|
-
COLORS = {
|
3
|
-
:nothing => '0;0',
|
4
|
-
:black => '0;30',
|
5
|
-
:red => '0;31',
|
6
|
-
:green => '0;32',
|
7
|
-
:brown => '0;33',
|
8
|
-
:blue => '0;34',
|
9
|
-
:cyan => '0;36',
|
10
|
-
:purple => '0;35',
|
11
|
-
:light_gray => '0;37',
|
12
|
-
:dark_gray => '1;30',
|
13
|
-
:light_red => '1;31',
|
14
|
-
:light_green => '1;32',
|
15
|
-
:yellow => '1;33',
|
16
|
-
:light_blue => '1;34',
|
17
|
-
:light_cyan => '1;36',
|
18
|
-
:light_purple => '1;35',
|
19
|
-
:white => '1;37',
|
20
|
-
}
|
21
|
-
|
22
|
-
|
23
|
-
def self.run(string, *color_args)
|
24
|
-
color(*color_args) + string.to_s + color(:nothing)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.color(*color_args)
|
28
|
-
color_args.first && COLORS[color_args.first.to_sym] ? "\e[#{COLORS[color_args.first.to_sym]}m" : ''
|
29
|
-
end
|
30
|
-
end
|