nkpart-accidentally 0.0.1 → 0.0.2

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/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