binding.repl 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog.txt CHANGED
@@ -1,3 +1,23 @@
1
+ == v0.8.0
2
+ - add "rib" as a supported console.
3
+ "rib" is inspired by ripl, the ripl-rc project, and by some of
4
+ the ideas from the pry project.
5
+
6
+ be sure to check it out if you're curious:
7
+ * https://github.com/godfat/rib
8
+
9
+ 'binding.repl.rib' to try it out!
10
+
11
+ - internals shakeup
12
+ when a console is added to binding.repl it also defines an
13
+ initializer that should be run for the very first time.
14
+
15
+ binding.repl takes care of the initializer not being run again,
16
+ but the initializer is expected to do whatever it needs to make
17
+ the console available for use.
18
+
19
+ see lib/binding.repl/console/*.rb for examples.
20
+
1
21
  == v0.7.0
2
22
  - catch JSON parse errors when reading .binding.repl.rc
3
23
  closes #7
data/Gemfile CHANGED
@@ -1,4 +1,8 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in binding.repl.gemspec
4
2
  gemspec
3
+
4
+ group :repls do
5
+ gem 'ripl'
6
+ gem 'pry'
7
+ gem 'rib'
8
+ end
data/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  __DESCRIPTION__
10
10
 
11
11
  __binding.repl__ can start a number of different ruby consoles at runtime.
12
- IRB, ripl, and pry(of course!) can be invoked at runtime in any context
12
+ IRB, ripl, rib, and pry(of course!) can be invoked at runtime in any context
13
13
  that an instance of `Binding` closes over.
14
14
 
15
15
  I owe all credit to John Mair([banisterfiend](https://github.com/banister)),
@@ -35,7 +35,7 @@ _Rails_
35
35
  class BlogsController < ApplicationController
36
36
  def show
37
37
  @blog = Blog.find(params[:id])
38
- binding.repl.{pry,irb,ripl,auto}
38
+ binding.repl.{pry,irb,ripl,rib,auto}
39
39
  end
40
40
  end
41
41
  ```
@@ -45,14 +45,14 @@ _Auto discovery_
45
45
  ```ruby
46
46
  class Bar
47
47
  # auto discover and start the first available console.
48
- # default order is: ripl, pry, or irb.
48
+ # default order is: ripl, pry, rib, or irb.
49
49
  binding.repl.auto
50
50
 
51
51
  # change default load order
52
- Binding.repl.auto_load_order = %w(pry ripl irb)
52
+ Binding.repl.auto_load_order = %w(pry ripl irb rib)
53
53
 
54
- # remove "irb" from auto discovery
55
- Binding.repl.auto_load_order -= ["irb"]
54
+ # remove "irb" & "rib" from auto discovery
55
+ Binding.repl.auto_load_order -= ["irb", "rib"]
56
56
  end
57
57
  ```
58
58
 
@@ -78,7 +78,7 @@ __NOTES__
78
78
 
79
79
  _CONFIGURATION_
80
80
 
81
- ripl and pry can be customized by passing a set of key-value pairs but
81
+ ripl, rib, and pry can be customized by passing a set of key-value pairs but
82
82
  IRB isn't as straight forward to configure and I haven't implemented
83
83
  any customization options for it yet.
84
84
 
@@ -98,6 +98,17 @@ class Foo
98
98
  end
99
99
  ```
100
100
 
101
+ rib is a little less well known ruby console that binding.repl
102
+ supports since v0.8.0. I don't know much about the options it accepts,
103
+ but it does accept some. please check out [its github page](https://github.com/godfat/rib)
104
+ if you're curious.
105
+
106
+ ```ruby
107
+ class Foo
108
+ binding.repl.rib({})
109
+ end
110
+ ```
111
+
101
112
  _WORKING WITH TEAMS_
102
113
 
103
114
  people working in teams might have different choices for what ruby
@@ -147,7 +158,7 @@ export BINDING_REPL_ORDER=pry,irb
147
158
  _DEPENDENCIES_
148
159
 
149
160
  binding.repl doesn't depend on anything. it's up to you to meet the
150
- dependencies(pry, irb, and/or ripl). `binding.repl.{ripl,pry,irb}`
161
+ dependencies(pry, irb, rib, and/or ripl). `binding.repl.{ripl,pry,rib,irb}`
151
162
  will try to load the appropiate console for you if it looks like it
152
163
  hasn't been loaded yet.
153
164
 
data/binding.repl.gemspec CHANGED
@@ -18,4 +18,18 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  spec.add_development_dependency "bundler", "~> 1.3"
20
20
  spec.add_development_dependency "rake"
21
+
22
+ spec.post_install_message = <<-INSTALL_MESSAGE
23
+
24
+ ** binding.repl **
25
+ Thanks for installing v#{Binding.repl.version}!
26
+ Check out the README and ChangeLog to see what's new in this release.
27
+
28
+ README.md
29
+ https://github.com/robgleeson/binding.repl/blob/v#{Binding.repl.version}/README.md
30
+
31
+ ChangeLog.txt
32
+ https://github.com/robgleeson/binding.repl/blob/v#{Binding.repl.version}/ChangeLog.txt
33
+
34
+ INSTALL_MESSAGE
21
35
  end
data/lib/binding.repl.rb CHANGED
@@ -18,7 +18,7 @@ class BindingRepl
18
18
  end
19
19
 
20
20
  def self.version
21
- "0.7.0"
21
+ "0.8.0"
22
22
  end
23
23
 
24
24
  def self.disabled?
@@ -34,8 +34,8 @@ class BindingRepl
34
34
  @disabled = true
35
35
  end
36
36
 
37
- def self.add(console, predicate, runner)
38
- LOOKUP[console] = [predicate, runner]
37
+ def self.add(console, initializer, runner)
38
+ LOOKUP[console] = [initializer, runner]
39
39
  define_method(console) do |options = {}|
40
40
  exit_value = invoke_console(console, options)
41
41
  invoke_failed?(exit_value) ? fail!(console) : exit_value
@@ -80,19 +80,13 @@ private
80
80
  if Binding.repl.disabled?
81
81
  return :'binding.repl.disabled'
82
82
  end
83
- require_predicate, runner = @lookup[console]
84
- require_console(console, require_predicate)
85
- runner.call(@binding, options)
83
+ initializer, runner = @lookup[console]
84
+ initializer.call
85
+ @lookup[console] = [@lookup.default.at(0), runner]
86
+ runner.call @binding, options
86
87
  rescue LoadError
87
88
  :'binding.repl.load_error'
88
89
  end
89
-
90
- def require_console(console, predicate)
91
- already_required = predicate.call
92
- if !already_required
93
- require(console.to_s)
94
- end
95
- end
96
90
  end
97
91
 
98
92
  klass = BindingRepl
@@ -105,4 +99,5 @@ end
105
99
  require_relative "binding.repl/console/pry"
106
100
  require_relative "binding.repl/console/irb"
107
101
  require_relative "binding.repl/console/ripl"
102
+ require_relative "binding.repl/console/rib"
108
103
  require_relative "binding.repl/rc"
@@ -1,16 +1,12 @@
1
- predicate = lambda do
2
- defined?(IRB)
1
+ initializer = lambda do
2
+ require "irb"
3
+ IRB.setup(nil)
3
4
  end
4
5
 
5
- irb_setup = false
6
6
  runner = lambda do |binding, options|
7
- unless irb_setup
8
- IRB.setup(nil)
9
- irb_setup = true
10
- end
11
7
  irb = IRB::Irb.new IRB::WorkSpace.new(binding)
12
8
  IRB.conf[:MAIN_CONTEXT] = irb.context
13
9
  trap("SIGINT") { irb.signal_handle }
14
10
  catch(:IRB_EXIT) { irb.eval_input }
15
11
  end
16
- Binding.repl.add :irb, predicate, runner
12
+ Binding.repl.add :irb, initializer, runner
@@ -1,7 +1,7 @@
1
- predicate = lambda do
2
- defined?(Pry)
1
+ initializer = lambda do
2
+ require "pry"
3
3
  end
4
4
  runner = lambda do |binding, options|
5
5
  binding.pry(options)
6
6
  end
7
- Binding.repl.add :pry, predicate, runner
7
+ Binding.repl.add :pry, initializer, runner
@@ -0,0 +1,8 @@
1
+ initializer = lambda do
2
+ require "rib"
3
+ require "rib/more/anchor"
4
+ end
5
+ runner = lambda do |binding, options|
6
+ Rib.anchor binding, options
7
+ end
8
+ Binding.repl.add :rib, initializer, runner
@@ -1,7 +1,7 @@
1
- predicate = lambda do
2
- defined?(Ripl)
1
+ initializer = lambda do
2
+ require "ripl"
3
3
  end
4
4
  runner = lambda do |binding, options|
5
5
  Ripl.start options.merge(binding: binding)
6
6
  end
7
- Binding.repl.add :ripl, predicate, runner
7
+ Binding.repl.add :ripl, initializer, runner
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binding.repl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
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: 2013-10-02 00:00:00.000000000 Z
12
+ date: 2013-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -62,12 +62,16 @@ files:
62
62
  - lib/binding.repl.rb
63
63
  - lib/binding.repl/console/irb.rb
64
64
  - lib/binding.repl/console/pry.rb
65
+ - lib/binding.repl/console/rib.rb
65
66
  - lib/binding.repl/console/ripl.rb
66
67
  - lib/binding.repl/rc.rb
67
68
  homepage: https://github.com/robgleeson/binding.repl
68
69
  licenses:
69
70
  - MIT
70
- post_install_message:
71
+ post_install_message: ! "\n ** binding.repl **\n Thanks for installing v0.8.0!\n
72
+ \ Check out the README and ChangeLog to see what's new in this release.\n\n README.md\n
73
+ \ https://github.com/robgleeson/binding.repl/blob/v0.8.0/README.md\n\n ChangeLog.txt\n
74
+ \ https://github.com/robgleeson/binding.repl/blob/v0.8.0/ChangeLog.txt\n\n"
71
75
  rdoc_options: []
72
76
  require_paths:
73
77
  - lib
@@ -85,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
89
  version: '0'
86
90
  segments:
87
91
  - 0
88
- hash: -334178767323369465
92
+ hash: 4383143691404002571
89
93
  requirements: []
90
94
  rubyforge_project:
91
95
  rubygems_version: 1.8.23