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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5ef0c31c59c3ed46f44326e1e28f6a5b2b2ccbdbce32152e6b54233f875d6d0
4
- data.tar.gz: f394a28db1cda3274954309996eaea895bf715737f34aecbb09c0d0873fd09fb
3
+ metadata.gz: 91ab4d11c9af8066bff925ab208f10e20c5bf7fd5685418b0c8ef01880c13d2f
4
+ data.tar.gz: 7c0e95c99b1707e5290440cf3459e02cd465c653bdbfbfdc3f216d77a3647c66
5
5
  SHA512:
6
- metadata.gz: 956a68bec41feea89513eab5e0002fadb70d9d0f9e57f1c47f316d2c30c6e801cb510a80312e54b9d075c4fa7f768ad6b2acc881dc3db03680a9351abe56dda4
7
- data.tar.gz: 4bafb27714ffaf13734f99522897b3057da42f5bf4eb05929b824af9c67f19076f304373ab835f1cf0b0bb3ef5a253a1fd23ec343236596255b64f34290702b3
6
+ metadata.gz: 21fe1fa50bf9c63261fbed6651ad8999edc22734567c3f33b2ba872ba95640cb70b3cff8fa0c640fd13faa8cf73371bb107ee8d0303e3e1322bba06a87f30d58
7
+ data.tar.gz: 2b657588399858bcc1aa9f60cac2baf92ea3427b341542c40f15c7a7a26cbfb17cabfa3b98a2c5465c1905a3c8dfeb9500ed772351d89bdd7c2b6ca3ac223392
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rshade (0.1.9)
4
+ rshade (0.1.9.1)
5
5
  colorize
6
6
 
7
7
  GEM
@@ -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
@@ -51,6 +51,11 @@ module RShade
51
51
  self
52
52
  end
53
53
 
54
+ def add_custom_serializers(hash)
55
+ @config_store.add_custom_serializers(hash)
56
+ self
57
+ end
58
+
54
59
  def value
55
60
  @config_store
56
61
  end
data/lib/rshade/event.rb CHANGED
@@ -47,10 +47,6 @@ module RShade
47
47
  new(hash)
48
48
  end
49
49
 
50
- def self.create_blank(level)
51
- new({level: level}, true)
52
- end
53
-
54
50
  private
55
51
 
56
52
  def fetch(key)
@@ -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
- @var_serializer = BindingSerializer.new
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
- private
15
- def str?(str, event_path)
16
- !event_path.include?(str)
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(@event_store)
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
@@ -1,3 +1,3 @@
1
1
  module RShade
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.9.1"
3
3
  end
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-27 00:00:00.000000000 Z
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