rib 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGES.md +32 -0
- data/README.md +5 -4
- data/TODO.md +2 -0
- data/lib/rib.rb +1 -1
- data/lib/rib/api.rb +29 -8
- data/lib/rib/app/auto.rb +2 -3
- data/lib/rib/app/rack.rb +2 -3
- data/lib/rib/app/rails.rb +2 -3
- data/lib/rib/core/completion.rb +6 -13
- data/lib/rib/core/history.rb +3 -3
- data/lib/rib/core/last_value.rb +3 -3
- data/lib/rib/core/multiline.rb +3 -3
- data/lib/rib/core/readline.rb +3 -3
- data/lib/rib/core/squeeze_history.rb +3 -3
- data/lib/rib/core/strip_backtrace.rb +3 -3
- data/lib/rib/extra/autoindent.rb +3 -3
- data/lib/rib/extra/hirb.rb +3 -3
- data/lib/rib/extra/paging.rb +3 -3
- data/lib/rib/more/anchor.rb +13 -4
- data/lib/rib/more/beep.rb +4 -4
- data/lib/rib/more/bottomup_backtrace.rb +3 -3
- data/lib/rib/more/caller.rb +3 -3
- data/lib/rib/more/color.rb +11 -6
- data/lib/rib/more/edit.rb +3 -3
- data/lib/rib/more/multiline_history.rb +3 -3
- data/lib/rib/more/multiline_history_file.rb +3 -3
- data/lib/rib/plugin.rb +15 -4
- data/lib/rib/runner.rb +4 -3
- data/lib/rib/shell.rb +19 -6
- data/lib/rib/test.rb +25 -14
- data/lib/rib/test/history.rb +25 -0
- data/lib/rib/test/multiline.rb +8 -16
- data/lib/rib/version.rb +1 -1
- data/rib.gemspec +7 -6
- data/task/README.md +5 -5
- data/task/gemgem.rb +6 -1
- data/test/core/test_completion.rb +13 -6
- data/test/core/test_history.rb +42 -52
- data/test/core/test_last_value.rb +22 -23
- data/test/core/test_readline.rb +7 -14
- data/test/core/test_squeeze_history.rb +29 -36
- data/test/extra/test_autoindent.rb +8 -3
- data/test/more/test_anchor.rb +85 -0
- data/test/more/test_beep.rb +1 -1
- data/test/more/test_color.rb +16 -0
- data/test/more/test_multiline_history.rb +12 -7
- data/test/test_api.rb +39 -3
- data/test/test_plugin.rb +25 -13
- data/test/test_runner.rb +12 -10
- data/test/test_shell.rb +72 -23
- metadata +6 -5
- data/test/extra/test_anchor.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddd655c34f6696f9ee88606efcf30acbd726ad54
|
4
|
+
data.tar.gz: 46ad8ec8b715f478c0677a1a49c0190473df42df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba6586bba0c20fb2cfdb1a731d67824a1f43f9fe1d240b7764ab8de50394e0c4c595799cad527cdd80ecc1201203c4f3acd286736aac2e87dda1c71659b6363e
|
7
|
+
data.tar.gz: '080e885ebd7e6a8e5be217e985ff5efa40631b4847a15b887aea158f43ef1b1a66d43b96538d36abb642f69537045f2704b71899b37eb43ffa2bfd005caff6ca'
|
data/.travis.yml
CHANGED
data/CHANGES.md
CHANGED
@@ -1,5 +1,37 @@
|
|
1
1
|
# CHANGES
|
2
2
|
|
3
|
+
## Rib 1.5.2 -- 2017-05-01
|
4
|
+
|
5
|
+
* We now `require 'rib/version'` from the beginning, avoid loading error
|
6
|
+
under bundler.
|
7
|
+
* Introduced `API#started_at` which is `config[:started_at]` for accessing
|
8
|
+
when Rib started.
|
9
|
+
* Introduced `API#inspect_result` which would inspect the result. The default
|
10
|
+
behaviour would just inspect the result, but if the result is not a string,
|
11
|
+
emit a warning. https://github.com/godfat/rib/issues/14
|
12
|
+
* Now all warnings would be printed after the result was printed. This would
|
13
|
+
make it easier to spot warnings.
|
14
|
+
* [more/color] It would now paint warnings.
|
15
|
+
* [more/anchor] Introduced `Rib.stop_anchors` to stop all nested anchors.
|
16
|
+
https://github.com/godfat/rib/issues/13
|
17
|
+
* Fixed Rib app detection for newer RubyGems
|
18
|
+
|
19
|
+
### Breaking changes
|
20
|
+
|
21
|
+
* Extending `Rib::Plugin` would no longer automatically also include `Rib`.
|
22
|
+
For compatibility concern, a `const_missing` is now defined in `Rib::Plugin`
|
23
|
+
so that using `Shell` would still refer to `Rib::Shell` for you, considering
|
24
|
+
that this might be a common pattern:
|
25
|
+
|
26
|
+
extend Rib::Plugin
|
27
|
+
Shell.use(self)
|
28
|
+
|
29
|
+
Note that this would be removed in the future, so please take this chance to
|
30
|
+
change it to:
|
31
|
+
|
32
|
+
extend Rib::Plugin
|
33
|
+
Rib::Shell.use(self)
|
34
|
+
|
3
35
|
## Rib 1.5.1 -- 2017-03-09
|
4
36
|
|
5
37
|
* [more/beep] This plugin would beep via `print "\a"` when the application
|
data/README.md
CHANGED
@@ -190,11 +190,11 @@ rib options:
|
|
190
190
|
-h, --help Print this message
|
191
191
|
-v, --version Print the version
|
192
192
|
rib commands:
|
193
|
-
min Run the minimum essence
|
194
|
-
auto Run as Rails or Rack console (auto-detect)
|
195
193
|
all Load all recommended plugins
|
196
|
-
|
194
|
+
auto Run as Rails or Rack console (auto-detect)
|
195
|
+
min Run the minimum essence
|
197
196
|
rack Run as Rack console
|
197
|
+
rails Run as Rails console
|
198
198
|
```
|
199
199
|
|
200
200
|
#### Basic configuration
|
@@ -455,11 +455,12 @@ simple, simpler than rib-rails.
|
|
455
455
|
* Lin Jen-Shin (@godfat)
|
456
456
|
* Mr. Big Cat (@miaout17)
|
457
457
|
* @bootleq
|
458
|
+
* @lulalala
|
458
459
|
* @tka
|
459
460
|
|
460
461
|
## LICENSE:
|
461
462
|
|
462
|
-
Apache License 2.0
|
463
|
+
Apache License 2.0 (Apache-2.0)
|
463
464
|
|
464
465
|
Copyright (c) 2011-2017, Lin Jen-Shin (godfat)
|
465
466
|
|
data/TODO.md
CHANGED
data/lib/rib.rb
CHANGED
data/lib/rib/api.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
|
2
|
-
module Rib;
|
3
|
-
module Rib::API
|
2
|
+
module Rib; module API
|
4
3
|
# Called before shell starts looping
|
5
4
|
def before_loop
|
6
5
|
self
|
@@ -23,18 +22,22 @@ module Rib::API
|
|
23
22
|
def eval_binding ; config[:binding] ; end
|
24
23
|
# The line number for next evaluation
|
25
24
|
def line ; config[:line] ; end
|
25
|
+
# When the application loaded
|
26
|
+
def started_at ; config[:started_at] ; end
|
26
27
|
|
27
28
|
# Main loop
|
28
29
|
def in_loop
|
29
|
-
input = catch(:rib_exit){ loop_once while
|
30
|
-
puts if input == nil
|
30
|
+
input = catch(:rib_exit){ loop_once while running? }
|
31
|
+
puts if input == nil && running?
|
31
32
|
end
|
32
33
|
|
33
34
|
# Loop iteration: REPL
|
34
35
|
def loop_once
|
35
36
|
input, result, err = get_input, nil, nil
|
36
37
|
throw(:rib_exit, input) if config[:exit].include?(input)
|
38
|
+
|
37
39
|
result, err = eval_input(input)
|
40
|
+
|
38
41
|
if err
|
39
42
|
print_eval_error(err)
|
40
43
|
elsif input.strip != '' && !equal_rib_skip(result)
|
@@ -42,6 +45,9 @@ module Rib::API
|
|
42
45
|
else
|
43
46
|
# print nothing for blank input or Rib::Skip
|
44
47
|
end
|
48
|
+
|
49
|
+
flush_warnings
|
50
|
+
|
45
51
|
[result, err]
|
46
52
|
rescue Interrupt
|
47
53
|
handle_interrupt
|
@@ -81,23 +87,34 @@ module Rib::API
|
|
81
87
|
def print_result result
|
82
88
|
puts(format_result(result))
|
83
89
|
rescue StandardError, SyntaxError => e
|
84
|
-
|
90
|
+
warn("Error while printing result:\n #{format_error(e)}")
|
85
91
|
end
|
86
92
|
|
87
93
|
# Print evaluated error using #format_error
|
88
94
|
def print_eval_error err
|
89
95
|
puts(format_error(err))
|
90
96
|
rescue StandardError, SyntaxError => e
|
91
|
-
|
97
|
+
warn("Error while printing error:\n #{format_error(e)}")
|
92
98
|
end
|
93
99
|
|
94
100
|
def puts str
|
95
101
|
super
|
96
102
|
end
|
97
103
|
|
104
|
+
def warn message
|
105
|
+
warnings << message
|
106
|
+
end
|
107
|
+
|
98
108
|
# Format result using #result_prompt
|
99
109
|
def format_result result
|
100
|
-
result_prompt
|
110
|
+
"#{result_prompt}#{inspect_result(result)}"
|
111
|
+
end
|
112
|
+
|
113
|
+
def inspect_result result
|
114
|
+
string = result.inspect
|
115
|
+
warn("#{result.class}#inspect is not returning a string") unless
|
116
|
+
string.kind_of?(String)
|
117
|
+
string
|
101
118
|
end
|
102
119
|
|
103
120
|
# Format error raised in #loop_eval with #get_error
|
@@ -123,4 +140,8 @@ module Rib::API
|
|
123
140
|
rescue
|
124
141
|
# do nothing, it cannot respond to == correctly, it can't be Rib::Skip
|
125
142
|
end
|
126
|
-
|
143
|
+
|
144
|
+
def flush_warnings
|
145
|
+
Rib.warn(warnings.shift) until warnings.empty?
|
146
|
+
end
|
147
|
+
end; end
|
data/lib/rib/app/auto.rb
CHANGED
data/lib/rib/app/rack.rb
CHANGED
data/lib/rib/app/rails.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
|
2
|
-
module Rib;
|
3
|
-
module Rib::Rails
|
2
|
+
module Rib; module Rails
|
4
3
|
module_function
|
5
4
|
def load
|
6
5
|
load_rails
|
@@ -113,4 +112,4 @@ module Rib::Rails
|
|
113
112
|
def path_for file
|
114
113
|
File.expand_path("#{Rib.config[:prefix]}/config/#{file}")
|
115
114
|
end
|
116
|
-
end
|
115
|
+
end; end
|
data/lib/rib/core/completion.rb
CHANGED
@@ -1,28 +1,21 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module Completion
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
9
9
|
|
10
10
|
def before_loop
|
11
11
|
return super if Completion.disabled?
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
config[:completion] ||= {}
|
13
|
+
config[:completion][:gems] ||= []
|
14
|
+
config[:completion][:eval_binding] ||= method(:eval_binding).to_proc
|
15
15
|
Rib.silence{Bond.start(config[:completion]) unless Bond.started?}
|
16
16
|
super
|
17
17
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
private
|
22
|
-
def ripl_plugins
|
23
|
-
$LOADED_FEATURES.map{ |e| e[/ripl\/[^\/]+$/] }.compact
|
24
|
-
end
|
25
|
-
end
|
18
|
+
end; end
|
26
19
|
|
27
20
|
begin
|
28
21
|
Rib.silence{require 'bond'}
|
data/lib/rib/core/history.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'rib'
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
|
-
module Rib
|
6
|
-
extend
|
5
|
+
module Rib; module History
|
6
|
+
extend Plugin
|
7
7
|
Shell.use(self)
|
8
8
|
|
9
9
|
# --------------- Rib API ---------------
|
@@ -63,4 +63,4 @@ module Rib::History
|
|
63
63
|
def history_size
|
64
64
|
config[:history_size] ||= 500
|
65
65
|
end
|
66
|
-
end
|
66
|
+
end; end
|
data/lib/rib/core/last_value.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module LastValue
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
attr_reader :last_value, :last_exception
|
@@ -32,4 +32,4 @@ module Rib::LastValue
|
|
32
32
|
end
|
33
33
|
|
34
34
|
Rib.extend(Imp)
|
35
|
-
end
|
35
|
+
end; end
|
data/lib/rib/core/multiline.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
4
|
# from https://github.com/janlelis/ripl-multi_line
|
5
|
-
module Rib
|
6
|
-
extend
|
5
|
+
module Rib; module Multiline
|
6
|
+
extend Plugin
|
7
7
|
Shell.use(self)
|
8
8
|
|
9
9
|
engine = if Object.const_defined?(:RUBY_ENGINE)
|
@@ -129,4 +129,4 @@ module Rib::Multiline
|
|
129
129
|
def multiline_buffer
|
130
130
|
@multiline_buffer ||= []
|
131
131
|
end
|
132
|
-
end
|
132
|
+
end; end
|
data/lib/rib/core/readline.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'rib'
|
3
3
|
require 'readline'
|
4
4
|
|
5
|
-
module Rib
|
6
|
-
extend
|
5
|
+
module Rib; module Readline
|
6
|
+
extend Plugin
|
7
7
|
Shell.use(self)
|
8
8
|
|
9
9
|
# --------------- Rib API ---------------
|
@@ -24,4 +24,4 @@ unless ::Readline::HISTORY.respond_to?(:last)
|
|
24
24
|
def (::Readline::HISTORY).last
|
25
25
|
self[-1]
|
26
26
|
end
|
27
|
-
end
|
27
|
+
end; end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib/core/history' # dependency
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module SqueezeHistory
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
@@ -42,4 +42,4 @@ module Rib::SqueezeHistory
|
|
42
42
|
end
|
43
43
|
}
|
44
44
|
end
|
45
|
-
end
|
45
|
+
end; end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module StripBacktrace
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
@@ -42,4 +42,4 @@ module Rib::StripBacktrace
|
|
42
42
|
def replace_path_prefix prefix, substitute, path
|
43
43
|
path.sub(/\A#{Regexp.escape(prefix)}\//, substitute)
|
44
44
|
end
|
45
|
-
end
|
45
|
+
end; end
|
data/lib/rib/extra/autoindent.rb
CHANGED
@@ -3,8 +3,8 @@ require 'rib/core/history' # otherwise the order might be wrong
|
|
3
3
|
require 'rib/core/readline' # dependency
|
4
4
|
require 'rib/core/multiline' # dependency
|
5
5
|
|
6
|
-
module Rib
|
7
|
-
extend
|
6
|
+
module Rib; module Autoindent
|
7
|
+
extend Plugin
|
8
8
|
Shell.use(self)
|
9
9
|
|
10
10
|
# begin block could be simpler, because it should also trigger
|
@@ -153,7 +153,7 @@ module Rib::Autoindent
|
|
153
153
|
def autoindent_stack
|
154
154
|
@autoindent_stack ||= []
|
155
155
|
end
|
156
|
-
end
|
156
|
+
end; end
|
157
157
|
|
158
158
|
begin
|
159
159
|
require 'readline_buffer'
|
data/lib/rib/extra/hirb.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module Hirb
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
@@ -24,4 +24,4 @@ rescue LoadError => e
|
|
24
24
|
" gem install hirb\n" ,
|
25
25
|
"Or add hirb to Gemfile if that's the case")
|
26
26
|
Rib::Hirb.disable
|
27
|
-
end
|
27
|
+
end; end
|
data/lib/rib/extra/paging.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module Paging
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
@@ -36,7 +36,7 @@ module Rib::Paging
|
|
36
36
|
def pager
|
37
37
|
ENV['PAGER'] || 'less -R'
|
38
38
|
end
|
39
|
-
end
|
39
|
+
end; end
|
40
40
|
|
41
41
|
pager = ENV['PAGER'] || 'less'
|
42
42
|
|
data/lib/rib/more/anchor.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
|
2
2
|
require 'rib'
|
3
3
|
|
4
|
-
module Rib
|
5
|
-
extend
|
4
|
+
module Rib; module Anchor
|
5
|
+
extend Plugin
|
6
6
|
Shell.use(self)
|
7
7
|
|
8
8
|
# --------------- Rib API ---------------
|
9
9
|
|
10
10
|
def prompt
|
11
11
|
return super if Rib::Anchor.disabled?
|
12
|
-
return super unless
|
12
|
+
return super unless anchor?
|
13
13
|
|
14
14
|
level = "(#{Rib.shells.size - 1})"
|
15
15
|
if Rib.const_defined?(:Color) &&
|
@@ -22,6 +22,10 @@ module Rib::Anchor
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def anchor?
|
26
|
+
!!config[:prompt_anchor]
|
27
|
+
end
|
28
|
+
|
25
29
|
|
26
30
|
|
27
31
|
private
|
@@ -67,7 +71,12 @@ module Rib::Anchor
|
|
67
71
|
ensure
|
68
72
|
Rib.shells.pop
|
69
73
|
end
|
74
|
+
|
75
|
+
def stop_anchors
|
76
|
+
Rib.shells.select(&:anchor?).each(&:stop)
|
77
|
+
Rib::Skip
|
78
|
+
end
|
70
79
|
end
|
71
80
|
|
72
81
|
Rib.extend(Imp)
|
73
|
-
end
|
82
|
+
end; end
|