nkpart-accidentally 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -6,6 +6,7 @@ Rakefile
6
6
  TODO
7
7
  accidentally.gemspec
8
8
  coverage/index.html
9
+ coverage/lib-accidentally-invocation_result_rb.html
9
10
  coverage/lib-accidentally-mad_hax_rb.html
10
11
  coverage/lib-accidentally-method_invoker_rb.html
11
12
  coverage/lib-accidentally-patches-kernel_rb.html
@@ -14,6 +15,7 @@ coverage/lib-accidentally_rb.html
14
15
  etc/examples.rb
15
16
  etc/textmate_command.rb
16
17
  lib/accidentally.rb
18
+ lib/accidentally/invocation_result.rb
17
19
  lib/accidentally/mad_hax.rb
18
20
  lib/accidentally/method_invoker.rb
19
21
  lib/accidentally/patches/kernel.rb
@@ -22,6 +24,8 @@ script/console
22
24
  script/destroy
23
25
  script/generate
24
26
  spec/accidentally_spec.rb
27
+ spec/invocation_result_spec.rb
28
+ spec/method_invoker_spec.rb
25
29
  spec/spec.opts
26
30
  spec/spec_helper.rb
27
31
  tasks/rspec.rake
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require File.dirname(__FILE__) + '/lib/accidentally'
6
6
  $hoe = Hoe.new('accidentally', Accidentally::VERSION) do |p|
7
7
  p.developer('nkpart', 'nkpart@gmail.com')
8
8
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
9
- p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
9
+ p.post_install_message = 'the whole thing?!'
10
10
  p.rubyforge_name = p.name # TODO this is default value
11
11
  p.extra_deps = [
12
12
  ['nkpart-prohax','>= 1.0.1']
@@ -14,7 +14,7 @@ $hoe = Hoe.new('accidentally', Accidentally::VERSION) do |p|
14
14
  p.extra_dev_deps = [
15
15
  ['newgem', ">= #{::Newgem::VERSION}"]
16
16
  ]
17
-
17
+
18
18
  p.clean_globs |= %w[**/.DS_Store tmp *.log]
19
19
  path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
20
20
  p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
data/accidentally.gemspec CHANGED
@@ -2,18 +2,18 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{accidentally}
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["nkpart"]
9
- s.date = %q{2008-11-19}
9
+ s.date = %q{2008-11-20}
10
10
  s.description = %q{}
11
11
  s.email = ["nkpart@gmail.com"]
12
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc"]
13
- s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "TODO", "accidentally.gemspec", "coverage/index.html", "coverage/lib-accidentally-mad_hax_rb.html", "coverage/lib-accidentally-method_invoker_rb.html", "coverage/lib-accidentally-patches-kernel_rb.html", "coverage/lib-accidentally-patches-thread_rb.html", "coverage/lib-accidentally_rb.html", "etc/examples.rb", "etc/textmate_command.rb", "lib/accidentally.rb", "lib/accidentally/mad_hax.rb", "lib/accidentally/method_invoker.rb", "lib/accidentally/patches/kernel.rb", "lib/accidentally/patches/thread.rb", "script/console", "script/destroy", "script/generate", "spec/accidentally_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake"]
13
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "TODO", "accidentally.gemspec", "coverage/index.html", "coverage/lib-accidentally-invocation_result_rb.html", "coverage/lib-accidentally-mad_hax_rb.html", "coverage/lib-accidentally-method_invoker_rb.html", "coverage/lib-accidentally-patches-kernel_rb.html", "coverage/lib-accidentally-patches-thread_rb.html", "coverage/lib-accidentally_rb.html", "etc/examples.rb", "etc/textmate_command.rb", "lib/accidentally.rb", "lib/accidentally/invocation_result.rb", "lib/accidentally/mad_hax.rb", "lib/accidentally/method_invoker.rb", "lib/accidentally/patches/kernel.rb", "lib/accidentally/patches/thread.rb", "script/console", "script/destroy", "script/generate", "spec/accidentally_spec.rb", "spec/invocation_result_spec.rb", "spec/method_invoker_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://github.com/nkpart/accidentally}
16
- s.post_install_message = %q{PostInstall.txt}
16
+ s.post_install_message = %q{the whole thing?!}
17
17
  s.rdoc_options = ["--main", "README.rdoc"]
