ripl 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gemspec CHANGED
@@ -12,6 +12,8 @@ Gem::Specification.new do |s|
12
12
  s.description = "Ruby Interactive Print Loop - A light, modular alternative to irb"
13
13
  s.required_rubygems_version = ">= 1.3.6"
14
14
  s.rubyforge_project = 'tagaholic'
15
+ s.executables = %w(ripl)
16
+ s.add_dependency 'bond', '~> 0.3.1'
15
17
  s.files = Dir.glob(%w[{lib,test}/**/*.rb bin/* [A-Z]*.{txt,rdoc} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec}
16
18
  s.extra_rdoc_files = ["README.rdoc", "LICENSE.txt"]
17
19
  s.license = 'MIT'
@@ -1,2 +1,10 @@
1
+ == 0.1.1
2
+ * Provide hooks for shell plugins
3
+ * Rescue irbrc exceptions
4
+ * Add bond as dependency for completion
5
+ * Exit with ctrl-D
6
+ * Fix buggy _
7
+ * Fix missing executable in gemspec
8
+
1
9
  == 0.1.0
2
10
  * Most basic working idea
@@ -13,5 +13,8 @@ Install the gem with:
13
13
  $ ripl
14
14
  >> ...
15
15
 
16
+ == Credits
17
+ * janlelis for bug fix and tweaks
18
+
16
19
  == Todo
17
20
  * Everything!
@@ -0,0 +1 @@
1
+ bond ~>0.3.1
@@ -7,28 +7,19 @@ module Ripl
7
7
  def initialize(options={})
8
8
  @options = OPTIONS.merge options
9
9
  @name, @binding, @line = @options.values_at(:name, :binding, :line)
10
- before_loop
11
- end
12
-
13
- def before_loop
14
- load_rc
15
- end
16
-
17
- def load_rc
18
- load @options[:irbrc] if File.exists?(File.expand_path(@options[:irbrc]))
10
+ @irbrc = @options[:irbrc]
19
11
  end
20
12
 
21
13
  def loop
14
+ before_loop
22
15
  while true do
23
16
  input = get_input
24
- break if input == 'exit'
17
+ break if !input || input == 'exit'
25
18
  puts loop_once(input)
26
19
  end
27
20
  after_loop
28
21
  end
29
22
 
30
- def after_loop; end
31
-
32
23
  def get_input
33
24
  print @options[:prompt]
34
25
  $stdin.gets.chomp
@@ -36,26 +27,40 @@ module Ripl
36
27
 
37
28
  def loop_once(input)
38
29
  begin
39
- result = eval_line(input)
30
+ result = loop_eval(input)
40
31
  rescue Exception => e
41
32
  print_eval_error(e)
42
33
  end
43
34
 
44
- eval("_ = #{result.inspect}", @binding) rescue nil
45
35
  @line += 1
46
36
  format_result result
47
37
  end
48
38
 
49
- def eval_line(str)
50
- eval(str, @binding, "(#{@name})", @line)
39
+ def print_eval_error(e)
40
+ warn format_error(e)
51
41
  end
52
42
 
53
- def print_eval_error(e)
54
- warn "#{e.class}: #{e.message}\n\t#{e.backtrace.join("\n\t")}"
43
+ def format_error(e)
44
+ "#{e.class}: #{e.message}\n\t#{e.backtrace.join("\n\t")}"
55
45
  end
56
46
 
57
47
  def format_result(result)
58
48
  @options[:result_prompt] + result.inspect
59
49
  end
60
50
  end
51
+
52
+ module Hooks
53
+ def before_loop
54
+ load @irbrc if @irbrc && File.exists?(File.expand_path(@irbrc))
55
+ rescue StandardError, SyntaxError
56
+ warn "Error while loading #{@irbrc}:\n"+ format_error($!)
57
+ end
58
+
59
+ def loop_eval(str)
60
+ eval('_ = '+str, @binding, "(#{@name})", @line)
61
+ end
62
+
63
+ def after_loop; end
64
+ end
65
+ Shell.send :include, Hooks
61
66
  end
@@ -1,3 +1,3 @@
1
1
  module Ripl
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ripl
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gabriel Horner
@@ -15,14 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-27 00:00:00 -04:00
18
+ date: 2010-10-28 00:00:00 -04:00
19
19
  default_executable:
20
- dependencies: []
21
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bond
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 17
30
+ segments:
31
+ - 0
32
+ - 3
33
+ - 1
34
+ version: 0.3.1
35
+ type: :runtime
36
+ version_requirements: *id001
22
37
  description: Ruby Interactive Print Loop - A light, modular alternative to irb
23
38
  email: gabriel.horner@gmail.com
24
- executables: []
25
-
39
+ executables:
40
+ - ripl
26
41
  extensions: []
27
42
 
28
43
  extra_rdoc_files:
@@ -38,6 +53,7 @@ files:
38
53
  - LICENSE.txt
39
54
  - CHANGELOG.rdoc
40
55
  - README.rdoc
56
+ - deps.rip
41
57
  - Rakefile
42
58
  - .gemspec
43
59
  has_rdoc: true