domesticate_monkeys 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a51442a6e936ba6fab104101071df5308e93da83c4382e745531ea552220d999
|
4
|
+
data.tar.gz: 18851cbc055822ca541ca188925df2979475f9afc4a76264b9e18a6a9650263c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6eb06a87b50d24b65aacfba77b94c8ce262e3f1f0104cc5babe42017fe49764482f4ca4d3f77056a8dd72b114bedb748491ba4106c976dc54751fed35b825c75
|
7
|
+
data.tar.gz: 2b1cccbd6f2c7f6bb7dffcc14e94b775a8137d3870818b0082850605491c8a049d587a7dff3d3392941abee6becb6b3975f0461e86bf2858f07280e552be7dc0
|
@@ -15,10 +15,12 @@ module DomesticateMonkeys
|
|
15
15
|
|
16
16
|
class << self
|
17
17
|
|
18
|
-
def add(unbound_method)
|
19
|
-
|
20
|
-
name = format_method_name(unbound_method)
|
18
|
+
def add(unbound_method, method_type)
|
19
|
+
|
20
|
+
name = format_method_name(unbound_method, method_type)
|
21
21
|
source = read_method_source(unbound_method)
|
22
|
+
|
23
|
+
puts "name=#{name}, source=#{source}" unless name && source
|
22
24
|
return unless name && source
|
23
25
|
|
24
26
|
# Find the existing track for the given method, or create a new track
|
@@ -37,28 +39,22 @@ module DomesticateMonkeys
|
|
37
39
|
return
|
38
40
|
end
|
39
41
|
|
40
|
-
def format_method_name(unbound_method)
|
41
|
-
|
42
|
-
# The formatted method name serves as the uniquely identifying key for
|
43
|
-
# all operations, with a distinguishing '#' for instance methods and a
|
44
|
-
# '.' for singleton methods.
|
45
|
-
|
42
|
+
def format_method_name(unbound_method, method_type)
|
46
43
|
name = unbound_method.to_s
|
47
44
|
|
48
|
-
return format_instance_method(name) if
|
49
|
-
return format_singleton_method(name) if
|
45
|
+
return format_instance_method(name) if method_type == :instance
|
46
|
+
return format_singleton_method(name) if method_type == :singleton
|
50
47
|
end
|
51
48
|
|
52
|
-
def format_instance_method(name)
|
53
|
-
|
54
|
-
|
55
|
-
.delete('>')
|
49
|
+
def format_instance_method(name)
|
50
|
+
regex = /.*?<UnboundMethod: ([a-zA-Z:_]{1,}).*(?>([#]))([#.a-zA-Z_?]{1,})/
|
51
|
+
name.scan(regex).flatten.join
|
56
52
|
end
|
57
53
|
|
58
54
|
def format_singleton_method(name)
|
59
|
-
|
60
|
-
|
61
|
-
|
55
|
+
# regex = /.*?<Method:[^a-zA-Z:]{0,}([a-zA-Z:]{1,})[>]{0,1}([a-zA-Z_.]{1,})/
|
56
|
+
regex = /.*?<Method:[^a-zA-Z:]{0,}([a-zA-Z:]{1,})[^\.]*([.A-Za-z_]{1,})/
|
57
|
+
name.scan(regex).flatten.join
|
62
58
|
end
|
63
59
|
|
64
60
|
def read_method_source(unbound_method)
|
@@ -40,7 +40,7 @@ module DomesticateMonkeys
|
|
40
40
|
|
41
41
|
def filter_tracks_by_path(tracks, path_filter)
|
42
42
|
tracks.select do |_method, track|
|
43
|
-
track.sources.any? { |source| source.snakecase.include?(path_filter.snakecase) }
|
43
|
+
track.sources.any? { |source| source.snakecase.include?(path_filter.snakecase) && source.exclude?("/vendor/") }
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require "pry"
|
1
2
|
|
2
3
|
class Module
|
3
4
|
|
@@ -16,13 +17,13 @@ class Module
|
|
16
17
|
# orignal definition.
|
17
18
|
|
18
19
|
def method_added(_method)
|
19
|
-
unbound_method = instance_method(_method)
|
20
|
-
DomesticateMonkeys::Track.add(unbound_method)
|
20
|
+
unbound_method = self.instance_method(_method)
|
21
|
+
DomesticateMonkeys::Track.add(unbound_method, :instance)
|
21
22
|
end
|
22
23
|
|
23
24
|
def self.singleton_method_added(_method)
|
24
|
-
unbound_method =
|
25
|
-
DomesticateMonkeys::Track.add(unbound_method)
|
25
|
+
unbound_method = self.method(_method)
|
26
|
+
DomesticateMonkeys::Track.add(unbound_method, :singleton)
|
26
27
|
end
|
27
28
|
|
28
29
|
end
|