18
18
  s.require_paths = ["lib"]
19
19
  s.rubyforge_project = %q{accidentally}
@@ -0,0 +1,14 @@
1
+ module Accidentally
2
+ class InvocationResult
3
+ def initialize result, block_used = nil
4
+ @result= result
5
+ @block_used = block_used
6
+ end
7
+
8
+ attr_reader :result, :block_used
9
+
10
+ def == other
11
+ self.result == other.result && self.block_used == other.block_used
12
+ end
13
+ end
14
+ end
@@ -16,7 +16,11 @@ module Accidentally
16
16
  :f => proc { |m| MethodInvoker.invoke(original, m, args, &blk) },
17
17
  :candidates => proc { select_candidates(original.methods) }
18
18
  ).in {
19
- candidates.select { |m| f(m) == target }
19
+ candidates.inject([]) { |acc, m|
20
+ v = f(m)
21
+ acc << "#{m}#{" " + v.block_used if v.block_used}" if v.result == target
22
+ acc
23
+ }
20
24
  }
21
25
  end
22
26
 
@@ -1,7 +1,6 @@
1
1
  require 'accidentally/patches/kernel'
2
2
  require 'accidentally/patches/thread'
3
-
4
- class InvocationResult < Strucked.build(:result, :block_used); end
3
+ require 'accidentally/invocation_result'
5
4
 
6
5
  module Accidentally
7
6
  class MethodInvoker
@@ -14,16 +13,19 @@ module Accidentally
14
13
  end
15
14
 
16
15
  def invoke meth, args, &blk
16
+ # TODO This look bad. Too many places where invocation results are getting built
17
+ # and failure happening.
17
18
  v, warns = yield_and_collect_stderr {
18
- invocation_result, fail = either { do_send(meth, args, &blk) }
19
- if should_do_block_execute(invocation_result, fail) then
20
- either { invoke_and_infer_block(meth, args) }.compact.first
19
+ value, fail = either { do_send(meth, args, &blk) }
20
+ if should_do_block_execute(value, fail) then
21
+ r, fail = either { invoke_and_infer_block(meth, args) }
22
+ r || InvocationResult.new(fail)
21
23
  else
22
- invocation_result
24
+ InvocationResult.new(value)
23
25
  end
24
26
  }
25
- # TODO handle the warns
26
- v
27
+ # TODO handle the warns
28
+ v
27
29
  end
28
30
 
29
31
  private
@@ -47,8 +49,10 @@ module Accidentally
47
49
  end
48
50
 
49
51
  def invoke_and_infer_block m, args
50
- blk = proc { |x| x }
51
- do_send(m, args, &blk)
52
+ proc_body = "{ |x| x }"
53
+ blk = eval "proc #{proc_body}"
54
+ v = do_send(m, args, &blk)
55
+ InvocationResult.new(v, proc_body)
52
56
  end
53
57
  end
54
58
  end
data/lib/accidentally.rb CHANGED
@@ -12,7 +12,7 @@ class Object
12
12
  end
13
13
 
14
14
  module Accidentally
15
- VERSION = '0.0.1'
15
+ VERSION = '0.0.2'
16
16
 
17
17
  class Proxy
18
18
  def initialize object
@@ -5,54 +5,42 @@ include Accidentally
5
5
  describe Accidentally do
6
6
  it "should figure out length of an array" do
7
7
  methods = "dog".accidentally == 3
8
- assert methods.include?("length")
8
+ methods.should include("length")
9
9
  end
10
10
 
11
11
  it "should figure out array reversal" do
12
12
  methods = [1, 2].accidentally == [2, 1]
13
- assert methods.include?("reverse")
13
+ methods.should include("reverse")
14
14
  end
15
15
 
16
16
  it "should figure out select" do
17
17
  methods = [1, false, 2].accidentally == [1, 2]
18
- assert methods.include?("select { |x| x }")
18
+ methods.should include("select { |x| x }")
19
19
  end
