rib 0.9.5 → 0.9.9
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/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
|