rib 0.9.5 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +15 -0
- data/Rakefile +2 -2
- data/lib/rib/app/auto.rb +1 -1
- data/lib/rib/app/rails.rb +1 -1
- data/lib/rib/app/ramaze.rb +1 -1
- data/lib/rib/core/completion.rb +5 -4
- data/lib/rib/extra/autoindent.rb +5 -4
- data/lib/rib/extra/hirb.rb +4 -3
- data/lib/rib/more/anchor.rb +8 -6
- data/lib/rib/more/color.rb +12 -2
- data/lib/rib/runner.rb +22 -13
- data/lib/rib/version.rb +1 -1
- data/rib.gemspec +3 -3
- data/task/gemgem.rb +89 -15
- data/test/more/test_color.rb +6 -6
- metadata +3 -3
data/CHANGES.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Rib CHANGES
|
2
2
|
|
3
|
+
## Rib 0.9.9 -- 2011-10-26
|
4
|
+
|
5
|
+
### Bugs fixes
|
6
|
+
|
7
|
+
* [more/color] Fixed Windows coloring support.
|
8
|
+
* [more/color] Properly reset ANSI sequence.
|
9
|
+
|
10
|
+
### Enhancement
|
11
|
+
|
12
|
+
* [commands] Extract commands description under `__END__` in the commands.
|
13
|
+
Please read [rib-rest-core][] as an example.
|
14
|
+
* [rib] Always show original errors if anything is wrong.
|
15
|
+
|
16
|
+
[rib-rest-core]: https://github.com/cardinalblue/rest-core/blob/rest-core-0.7.0/bin/rib-rest-core#L21-22
|
17
|
+
|
3
18
|
## Rib 0.9.5 -- 2011-09-03
|
4
19
|
|
5
20
|
* [rib-rails] Fixed Rails3 (sandbox) and Rails2 (env) console. Thanks bootleq
|
data/Rakefile
CHANGED
data/lib/rib/app/auto.rb
CHANGED
data/lib/rib/app/rails.rb
CHANGED
data/lib/rib/app/ramaze.rb
CHANGED
data/lib/rib/core/completion.rb
CHANGED
@@ -26,9 +26,10 @@ end
|
|
26
26
|
|
27
27
|
begin
|
28
28
|
Rib.silence{require 'bond'}
|
29
|
-
rescue LoadError
|
30
|
-
Rib.warn("
|
31
|
-
"
|
32
|
-
"
|
29
|
+
rescue LoadError => e
|
30
|
+
Rib.warn("Error: #{e}" ,
|
31
|
+
"Please install bond to use completion plugin:\n",
|
32
|
+
" gem install bond\n" ,
|
33
|
+
"Or add bond to Gemfile if that's the case" )
|
33
34
|
Rib::Completion.disable
|
34
35
|
end
|
data/lib/rib/extra/autoindent.rb
CHANGED
@@ -155,9 +155,10 @@ end
|
|
155
155
|
|
156
156
|
begin
|
157
157
|
require 'readline_buffer'
|
158
|
-
rescue LoadError
|
159
|
-
Rib.warn("
|
160
|
-
"
|
161
|
-
"
|
158
|
+
rescue LoadError => e
|
159
|
+
Rib.warn("Error: #{e}" ,
|
160
|
+
"Please install readline_buffer to use autoindent plugin:\n",
|
161
|
+
" gem install readline_buffer\n" ,
|
162
|
+
"Or add readline_buffer to Gemfile if that's the case" )
|
162
163
|
Rib::Autoindent.disable
|
163
164
|
end
|
data/lib/rib/extra/hirb.rb
CHANGED
@@ -18,9 +18,10 @@ begin
|
|
18
18
|
require 'hirb'
|
19
19
|
::Hirb.enable
|
20
20
|
}
|
21
|
-
rescue LoadError
|
22
|
-
Rib.warn("
|
23
|
-
"
|
21
|
+
rescue LoadError => e
|
22
|
+
Rib.warn("Error: #{e}" ,
|
23
|
+
"Please install hirb to use hirb plugin:\n",
|
24
|
+
" gem install hirb\n" ,
|
24
25
|
"Or add hirb to Gemfile if that's the case")
|
25
26
|
Rib::Hirb.disable
|
26
27
|
end
|
data/lib/rib/more/anchor.rb
CHANGED
@@ -18,7 +18,7 @@ module Rib::Anchor
|
|
18
18
|
|
19
19
|
def prompt
|
20
20
|
return super if Rib::Anchor.disabled?
|
21
|
-
return super unless config[:
|
21
|
+
return super unless config[:prompt_anchor]
|
22
22
|
|
23
23
|
level = "(#{Rib.shells.size - 1})"
|
24
24
|
if Rib.const_defined?(:Color) &&
|
@@ -53,16 +53,18 @@ module Rib::Anchor
|
|
53
53
|
end
|
54
54
|
|
55
55
|
module Imp
|
56
|
-
def anchor obj_or_binding
|
56
|
+
def anchor obj_or_binding, opts={}
|
57
57
|
return if Rib::Anchor.disabled?
|
58
58
|
|
59
59
|
if Rib.shell.running?
|
60
60
|
Rib.shells << Rib::Shell.new(
|
61
|
-
Rib.shell.config.merge( :binding
|
62
|
-
:
|
61
|
+
Rib.shell.config.merge( :binding => obj_or_binding,
|
62
|
+
:prompt_anchor => true ).
|
63
|
+
merge(opts))
|
63
64
|
else
|
64
|
-
Rib.shell.config.merge!(:binding
|
65
|
-
:
|
65
|
+
Rib.shell.config.merge!(:binding => obj_or_binding,
|
66
|
+
:prompt_anchor => true ).
|
67
|
+
merge!(opts)
|
66
68
|
end
|
67
69
|
|
68
70
|
Rib.shell.loop
|
data/lib/rib/more/color.rb
CHANGED
@@ -84,7 +84,7 @@ module Rib::Color
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def color rgb
|
87
|
-
"\
|
87
|
+
"\e[#{rgb}m" + if block_given? then "#{yield}#{reset}" else '' end
|
88
88
|
end
|
89
89
|
|
90
90
|
def black █ color(30, &block); end
|
@@ -95,5 +95,15 @@ module Rib::Color
|
|
95
95
|
def magenta █ color(35, &block); end
|
96
96
|
def cyan █ color(36, &block); end
|
97
97
|
def white █ color(37, &block); end
|
98
|
-
def reset █ color(
|
98
|
+
def reset █ color( 0, &block); end
|
99
|
+
end
|
100
|
+
|
101
|
+
begin
|
102
|
+
require 'win32console' if defined?(Gem) && Gem.win_platform?
|
103
|
+
rescue LoadError => e
|
104
|
+
Rib.warn("Error: #{e}" ,
|
105
|
+
"Please install win32console to use color plugin on Windows:\n",
|
106
|
+
" gem install win32console\n" ,
|
107
|
+
"Or add win32console to Gemfile if that's the case" )
|
108
|
+
Rib::Color.disable
|
99
109
|
end
|
data/lib/rib/runner.rb
CHANGED
@@ -32,14 +32,17 @@ module Rib::Runner
|
|
32
32
|
|
33
33
|
def commands
|
34
34
|
@commands ||=
|
35
|
-
|
35
|
+
command_paths.map{ |path|
|
36
|
+
name = File.basename(path)[/^rib\-(.+)$/, 1]
|
37
|
+
[name, command_descriptions[name] ||
|
38
|
+
command_descriptions_find(path) || ' '] }
|
36
39
|
end
|
37
40
|
|
38
|
-
def
|
39
|
-
@
|
41
|
+
def command_paths
|
42
|
+
@command_paths ||=
|
40
43
|
Gem.path.map{ |path|
|
41
44
|
Dir["#{path}/bin/*"].map{ |f|
|
42
|
-
(File.executable?(f) && File.basename(f) =~ /^rib
|
45
|
+
(File.executable?(f) && File.basename(f) =~ /^rib\-.+$/ && f) ||
|
43
46
|
nil # a trick to make false to be nil and then
|
44
47
|
}.compact # this compact could eliminate them
|
45
48
|
}.flatten
|
@@ -54,6 +57,12 @@ module Rib::Runner
|
|
54
57
|
'ramaze' => 'Run as Ramaze console' }
|
55
58
|
end
|
56
59
|
|
60
|
+
# Extract the text below __END__ in the bin file as the description
|
61
|
+
def command_descriptions_find path
|
62
|
+
File.read(path) =~ /Gem\.bin_path\(['"](.+)['"], ['"](.+)['"],/
|
63
|
+
File.read(Gem.bin_path($1, $2))[/\n__END__\n(.+)$/m, 1].strip
|
64
|
+
end
|
65
|
+
|
57
66
|
def run argv=ARGV
|
58
67
|
(@running_commands ||= []) << Rib.config[:name]
|
59
68
|
unused = parse(argv)
|
@@ -71,36 +80,36 @@ module Rib::Runner
|
|
71
80
|
unused = []
|
72
81
|
until argv.empty?
|
73
82
|
case arg = argv.shift
|
74
|
-
when
|
83
|
+
when /^-e=?(.+)?/, /^--eval=?(.+)?/
|
75
84
|
eval($1 || argv.shift, binding, __FILE__, __LINE__)
|
76
85
|
|
77
|
-
when
|
86
|
+
when /^-d/, '--debug'
|
78
87
|
$DEBUG = true
|
79
88
|
argv.unshift("-#{arg[2..-1]}") if arg.size > 2
|
80
89
|
|
81
|
-
when
|
90
|
+
when /^-w/, '--warn'
|
82
91
|
$-w, $VERBOSE = true, true
|
83
92
|
argv.unshift("-#{arg[2..-1]}") if arg.size > 2
|
84
93
|
|
85
|
-
when
|
94
|
+
when /^-I=?(.+)?/, /^--include=?(.+)?/
|
86
95
|
paths = ($1 || argv.shift).split(':')
|
87
96
|
$LOAD_PATH.unshift(*paths)
|
88
97
|
|
89
|
-
when
|
98
|
+
when /^-r=?(.+)?/, /^--require=?(.+)?/
|
90
99
|
require($1 || argv.shift)
|
91
100
|
|
92
|
-
when
|
101
|
+
when /^-c=?(.+)?/, /^--config=?(.+)?/
|
93
102
|
Rib.config[:config] = $1 || argv.shift
|
94
103
|
|
95
|
-
when
|
104
|
+
when /^-n/, '--no-config'
|
96
105
|
Rib.config.delete(:config)
|
97
106
|
argv.unshift("-#{arg[2..-1]}") if arg.size > 2
|
98
107
|
|
99
|
-
when
|
108
|
+
when /^-h/, '--help'
|
100
109
|
puts(help)
|
101
110
|
exit
|
102
111
|
|
103
|
-
when
|
112
|
+
when /^-v/, '--version'
|
104
113
|
require 'rib/version'
|
105
114
|
puts(Rib::VERSION)
|
106
115
|
exit
|
data/lib/rib/version.rb
CHANGED
data/rib.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rib"
|
5
|
-
s.version = "0.9.
|
5
|
+
s.version = "0.9.9"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Lin Jen-Shin (godfat)"]
|
9
|
-
s.date = "2011-
|
9
|
+
s.date = "2011-10-26"
|
10
10
|
s.description = "Ruby-Interactive-ruBy -- Yet another interactive Ruby shell\n\nRib is based on the design of [ripl][] and the work of [ripl-rc][], some of\nthe features are also inspired by [pry][]. The aim of Rib is to be fully\nfeatured and yet very easy to opt-out or opt-in other features. It shall\nbe simple, lightweight and modular so that everyone could customize Rib.\n\n[ripl]: https://github.com/cldwalker/ripl\n[ripl-rc]: https://github.com/godfat/ripl-rc\n[pry]: https://github.com/pry/pry"
|
11
11
|
s.email = ["godfat (XD) godfat.org"]
|
12
12
|
s.executables = [
|
@@ -81,7 +81,7 @@ Gem::Specification.new do |s|
|
|
81
81
|
"test/test_shell.rb"]
|
82
82
|
s.homepage = "https://github.com/godfat/rib"
|
83
83
|
s.require_paths = ["lib"]
|
84
|
-
s.rubygems_version = "1.8.
|
84
|
+
s.rubygems_version = "1.8.11"
|
85
85
|
s.summary = "Ruby-Interactive-ruBy -- Yet another interactive Ruby shell"
|
86
86
|
s.test_files = [
|
87
87
|
"test/core/test_completion.rb",
|
data/task/gemgem.rb
CHANGED
@@ -12,10 +12,6 @@ module Gemgem
|
|
12
12
|
s.authors = ['Lin Jen-Shin (godfat)']
|
13
13
|
s.email = ['godfat (XD) godfat.org']
|
14
14
|
|
15
|
-
description = readme.
|
16
|
-
match(/DESCRIPTION:\n\n(.+?)(?=\n\n[^\n]+:\n)/m)[1].
|
17
|
-
lines.to_a
|
18
|
-
|
19
15
|
s.description = description.join
|
20
16
|
s.summary = description.first
|
21
17
|
|
@@ -34,13 +30,68 @@ module Gemgem
|
|
34
30
|
path = %w[README.md README].find{ |name|
|
35
31
|
File.exist?("#{Gemgem.dir}/#{name}")
|
36
32
|
}
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
@readme ||=
|
34
|
+
if path
|
35
|
+
ps = File.read(path).scan(/#+[^\n]+\n\n.+?(?=\n\n#+[^\n]+\n)/m)
|
36
|
+
ps.inject({'HEADER' => ps.first}){ |r, s, i|
|
37
|
+
r[s[/\w+/]] = s
|
38
|
+
r
|
39
|
+
}
|
40
|
+
else
|
41
|
+
{}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def description
|
46
|
+
@description ||= (readme['DESCRIPTION']||'').sub(/.+\n\n/, '').lines.to_a
|
47
|
+
end
|
48
|
+
|
49
|
+
def changes
|
50
|
+
path = %w[CHANGES.md CHANGES].find{ |name|
|
51
|
+
File.exist?("#{Gemgem.dir}/#{name}")
|
52
|
+
}
|
53
|
+
@changes ||=
|
54
|
+
if path
|
55
|
+
date = '\d+{4}\-\d+{2}\-\d{2}'
|
56
|
+
File.read(path).match(
|
57
|
+
/([^\n]+#{date}\n\n(.+?))(?=\n\n[^\n]+#{date}\n|\Z)/m)[1]
|
58
|
+
else
|
59
|
+
''
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def ann_md
|
64
|
+
"##{readme['HEADER'].sub(/([\w\-]+)/, "[\\1](#{spec.homepage})")}\n\n" \
|
65
|
+
"##{readme['DESCRIPTION'][/[^\n]+\n\n[^\n]+/]}\n\n" \
|
66
|
+
"### CHANGES:\n\n" \
|
67
|
+
"###{changes}\n\n" \
|
68
|
+
"##{readme['INSTALLATION']}\n\n" +
|
69
|
+
if readme['SYNOPSIS'] then "##{readme['SYNOPSIS']}" else '' end
|
70
|
+
end
|
71
|
+
|
72
|
+
def ann_html
|
73
|
+
gem 'nokogiri'
|
74
|
+
gem 'kramdown'
|
75
|
+
|
76
|
+
IO.popen('kramdown', 'r+') do |md|
|
77
|
+
md.puts Gemgem.ann_md
|
78
|
+
md.close_write
|
79
|
+
require 'nokogiri'
|
80
|
+
html = Nokogiri::XML.parse("<gemgem>#{md.read}</gemgem>")
|
81
|
+
html.css('*').each{ |n| n.delete('id') }
|
82
|
+
html.root.children.to_html
|
41
83
|
end
|
42
84
|
end
|
43
85
|
|
86
|
+
def ann_email
|
87
|
+
"#{readme['HEADER'].sub(/([\w\-]+)/, "\\1 <#{spec.homepage}>")}\n\n" \
|
88
|
+
"#{readme['DESCRIPTION']}\n\n" \
|
89
|
+
"#{readme['INSTALLATION']}\n\n" +
|
90
|
+
if readme['SYNOPSIS'] then "##{readme['SYNOPSIS']}\n\n" else '' end +
|
91
|
+
"## CHANGES:\n\n" \
|
92
|
+
"##{changes}\n\n"
|
93
|
+
end
|
94
|
+
|
44
95
|
def gem_tag
|
45
96
|
"#{spec.name}-#{spec.version}"
|
46
97
|
end
|
@@ -95,7 +146,7 @@ module Gemgem
|
|
95
146
|
|
96
147
|
def ignore_patterns
|
97
148
|
@ignore_files ||= expand_patterns(
|
98
|
-
|
149
|
+
gitignore.split("\n").reject{ |pattern|
|
99
150
|
pattern.strip == ''
|
100
151
|
}).map{ |pattern| %r{^([^/]+/)*?#{Regexp.escape(pattern)}(/[^/]+)*?$} }
|
101
152
|
end
|
@@ -112,6 +163,14 @@ module Gemgem
|
|
112
163
|
end
|
113
164
|
}.flatten
|
114
165
|
end
|
166
|
+
|
167
|
+
def gitignore
|
168
|
+
if File.exist?(path = "#{dir}/.gitignore")
|
169
|
+
File.read(path)
|
170
|
+
else
|
171
|
+
''
|
172
|
+
end
|
173
|
+
end
|
115
174
|
end
|
116
175
|
|
117
176
|
namespace :gem do
|
@@ -140,14 +199,14 @@ task :check do
|
|
140
199
|
ver = Gemgem.spec.version.to_s
|
141
200
|
|
142
201
|
if ENV['VERSION'].nil?
|
143
|
-
puts("\
|
144
|
-
"\
|
202
|
+
puts("\e[35mExpected " \
|
203
|
+
"\e[33mVERSION\e[35m=\e[33m#{ver}\e[0m")
|
145
204
|
exit(1)
|
146
205
|
|
147
206
|
elsif ENV['VERSION'] != ver
|
148
|
-
puts("\
|
149
|
-
"\
|
150
|
-
"\
|
207
|
+
puts("\e[35mExpected \e[33mVERSION\e[35m=\e[33m#{ver} " \
|
208
|
+
"\e[35mbut got\n " \
|
209
|
+
"\e[33mVERSION\e[35m=\e[33m#{ENV['VERSION']}\e[0m")
|
151
210
|
exit(2)
|
152
211
|
end
|
153
212
|
end
|
@@ -173,13 +232,28 @@ task 'test:shell', :RUBY_OPTS do |t, args|
|
|
173
232
|
sh(cmd.compact.join(' '))
|
174
233
|
end
|
175
234
|
|
235
|
+
desc 'Generate ann markdown'
|
236
|
+
task 'ann:md' => ['gem:spec'] do
|
237
|
+
puts Gemgem.ann_md
|
238
|
+
end
|
239
|
+
|
240
|
+
desc 'Generate ann html'
|
241
|
+
task 'ann:html' => ['gem:spec'] do
|
242
|
+
puts Gemgem.ann_html
|
243
|
+
end
|
244
|
+
|
245
|
+
desc 'Generate ann email'
|
246
|
+
task 'ann:email' => ['gem:spec'] do
|
247
|
+
puts Gemgem.ann_email
|
248
|
+
end
|
249
|
+
|
176
250
|
desc 'Generate rdoc'
|
177
251
|
task :doc => ['gem:spec'] do
|
178
252
|
sh("yardoc -o rdoc --main README.md" \
|
179
253
|
" --files #{Gemgem.spec.extra_rdoc_files.join(',')}")
|
180
254
|
end
|
181
255
|
|
182
|
-
desc '
|
256
|
+
desc 'Remove ignored files'
|
183
257
|
task :clean => ['gem:spec'] do
|
184
258
|
trash = "~/.Trash/#{Gemgem.spec.name}/"
|
185
259
|
sh "mkdir -p #{trash}" unless File.exist?(File.expand_path(trash))
|
data/test/more/test_color.rb
CHANGED
@@ -18,11 +18,11 @@ describe Rib::Color do
|
|
18
18
|
@color.send(:format_color,
|
19
19
|
[{0 => :a}, 'b', [nil, {false => Object}], {true => Exception.new}]).
|
20
20
|
should.eq \
|
21
|
-
"\e[34m[\e[
|
22
|
-
"34m}\e[
|
23
|
-
"[35mnil\e[
|
24
|
-
"
|
25
|
-
"[
|
26
|
-
"
|
21
|
+
"\e[34m[\e[0m\e[34m{\e[0m\e[31m0\e[0m\e[34m=>\e[0m\e[36m:a\e[0m\e" \
|
22
|
+
"[34m}\e[0m\e[34m, \e[0m\e[32m\"b\"\e[0m\e[34m, \e[0m\e[34m[\e[0m" \
|
23
|
+
"\e[35mnil\e[0m\e[34m, \e[0m\e[34m{\e[0m\e[35mfalse\e[0m\e[34m=>" \
|
24
|
+
"\e[0m\e[33mObject\e[0m\e[34m}\e[0m\e[34m]\e[0m\e[34m, \e[0m\e[34m"\
|
25
|
+
"{\e[0m\e[35mtrue\e[0m\e[34m=>\e[0m\e[35m#<Exception: Exception>" \
|
26
|
+
"\e[0m\e[34m}\e[0m\e[34m]\e[0m"
|
27
27
|
end
|
28
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-10-26 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! 'Ruby-Interactive-ruBy -- Yet another interactive Ruby shell
|
15
15
|
|
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
122
|
version: '0'
|
123
123
|
requirements: []
|
124
124
|
rubyforge_project:
|
125
|
-
rubygems_version: 1.8.
|
125
|
+
rubygems_version: 1.8.11
|
126
126
|
signing_key:
|
127
127
|
specification_version: 3
|
128
128
|
summary: Ruby-Interactive-ruBy -- Yet another interactive Ruby shell
|