20
20
 
21
21
  it "should figure out index" do
22
22
  methods = [:a, :b, :c].accidentally == :a
23
- assert methods.include?("first")
23
+ methods.should include("first")
24
24
  end
25
25
 
26
26
  it "should be able to be guided by a parameter" do
27
27
  methods = [:a, :b, :c].accidentally(:b) == 1
28
- assert methods.include?("index")
28
+ methods.should include("index")
29
29
  end
30
30
 
31
31
  it "should be able to be guided by more than one parameter" do
32
32
  methods = [:a, :b, :c, :d, :e].accidentally(1, 2) == [:b, :c]
33
- assert methods.include?("slice")
33
+ methods.should include("slice")
34
34
  end
35
35
 
36
36
  it "should be able to take a block suggestion" do
37
37
  m = [1, 2, 3].accidentally{ |a, b| a + b } == 6
38
- assert m.include?("inject")
38
+ m.should include("inject")
39
39
  end
40
40
 
41
41
  it "should not fail for fixnums" do
42
42
  m = 1.accidentally == "1"
43
- assert m.include?("to_s")
44
- end
45
- end
46
-
47
- describe Accidentally::MethodInvoker do
48
- it "should invoke a simple no args method" do
49
- r = MethodInvoker.invoke [], :size, []
50
- assert_equal 0, r
51
- end
52
-
53
- it "should invoke a no args method that takes a block" do
54
- r = MethodInvoker.invoke [1], :select, []
55
- assert_equal [1], r
43
+ m.should include("to_s")
56
44
  end
57
45
  end
58
46
 
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ include Accidentally
4
+
5
+ describe InvocationResult do
6
+ it "should be equal to others" do
7
+ InvocationResult.new(5, "b").should_not ==(InvocationResult.new(5))
8
+ InvocationResult.new(3, "b").should_not ==(InvocationResult.new(5, "b"))
9
+ end
10
+
11
+ end
@@ -0,0 +1,14 @@
1
+
2
+ include Accidentally
3
+
4
+ describe Accidentally::MethodInvoker do
5
+ it "should invoke a simple no args method" do
6
+ r = MethodInvoker.invoke [], :size, []
7
+ r.should == InvocationResult.new(0, nil)
8
+ end
9
+
10
+ it "should invoke a no args method that takes a block" do
11
+ r = MethodInvoker.invoke [1], :select, []
12
+ r.should == InvocationResult.new([1], "{ |x| x }")
13
+ end
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nkpart-accidentally
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nkpart
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-19 00:00:00 -08:00
12
+ date: 2008-11-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -60,6 +60,7 @@ files:
60
60
  - TODO
61
61
  - accidentally.gemspec
62
62
  - coverage/index.html
63
+ - coverage/lib-accidentally-invocation_result_rb.html
63
64
  - coverage/lib-accidentally-mad_hax_rb.html
64
65
  - coverage/lib-accidentally-method_invoker_rb.html
65
66
  - coverage/lib-accidentally-patches-kernel_rb.html
@@ -68,6 +69,7 @@ files:
68
69
  - etc/examples.rb
69
70
  - etc/textmate_command.rb
70
71
  - lib/accidentally.rb
72
+ - lib/accidentally/invocation_result.rb
71
73
  - lib/accidentally/mad_hax.rb
72
74
  - lib/accidentally/method_invoker.rb
73
75
  - lib/accidentally/patches/kernel.rb
@@ -76,12 +78,14 @@ files:
76
78
  - script/destroy
77
79
  - script/generate
78
80
  - spec/accidentally_spec.rb
81
+ - spec/invocation_result_spec.rb
82
+ - spec/method_invoker_spec.rb
79
83
  - spec/spec.opts
80
84
  - spec/spec_helper.rb
81
85
  - tasks/rspec.rake
82
86
  has_rdoc: true
83
87
  homepage: http://github.com/nkpart/accidentally
84
- post_install_message: PostInstall.txt
88
+ post_install_message: the whole thing?!
85
89
  rdoc_options:
86
90
  - --main
87
91
  - README.rdoc