procemon 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MGRmYzFmYjIzNDdhMWU5NTJiM2ZlNDA0OGVhMmNjMzg4NjE2OGRkNg==
4
+ YjZiMzE0OGY4ZWYzZGU5NmRlYTQxNWM0YTk5NjhiZGNjYjhlZjAzNQ==
5
5
  data.tar.gz: !binary |-
6
- YmUyMTFhODliMjg4NzU0Y2JiYmYwNjg5MTQwMTc3MjdhZDMxZGVhZA==
6
+ MzQ0YWRkMDhkN2YzZmRiYzk0MTdiNDdlMWMwZTlkYzU5OTBkZTI1OQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWQ5ZGU3Y2Q5NWZkNjNmYTE4NDA4ZjY1N2Y4YTRiMTViZGRmMGY4ZDJkM2Uy
10
- ZWZlZGNmMzA5NzljOTk1NWMxODk5YTA4Mjc1NTQwYzhkZGRjOTg0OTgyYWQy
11
- MTAwYTMxNjc4MGU1MjliM2ZjYjczYjllMjRmOWQwZDc3MTVkZDM=
9
+ ZjBmMGZkOTQ1NWNkMWU2MjgyMjM4NTJjNjA0MmNlOTVmZjFjMDQ3NDNiNjc3
10
+ YWY1Njc4Nzc4YjY1N2M4OTcyOGZjNTZiYTg4ODc5ZTk4M2E1MmU2ZWJkZWVj
11
+ MzQxNTQ1M2RhNThhNzg3YjI3ZmMxMmQwN2MxODdlY2MzYjllN2U=
12
12
  data.tar.gz: !binary |-
13
- ZWJmYWYyODQyYWRlMzhiMjE1ODk4NTk3NjU0OGI3MzQwY2MyYmY5YmNlNWZh
14
- NjIwMDM1NWE4ZGU1NTFhNjQ0MTVhN2ZmNTVjMWI3NDBkMjVkOGQyNTgzOWRi
15
- YTEzYjU1ODUwMWI0MjA1YmE3M2QzMTI4OWY4MTBiNTFjOTNhNzY=
13
+ ODlhNzY0ZDc2MzJkN2FkYTg1YzAxMDg5ZDYwMDAyMjJlNDZlMzBlNzJlZjAz
14
+ OWRhNDJiZjMzZGEyYzg4M2Q3N2U5ZGVlYjdkYTllOWFhMWYyZThjODgzZjEw
15
+ ZWJmNDA0MDM4ODA0ZDc0YzUyY2JhNjFjOTNmMTczMmJmYzE5ZWY=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.2
1
+ 0.6.3
@@ -6,28 +6,27 @@ class TestT
6
6
  puts self
7
7
  end
8
8
 
9
- def test
10
- puts self
9
+ def test string
10
+ puts self,string
11
11
  end
12
12
 
13
13
  end
14
14
 
15
- TestT.inject_instance_method :test do
15
+ TestT.inject_instance_method :test do |str|
16
16
 
17
- puts "hello world! instance"
17
+ puts "hello world! instance "+str
18
18
 
19
19
  end
20
20
 
21
- TestT.inject_singleton_method :test, params: "after" do
22
-
21
+ TestT.inject_singleton_method :test, add: "after" do
23
22
  puts "hello world! singleton"
24
-
25
23
  end
26
24
 
27
- puts "\nafter,singleton case:"
25
+ puts "---\nafter,singleton case:"
28
26
  TestT.test
29
- puts "\nbefore,instance case:"
30
- TestT.new.test
27
+
28
+ puts "---\nbefore,instance case:"
29
+ TestT.new.test "boogie man"
31
30
 
32
31
 
33
32
  #after,singleton case:
@@ -1,10 +1,9 @@
1
- class Class
1
+ module InjectMethods
2
2
 
3
3
  # this will inject a code block to a target instance method
4
4
  # by default the before or after sym is not required
5
5
  #
6
6
  # options can be:
7
- # - params: "merged" -> if given than the block params and the original method params will be merged
8
7
  # - add: 'before'/'after' add your code into method before the original part of after
9
8
  #
10
9
  # Test.inject_singleton_method :hello do |*args|
