rshade 0.1.9 → 0.1.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/rshade/config/store.rb +9 -1
- data/lib/rshade/config.rb +5 -0
- data/lib/rshade/event.rb +0 -4
- data/lib/rshade/event_processor.rb +3 -2
- data/lib/rshade/filter/exclude_path_filter.rb +7 -6
- data/lib/rshade/serializer/traversal.rb +47 -0
- data/lib/rshade/trace.rb +1 -1
- data/lib/rshade/version.rb +1 -1
- data/lib/rshade.rb +1 -2
- metadata +3 -3
- data/lib/rshade/binding_serializer.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91ab4d11c9af8066bff925ab208f10e20c5bf7fd5685418b0c8ef01880c13d2f
|
4
|
+
data.tar.gz: 7c0e95c99b1707e5290440cf3459e02cd465c653bdbfbfdc3f216d77a3647c66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21fe1fa50bf9c63261fbed6651ad8999edc22734567c3f33b2ba872ba95640cb70b3cff8fa0c640fd13faa8cf73371bb107ee8d0303e3e1322bba06a87f30d58
|
7
|
+
data.tar.gz: 2b657588399858bcc1aa9f60cac2baf92ea3427b341542c40f15c7a7a26cbfb17cabfa3b98a2c5465c1905a3c8dfeb9500ed772351d89bdd7c2b6ca3ac223392
|
data/Gemfile.lock
CHANGED
data/lib/rshade/config/store.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
module RShade
|
3
3
|
class Config
|
4
4
|
class Store
|
5
|
-
attr_reader :filter_composition, :formatter, :tp_events
|
5
|
+
attr_reader :filter_composition, :formatter, :tp_events, :custom_serializers
|
6
6
|
|
7
7
|
# @param [Hash] options
|
8
8
|
# @option options [RShade::Filter::FilterComposition] :filter_composition
|
@@ -12,12 +12,20 @@ module RShade
|
|
12
12
|
@filter_composition = options.fetch(:filter_composition, default_filter_composition)
|
13
13
|
@formatter = options.fetch(:formatter, ::RShade::Formatter::Stdout)
|
14
14
|
@tp_events = options.fetch(:tp_events, [:call, :return])
|
15
|
+
@custom_serializers = options.fetch(:custom_serializers, {})
|
15
16
|
end
|
16
17
|
|
17
18
|
def set_tp_events(tp_events)
|
18
19
|
@tp_events = tp_events
|
20
|
+
self
|
19
21
|
end
|
20
22
|
|
23
|
+
def add_custom_serializers(hash)
|
24
|
+
custom_serializers.merge!(hash)
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
|
21
29
|
def config_filter(filter_type, &block)
|
22
30
|
filter_composition.config_filter(filter_type, &block)
|
23
31
|
self
|
data/lib/rshade/config.rb
CHANGED
data/lib/rshade/event.rb
CHANGED
@@ -3,9 +3,10 @@ module RShade
|
|
3
3
|
class EventProcessor
|
4
4
|
attr_reader :store
|
5
5
|
|
6
|
-
def initialize(store)
|
6
|
+
def initialize(store, config)
|
7
7
|
@store = store
|
8
|
-
|
8
|
+
custom_serializers = config.custom_serializers
|
9
|
+
@var_serializer = ::RShade::Serializer::Traversal.new(custom_serializers)
|
9
10
|
end
|
10
11
|
|
11
12
|
# @param [RShade::Event] event
|
@@ -11,14 +11,15 @@ module RShade
|
|
11
11
|
0
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
!
|
14
|
+
def call(event)
|
15
|
+
event_path = event.path
|
16
|
+
!paths.any? do |path|
|
17
|
+
next str?(path, event_path) if path.is_a? String
|
18
|
+
next regexp?(path, event_path) if path.is_a? Regexp
|
19
|
+
false
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
|
-
def regexp?(regex, event_path)
|
20
|
-
!regex.match?(event_path)
|
21
|
-
end
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module RShade
|
2
|
+
module Serializer
|
3
|
+
class Traversal
|
4
|
+
attr_reader :types
|
5
|
+
|
6
|
+
def initialize(custom_types={})
|
7
|
+
@types = default_types.merge(custom_types)
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(hash)
|
11
|
+
new_val = {}
|
12
|
+
hash.each do |name, value|
|
13
|
+
new_val[name] = traverse(value)
|
14
|
+
end
|
15
|
+
new_val
|
16
|
+
end
|
17
|
+
|
18
|
+
def default_types
|
19
|
+
{
|
20
|
+
default: ->(value) { value.to_s },
|
21
|
+
Integer => ->(value) { value },
|
22
|
+
Float => ->(value) { value },
|
23
|
+
Numeric => ->(value) { value },
|
24
|
+
String => ->(value) { value },
|
25
|
+
Hash => ->(value) do
|
26
|
+
hash = {}
|
27
|
+
value.each do |k,v|
|
28
|
+
hash[k] = traverse(v)
|
29
|
+
end
|
30
|
+
hash
|
31
|
+
end,
|
32
|
+
Array => ->(value) do
|
33
|
+
value.map { |item| traverse(item) }
|
34
|
+
end
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def traverse(value)
|
39
|
+
klass = value
|
40
|
+
klass = value.class unless value.is_a?(Class)
|
41
|
+
serializer = types[klass]
|
42
|
+
serializer = types[:default] unless serializer
|
43
|
+
serializer.call(value)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/rshade/trace.rb
CHANGED
@@ -13,7 +13,7 @@ module RShade
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def reveal(&block)
|
16
|
-
processor = EventProcessor.new(
|
16
|
+
processor = EventProcessor.new(event_store, config)
|
17
17
|
observer = EventObserver.new(config, processor)
|
18
18
|
observable = RShade::TraceObservable.new([observer], config)
|
19
19
|
observable.reveal &block
|
data/lib/rshade/version.rb
CHANGED
data/lib/rshade.rb
CHANGED
@@ -5,9 +5,9 @@ require 'set'
|
|
5
5
|
require 'observer'
|
6
6
|
require 'rshade/config'
|
7
7
|
require 'rshade/config/store'
|
8
|
+
require 'rshade/serializer/traversal'
|
8
9
|
require 'rshade/event_tree'
|
9
10
|
require 'rshade/event_processor'
|
10
|
-
require 'rshade/binding_serializer'
|
11
11
|
require 'rshade/event_observer'
|
12
12
|
require 'rshade/trace_observable'
|
13
13
|
require 'rshade/filter/abstract_filter'
|
@@ -27,6 +27,5 @@ require 'rshade/trace'
|
|
27
27
|
require 'rshade/rspec/rspec'
|
28
28
|
require 'rshade/version'
|
29
29
|
|
30
|
-
|
31
30
|
module RShade
|
32
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rshade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.9
|
4
|
+
version: 0.1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Lopatin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -85,7 +85,6 @@ files:
|
|
85
85
|
- bin/setup
|
86
86
|
- html/template.html.erb
|
87
87
|
- lib/rshade.rb
|
88
|
-
- lib/rshade/binding_serializer.rb
|
89
88
|
- lib/rshade/config.rb
|
90
89
|
- lib/rshade/config/store.rb
|
91
90
|
- lib/rshade/core_extensions/object/reveal.rb
|
@@ -107,6 +106,7 @@ files:
|
|
107
106
|
- lib/rshade/formatter/string.rb
|
108
107
|
- lib/rshade/rails/rails.rb
|
109
108
|
- lib/rshade/rspec/rspec.rb
|
109
|
+
- lib/rshade/serializer/traversal.rb
|
110
110
|
- lib/rshade/trace.rb
|
111
111
|
- lib/rshade/trace_observable.rb
|
112
112
|
- lib/rshade/version.rb
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'date'
|
2
|
-
module RShade
|
3
|
-
class BindingSerializer
|
4
|
-
SERIALIZE_CLASSES = [NilClass, TrueClass, FalseClass, Numeric, Time, Date, String, Symbol, Array]
|
5
|
-
|
6
|
-
def initialize(opts={})
|
7
|
-
end
|
8
|
-
|
9
|
-
def call(trace_binding)
|
10
|
-
vars = {}
|
11
|
-
trace_binding.each do |name, value|
|
12
|
-
if SERIALIZE_CLASSES.any? { |klass| value.is_a?(klass) }
|
13
|
-
vars[name] = value
|
14
|
-
elsif value.is_a?(Hash)
|
15
|
-
copy = shallow_copy_of_hash(value)
|
16
|
-
vars[name] = copy
|
17
|
-
else
|
18
|
-
class_name = value.is_a?(Class) ? value.to_s : value.class.to_s
|
19
|
-
vars[name] = class_name
|
20
|
-
end
|
21
|
-
end
|
22
|
-
vars
|
23
|
-
end
|
24
|
-
|
25
|
-
#TODO: work on more efficient way to serialize hash
|
26
|
-
def shallow_copy_of_hash(hash)
|
27
|
-
{}.tap do |new_hash|
|
28
|
-
hash.each do |k,v|
|
29
|
-
new_hash[k] = v.to_s
|
30
|
-
end
|
31
|
-
new_hash
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|