@@ -16,12 +15,21 @@ class Class
16
15
  original_method= self.method(method).clone
17
16
  self.singleton_class.__send__ :undef_method, method
18
17
 
19
- source_code= InjectMethodHelper.generate_source(
20
- block,original_method,options
21
- )
18
+ # source code
19
+ begin
20
+ sources= nil
21
+ case options[:add].to_s.downcase[0]
22
+ when "a"
23
+ sources= [original_method.to_proc,block]
24
+ else
25
+ sources= [block,original_method.to_proc]
26
+ end
27
+ end
22
28
 
23
29
  self.define_singleton_method method do |*arguments|
24
- source_code.to_proc(self.binding?).call(*arguments)
30
+ sources.each do |proc|
31
+ proc.call_with_binding(original_method.binding?,*arguments)
32
+ end
25
33
  end
26
34
 
27
35
  return nil
@@ -32,7 +40,6 @@ class Class
32
40
  # by default the before or after sym is not required
33
41
  #
34
42
  # options can be:
35
- # - params: "merged" -> if given than the block params and the original method params will be merged
36
43
  # - add: 'before'/'after' add your code into method before the original part of after
37
44
  #
38
45
  # Test.inject_instance_method :hello, params: "merged" do |*args|
@@ -41,57 +48,40 @@ class Class
41
48
  #
42
49
  def inject_instance_method(method,options={},&block)
43
50
 
44
- original_method= self.instance_method(method).clone
45
-
46
- source_code= InjectMethodHelper.generate_source(
47
- block,original_method,options
48
- )
51
+ unbound_method= self.instance_method(method).clone
49
52
 
50
53
  self.class_eval do
51
54
  undef_method method
52
55
  define_method(
53
- method,
54
- source_code.to_proc(self.binding?)
56
+ method,
57
+ Proc.new { |*args|
58
+
59
+ begin
60
+ case options[:add].to_s.downcase[0]
61
+ when "a"
62
+ unbound_method.bind(self).call(*args)
63
+ block.call_with_binding(self.binding?,*args)
64
+
65
+ else
66
+ block.call_with_binding(self.binding?,*args)
67
+ unbound_method.bind(self).call(*args)
68
+ end
69
+ end
70
+
71
+ }
55
72
  )
56
73
  end
57
74
 
58
75
  end
59
-
60
76
  alias :extend_instance_method :inject_instance_method
61
77
 
62
78
  end
63
79
 
64
- module InjectMethodHelper
65
-
66
- def self.generate_source block,original_method,options
67
-
68
- # source code
69
- begin
70
- source_code= nil
71
- case options[:add].to_s.downcase[0]
72
- when "a"
73
- source_code= original_method.source.body+block.source.body
74
- else
75
- source_code= block.source.body+original_method.source.body
76
- end
77
- end
78
-
79
- # params
80
- begin
81
- source_params= nil
82
- case options[:params].to_s.downcase[0]
83
- when "m"
84
- begin
85
- source_params= (block.source.params+original_method.source.params)
86
- end
87
- else
88
- begin
89
- source_params= original_method.source.params
90
- end
91
- end
92
- end
93
80
 
94
- return source_code.build(*source_params)
95
- end
81
+ class Module
82
+ include InjectMethods
83
+ end
96
84
 
85
+ class Class
86
+ include InjectMethods
97
87
  end
@@ -15,7 +15,7 @@ module MethodToProcSource
15
15
  else
16
16
 
17
17
  if self.source_location.nil?
18
- return "Proc.new { }"
18
+ return nil
19
19
  end
20
20
 
21
21
  File.open(File.expand_path(self.source_location[0])
@@ -38,7 +38,8 @@ module MethodToProcSource
38
38
  return_string.sub!(args_to_replace,"|#{args_to_replace}|")
39
39
  end
40
40
 
41
- rescue TypeError,NilError
41
+ rescue TypeError,NoMethodError
42
+ return nil
42
43
  end
43
44
 
44
45
  return_string.sub!(/\s*\bdef\s*[\w\S]*/,'Proc.new{')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procemon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-24 00:00:00.000000000 Z
11
+ date: 2014-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asynchronous