rshade 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +31 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +2 -2
- data/README.md +4 -3
- data/lib/rshade/config/registry.rb +1 -8
- data/lib/rshade/config/stack_store.rb +8 -3
- data/lib/rshade/config/store.rb +7 -3
- data/lib/rshade/config.rb +5 -5
- data/lib/rshade/core_extensions/object/reveal.rb +3 -0
- data/lib/rshade/event.rb +2 -2
- data/lib/rshade/event_processor.rb +1 -1
- data/lib/rshade/event_tree.rb +5 -3
- data/lib/rshade/filter/default.rb +1 -1
- data/lib/rshade/filter/filter_composition.rb +5 -3
- data/lib/rshade/filter/include_path_filter.rb +1 -0
- data/lib/rshade/filter/variable_filter.rb +1 -0
- data/lib/rshade/formatter/stack/stdout.rb +1 -1
- data/lib/rshade/formatter/stack/string.rb +15 -3
- data/lib/rshade/formatter/trace/file.rb +1 -3
- data/lib/rshade/formatter/trace/html.rb +1 -3
- data/lib/rshade/formatter/trace/json.rb +4 -5
- data/lib/rshade/formatter/trace/stdout.rb +1 -1
- data/lib/rshade/rspec/rspec.rb +3 -1
- data/lib/rshade/serializer/traversal.rb +2 -7
- data/lib/rshade/stack.rb +1 -1
- data/lib/rshade/stack_frame.rb +4 -3
- data/lib/rshade/trace_observable.rb +5 -5
- data/lib/rshade/version.rb +1 -1
- data/rshade.gemspec +6 -7
- metadata +4 -45
- data/lib/rshade/rails/rails.rb +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: efdbfc08fca88589c49b580abbbeb36687b68986e365291c2c4758633b33943d
         | 
| 4 | 
            +
              data.tar.gz: 78e8147a5539bb79216281763274c676d916729b62af681b2811caa1772f7031
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 39fad4c1cb0663e510aaee89100090a10e689880da9f2fb2422fc404094337bad4bcbd5bb72a96270b284a3709392d4d9879cb1410d8f912d8e55db2962a8e4f
         | 
| 7 | 
            +
              data.tar.gz: de5d785cfe183f5a7109aeebb128086e0173ce126788165b7dc18b818de066909830e628b5322c84ff6c9655696cb34cc8c7d289aafff036965f6a7caeb7bda0
         | 
    
        data/.rubocop.yml
    ADDED
    
    | @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # The behavior of RuboCop can be controlled via the .rubocop.yml
         | 
| 2 | 
            +
            # configuration file. It makes it possible to enable/disable
         | 
| 3 | 
            +
            # certain cops (checks) and to alter their behavior if they accept
         | 
| 4 | 
            +
            # any parameters. The file can be placed either in your home
         | 
| 5 | 
            +
            # directory or in some project directory.
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # RuboCop will start looking for the configuration file in the directory
         | 
| 8 | 
            +
            # where the inspected file is and continue its way up to the root directory.
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
            # See https://docs.rubocop.org/rubocop/configuration
         | 
| 11 | 
            +
            AllCops:
         | 
| 12 | 
            +
              NewCops: enable
         | 
| 13 | 
            +
              Exclude:
         | 
| 14 | 
            +
                - 'spec/fixture/**/*'
         | 
| 15 | 
            +
            Style/HashSyntax:
         | 
| 16 | 
            +
              EnforcedShorthandSyntax: never
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            Naming/MethodParameterName:
         | 
| 19 | 
            +
              Exclude:
         | 
| 20 | 
            +
                - spec/**/*
         | 
| 21 | 
            +
                - test.rb
         | 
| 22 | 
            +
            Style/Documentation:
         | 
| 23 | 
            +
              Enabled: false
         | 
| 24 | 
            +
            Metrics/BlockLength:
         | 
| 25 | 
            +
              Max: 75
         | 
| 26 | 
            +
            Metrics/MethodLength:
         | 
| 27 | 
            +
              Max: 30
         | 
| 28 | 
            +
            Metrics/PerceivedComplexity:
         | 
| 29 | 
            +
              Max: 10
         | 
| 30 | 
            +
            Metrics/AbcSize:
         | 
| 31 | 
            +
              Max: 30
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                rshade (0.2. | 
| 4 | 
            +
                rshade (0.2.1)
         | 
| 5 5 | 
             
                  binding_of_caller
         | 
| 6 6 | 
             
                  colorize
         | 
| 7 7 | 
             
                  prism
         | 
| @@ -12,7 +12,7 @@ GEM | |
| 12 12 | 
             
                binding_of_caller (1.0.1)
         | 
| 13 13 | 
             
                  debug_inspector (>= 1.2.0)
         | 
| 14 14 | 
             
                coderay (1.1.3)
         | 
| 15 | 
            -
                colorize ( | 
| 15 | 
            +
                colorize (1.1.0)
         | 
| 16 16 | 
             
                debug_inspector (1.2.0)
         | 
| 17 17 | 
             
                diff-lcs (1.5.0)
         | 
| 18 18 | 
             
                method_source (1.0.0)
         | 
    
        data/README.md
    CHANGED
    
    | @@ -102,11 +102,12 @@ As you can see all code that have been in use is printed. | |
| 102 102 |  | 
| 103 103 | 
             
            ## Stack reveal
         | 
| 104 104 | 
             
            Config
         | 
| 105 | 
            +
             | 
| 105 106 | 
             
            ```ruby
         | 
| 106 107 | 
             
            ::RShade::Config::Registry.instance.stack_config do |config|
         | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 108 | 
            +
               config.exclude_gems!
         | 
| 109 | 
            +
               filepath = File.join(Rails.root, 'log', 'rshade-stack.json.log')
         | 
| 110 | 
            +
               config.formatter!(:json, { filepath: filepath, pretty: false })
         | 
| 110 111 | 
             
            end
         | 
| 111 112 | 
             
            ```
         | 
| 112 113 |  | 
| @@ -3,9 +3,8 @@ | |
| 3 3 | 
             
            module RShade
         | 
| 4 4 | 
             
              class Config
         | 
| 5 5 | 
             
                class Registry
         | 
| 6 | 
            -
                  attr_reader :map, :mutex
         | 
| 7 | 
            -
             | 
| 8 6 | 
             
                  include Singleton
         | 
| 7 | 
            +
                  attr_reader :map, :mutex
         | 
| 9 8 |  | 
| 10 9 | 
             
                  def initialize
         | 
| 11 10 | 
             
                    @map = {}
         | 
| @@ -13,12 +12,6 @@ module RShade | |
| 13 12 | 
             
                    defaults
         | 
| 14 13 | 
             
                  end
         | 
| 15 14 |  | 
| 16 | 
            -
                  def set_default_stack(config)
         | 
| 17 | 
            -
                    mutex.synchronize do
         | 
| 18 | 
            -
                      map[:store_default] = config
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 15 | 
             
                  def default_stack_config
         | 
| 23 16 | 
             
                    val = nil
         | 
| 24 17 | 
             
                    mutex.synchronize do
         | 
| @@ -6,7 +6,8 @@ module RShade | |
| 6 6 | 
             
                  attr_reader :filter, :formatter, :custom_serializers
         | 
| 7 7 |  | 
| 8 8 | 
             
                  DEFAULT_FORMATTER = {
         | 
| 9 | 
            -
                    json: ::RShade::Formatter::Stack::Json
         | 
| 9 | 
            +
                    json: ::RShade::Formatter::Stack::Json,
         | 
| 10 | 
            +
                    stdout: ::RShade::Formatter::Stack::Stdout
         | 
| 10 11 | 
             
                  }.freeze
         | 
| 11 12 |  | 
| 12 13 | 
             
                  # @param [Hash] options
         | 
| @@ -28,7 +29,7 @@ module RShade | |
| 28 29 | 
             
                    self
         | 
| 29 30 | 
             
                  end
         | 
| 30 31 |  | 
| 31 | 
            -
                  def  | 
| 32 | 
            +
                  def formatter!(formatter, opts = {})
         | 
| 32 33 | 
             
                    @formatter = formatter.is_a?(Symbol) ? set_symbol_formatter(formatter, opts) : formatter
         | 
| 33 34 | 
             
                    self
         | 
| 34 35 | 
             
                  end
         | 
| @@ -50,8 +51,12 @@ module RShade | |
| 50 51 | 
             
                  end
         | 
| 51 52 |  | 
| 52 53 | 
             
                  def default_filter_composition
         | 
| 54 | 
            +
                    variable_filter = RShade::Filter::VariableFilter.new
         | 
| 55 | 
            +
                    include_filter = RShade::Filter::IncludePathFilter.new
         | 
| 56 | 
            +
                    exclude_filter = RShade::Filter::ExcludePathFilter.new
         | 
| 57 | 
            +
             | 
| 53 58 | 
             
                    RShade::Filter::FilterBuilder.build([:or,
         | 
| 54 | 
            -
                                                         [:or,  | 
| 59 | 
            +
                                                         [:or, variable_filter, include_filter], exclude_filter])
         | 
| 55 60 | 
             
                  end
         | 
| 56 61 | 
             
                end
         | 
| 57 62 | 
             
              end
         | 
    
        data/lib/rshade/config/store.rb
    CHANGED
    
    | @@ -16,7 +16,7 @@ module RShade | |
| 16 16 | 
             
                    @custom_serializers = options.fetch(:custom_serializers, {})
         | 
| 17 17 | 
             
                  end
         | 
| 18 18 |  | 
| 19 | 
            -
                  def  | 
| 19 | 
            +
                  def tp_events!(tp_events)
         | 
| 20 20 | 
             
                    @tp_events = tp_events
         | 
| 21 21 | 
             
                    self
         | 
| 22 22 | 
             
                  end
         | 
| @@ -31,7 +31,7 @@ module RShade | |
| 31 31 | 
             
                    self
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
| 34 | 
            -
                  def  | 
| 34 | 
            +
                  def formatter!(formatter)
         | 
| 35 35 | 
             
                    @formatter = formatter
         | 
| 36 36 | 
             
                    self
         | 
| 37 37 | 
             
                  end
         | 
| @@ -39,8 +39,12 @@ module RShade | |
| 39 39 | 
             
                  private
         | 
| 40 40 |  | 
| 41 41 | 
             
                  def default_filter_composition
         | 
| 42 | 
            +
                    variable_filter = RShade::Filter::VariableFilter.new
         | 
| 43 | 
            +
                    include_filter = RShade::Filter::IncludePathFilter.new
         | 
| 44 | 
            +
                    exclude_filter = RShade::Filter::ExcludePathFilter.new
         | 
| 45 | 
            +
             | 
| 42 46 | 
             
                    RShade::Filter::FilterBuilder.build([:or,
         | 
| 43 | 
            -
                                                         [:or,  | 
| 47 | 
            +
                                                         [:or, variable_filter, include_filter], exclude_filter])
         | 
| 44 48 | 
             
                  end
         | 
| 45 49 | 
             
                end
         | 
| 46 50 | 
             
              end
         | 
    
        data/lib/rshade/config.rb
    CHANGED
    
    | @@ -2,10 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module RShade
         | 
| 4 4 | 
             
              class Config
         | 
| 5 | 
            -
                RUBY_VERSION_PATTERN = /ruby-[0-9.] | 
| 5 | 
            +
                RUBY_VERSION_PATTERN = /ruby-[0-9.]*/.freeze
         | 
| 6 6 |  | 
| 7 7 | 
             
                def self.default
         | 
| 8 | 
            -
                  ::RShade::Config::Store.new. | 
| 8 | 
            +
                  ::RShade::Config::Store.new.formatter!(::RShade::Formatter::Trace::Stdout.new)
         | 
| 9 9 | 
             
                                         .config_filter(::RShade::Filter::ExcludePathFilter) do |paths|
         | 
| 10 10 | 
             
                    default_excluded_path.each do |path|
         | 
| 11 11 | 
             
                      paths << path
         | 
| @@ -28,7 +28,7 @@ module RShade | |
| 28 28 |  | 
| 29 29 | 
             
                def tp_events(&block)
         | 
| 30 30 | 
             
                  events = block.call
         | 
| 31 | 
            -
                  @config_store. | 
| 31 | 
            +
                  @config_store.tp_events!(events)
         | 
| 32 32 | 
             
                  self
         | 
| 33 33 | 
             
                end
         | 
| 34 34 |  | 
| @@ -49,7 +49,7 @@ module RShade | |
| 49 49 |  | 
| 50 50 | 
             
                def formatter(&block)
         | 
| 51 51 | 
             
                  formatter = block.call
         | 
| 52 | 
            -
                  @config_store. | 
| 52 | 
            +
                  @config_store.formatter!(formatter)
         | 
| 53 53 | 
             
                  self
         | 
| 54 54 | 
             
                end
         | 
| 55 55 |  | 
| @@ -71,7 +71,7 @@ module RShade | |
| 71 71 | 
             
                end
         | 
| 72 72 |  | 
| 73 73 | 
             
                def self.default_excluded_path
         | 
| 74 | 
            -
                  [ENV['GEM_PATH'].split(':'), RUBY_VERSION_PATTERN, /internal/].flatten.compact
         | 
| 74 | 
            +
                  [ENV['GEM_PATH'].split(':'), RUBY_VERSION_PATTERN, /internal/, %r{/gems/}].flatten.compact
         | 
| 75 75 | 
             
                end
         | 
| 76 76 | 
             
              end
         | 
| 77 77 | 
             
            end
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            class Object
         | 
| 4 | 
            +
              # rubocop:disable Metrics/MethodLength
         | 
| 4 5 | 
             
              def reveal(method_name = nil, **opts, &block)
         | 
| 5 6 | 
             
                if method_name
         | 
| 6 7 | 
             
                  @__cache_rshade_reveal ||= {}
         | 
| @@ -8,6 +9,7 @@ class Object | |
| 8 9 | 
             
                  @__cache_rshade_reveal[method_name] = config
         | 
| 9 10 | 
             
                  instance_eval do
         | 
| 10 11 | 
             
                    def method_added(name)
         | 
| 12 | 
            +
                      super
         | 
| 11 13 | 
             
                      return unless @__cache_rshade_reveal[name]
         | 
| 12 14 |  | 
| 13 15 | 
             
                      if @__reveal_rewrite
         | 
| @@ -34,4 +36,5 @@ class Object | |
| 34 36 | 
             
                  trace.show
         | 
| 35 37 | 
             
                end
         | 
| 36 38 | 
             
              end
         | 
| 39 | 
            +
              # rubocop:enable Metrics/MethodLength
         | 
| 37 40 | 
             
            end
         | 
    
        data/lib/rshade/event.rb
    CHANGED
    
    | @@ -22,7 +22,7 @@ module RShade | |
| 22 22 | 
             
                  self
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 | 
            -
                def  | 
| 25 | 
            +
                def return_value!(return_value)
         | 
| 26 26 | 
             
                  @hash[:return_value] = return_value
         | 
| 27 27 | 
             
                  self
         | 
| 28 28 | 
             
                end
         | 
| @@ -46,7 +46,7 @@ module RShade | |
| 46 46 | 
             
                    vars[var_name] = hash
         | 
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 | 
            -
                  hash = { path: evt.path, lineno: evt.lineno, klass: evt.defined_class, method_name: evt.method_id, vars | 
| 49 | 
            +
                  hash = { path: evt.path, lineno: evt.lineno, klass: evt.defined_class, method_name: evt.method_id, vars: vars,
         | 
| 50 50 | 
             
                           event_type: evt.event }
         | 
| 51 51 |  | 
| 52 52 | 
             
                  if RETURN_EVENTS.include?(evt.event)
         | 
| @@ -22,7 +22,7 @@ module RShade | |
| 22 22 | 
             
                # @param [Integer] level
         | 
| 23 23 | 
             
                def leave(event, _level)
         | 
| 24 24 | 
             
                  store.current! do |node|
         | 
| 25 | 
            -
                    node.value. | 
| 25 | 
            +
                    node.value.return_value!(event.return_value)
         | 
| 26 26 | 
             
                        .with_serialized_return!(serializer)
         | 
| 27 27 | 
             
                  end
         | 
| 28 28 | 
             
                rescue StandardError
         | 
    
        data/lib/rshade/event_tree.rb
    CHANGED
    
    | @@ -10,6 +10,7 @@ module RShade | |
| 10 10 | 
             
                  @current = @head = EventTreeNode.new(nil, 0, nil)
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 | 
            +
                # rubocop:disable Metrics/AbcSize
         | 
| 13 14 | 
             
                def add(value, level)
         | 
| 14 15 | 
             
                  if current.level + 1 == level
         | 
| 15 16 | 
             
                    current.children << EventTreeNode.new(value, level, current)
         | 
| @@ -30,6 +31,7 @@ module RShade | |
| 30 31 | 
             
                  @current = current.parent
         | 
| 31 32 | 
             
                  add(value, level)
         | 
| 32 33 | 
             
                end
         | 
| 34 | 
            +
                # rubocop:enable Metrics/AbcSize
         | 
| 33 35 |  | 
| 34 36 | 
             
                def current!(&block)
         | 
| 35 37 | 
             
                  block.call(current.children.last) if current.children.last
         | 
| @@ -50,7 +52,7 @@ module RShade | |
| 50 52 | 
             
                  @level = level
         | 
| 51 53 | 
             
                  @parent = parent
         | 
| 52 54 | 
             
                  @value = value
         | 
| 53 | 
            -
                  @vlevel =  | 
| 55 | 
            +
                  @vlevel = vlevel!(parent)
         | 
| 54 56 | 
             
                end
         | 
| 55 57 |  | 
| 56 58 | 
             
                def each(&block)
         | 
| @@ -60,13 +62,13 @@ module RShade | |
| 60 62 |  | 
| 61 63 | 
             
                private
         | 
| 62 64 |  | 
| 63 | 
            -
                def  | 
| 65 | 
            +
                def vlevel!(node)
         | 
| 64 66 | 
             
                  return 0 if node.nil?
         | 
| 65 67 |  | 
| 66 68 | 
             
                  if node.value || node.level.zero?
         | 
| 67 69 | 
             
                    node.vlevel + 1
         | 
| 68 70 | 
             
                  else
         | 
| 69 | 
            -
                     | 
| 71 | 
            +
                    vlevel!(node.parent)
         | 
| 70 72 | 
             
                  end
         | 
| 71 73 | 
             
                end
         | 
| 72 74 | 
             
              end
         | 
| @@ -7,7 +7,7 @@ module RShade | |
| 7 7 | 
             
                  AND_OP = :and
         | 
| 8 8 | 
             
                  OR_OP = :or
         | 
| 9 9 | 
             
                  UNARY_OP = :unary
         | 
| 10 | 
            -
                  attr_reader :value, :left, :right | 
| 10 | 
            +
                  attr_reader :value, :left, :right
         | 
| 11 11 | 
             
                  attr_accessor :parent
         | 
| 12 12 |  | 
| 13 13 | 
             
                  # @param [#call, Enumerable] left
         | 
| @@ -18,6 +18,7 @@ module RShade | |
| 18 18 | 
             
                    @right = right
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
| 21 | 
            +
                  # rubocop:disable Metrics/CyclomaticComplexity
         | 
| 21 22 | 
             
                  def call(event)
         | 
| 22 23 | 
             
                    case value
         | 
| 23 24 | 
             
                    when UNARY_OP
         | 
| @@ -30,6 +31,7 @@ module RShade | |
| 30 31 | 
             
                      value.call(event)
         | 
| 31 32 | 
             
                    end
         | 
| 32 33 | 
             
                  end
         | 
| 34 | 
            +
                  # rubocop:enable Metrics/CyclomaticComplexity
         | 
| 33 35 |  | 
| 34 36 | 
             
                  def each(&block)
         | 
| 35 37 | 
             
                    yield value unless left && right
         | 
| @@ -38,8 +40,8 @@ module RShade | |
| 38 40 | 
             
                  end
         | 
| 39 41 |  | 
| 40 42 | 
             
                  def config_filter(type, &block)
         | 
| 41 | 
            -
                    filter = find do | | 
| 42 | 
            -
                       | 
| 43 | 
            +
                    filter = find do |f|
         | 
| 44 | 
            +
                      f.is_a? type
         | 
| 43 45 | 
             
                    end
         | 
| 44 46 | 
             
                    filter&.config(&block)
         | 
| 45 47 | 
             
                  end
         | 
| @@ -4,9 +4,13 @@ module RShade | |
| 4 4 | 
             
              module Formatter
         | 
| 5 5 | 
             
                module Stack
         | 
| 6 6 | 
             
                  class String
         | 
| 7 | 
            +
                    attr_reader :colorize
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
                    ROOT_SEP = "---\n"
         | 
| 8 10 |  | 
| 9 | 
            -
                    def initialize( | 
| 11 | 
            +
                    def initialize(colorize: true)
         | 
| 12 | 
            +
                      @colorize = colorize
         | 
| 13 | 
            +
                    end
         | 
| 10 14 |  | 
| 11 15 | 
             
                    # @param [RShade::EventProcessor] stack
         | 
| 12 16 | 
             
                    def call(stack)
         | 
| @@ -23,18 +27,26 @@ module RShade | |
| 23 27 | 
             
                      buffer.string
         | 
| 24 28 | 
             
                    end
         | 
| 25 29 |  | 
| 30 | 
            +
                    private
         | 
| 31 | 
            +
             | 
| 26 32 | 
             
                    # @param [RShade::StackFrame] frame
         | 
| 27 33 | 
             
                    def line(line_idx, frame, depth)
         | 
| 28 | 
            -
                      source_location =  | 
| 34 | 
            +
                      source_location = apply_color("(#{frame.source_location[:path]}:#{frame.source_location[:line]})", :green)
         | 
| 29 35 | 
             
                      var_str = frame.local_vars.map do |_, val|
         | 
| 30 36 | 
             
                        var_name = val[:name]
         | 
| 31 37 | 
             
                        var_value = val[:value]
         | 
| 32 38 | 
             
                        var_type = val[:type]
         | 
| 33 39 | 
             
                        "#{var_type} #{var_name} => (#{var_value})"
         | 
| 34 40 | 
             
                      end.join(', ')
         | 
| 35 | 
            -
                      colorized_var_str =  | 
| 41 | 
            +
                      colorized_var_str = apply_color(var_str, :blue)
         | 
| 36 42 | 
             
                      "#{'  ' * depth}[frame: #{line_idx}]#{source_location} => local vars: (#{colorized_var_str})\n"
         | 
| 37 43 | 
             
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    def apply_color(str, color)
         | 
| 46 | 
            +
                      return str unless colorize
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                      ColorizedString[str].colorize(color)
         | 
| 49 | 
            +
                    end
         | 
| 38 50 | 
             
                  end
         | 
| 39 51 | 
             
                end
         | 
| 40 52 | 
             
              end
         | 
| @@ -13,9 +13,8 @@ module RShade | |
| 13 13 | 
             
                    end
         | 
| 14 14 |  | 
| 15 15 | 
             
                    def flat
         | 
| 16 | 
            -
                      arr =  | 
| 17 | 
            -
             | 
| 18 | 
            -
                        arr << item(node.event)
         | 
| 16 | 
            +
                      arr = event_store.map do |node|
         | 
| 17 | 
            +
                        item(node.event)
         | 
| 19 18 | 
             
                      end
         | 
| 20 19 | 
             
                      arr.sort_by { |item| item[:level] }
         | 
| 21 20 | 
             
                    end
         | 
| @@ -30,9 +29,9 @@ module RShade | |
| 30 29 | 
             
                      sort_hash(hash)
         | 
| 31 30 | 
             
                    end
         | 
| 32 31 |  | 
| 33 | 
            -
                    def sort_hash( | 
| 32 | 
            +
                    def sort_hash(hash)
         | 
| 34 33 | 
             
                      {}.tap do |h2|
         | 
| 35 | 
            -
                         | 
| 34 | 
            +
                        hash.sort.each do |k, v|
         | 
| 36 35 | 
             
                          h2[k] = v.is_a?(Hash) ? sort_hash(v) : v
         | 
| 37 36 | 
             
                        end
         | 
| 38 37 | 
             
                      end
         | 
    
        data/lib/rshade/rspec/rspec.rb
    CHANGED
    
    
| @@ -26,14 +26,9 @@ module RShade | |
| 26 26 | 
             
                      String => ->(value) { value },
         | 
| 27 27 | 
             
                      Hash => lambda do |value|
         | 
| 28 28 | 
             
                        hash = {}
         | 
| 29 | 
            -
                         | 
| 30 | 
            -
                           | 
| 31 | 
            -
                            hash[k] = traverse(v)
         | 
| 32 | 
            -
                          end
         | 
| 33 | 
            -
                        rescue Exception => e
         | 
| 34 | 
            -
                          binding.pry
         | 
| 29 | 
            +
                        value.each do |k, v|
         | 
| 30 | 
            +
                          hash[k] = traverse(v)
         | 
| 35 31 | 
             
                        end
         | 
| 36 | 
            -
             | 
| 37 32 | 
             
                        hash
         | 
| 38 33 | 
             
                      end,
         | 
| 39 34 | 
             
                      Array => lambda do |value|
         | 
    
        data/lib/rshade/stack.rb
    CHANGED
    
    
    
        data/lib/rshade/stack_frame.rb
    CHANGED
    
    | @@ -30,7 +30,7 @@ module RShade | |
| 30 30 | 
             
                    type = value.is_a?(Class) ? value : value.class
         | 
| 31 31 | 
             
                    memo[var_name] = {
         | 
| 32 32 | 
             
                      name: var_name,
         | 
| 33 | 
            -
                      value | 
| 33 | 
            +
                      value: value,
         | 
| 34 34 | 
             
                      type: type.to_s
         | 
| 35 35 | 
             
                    }
         | 
| 36 36 | 
             
                  end
         | 
| @@ -39,11 +39,12 @@ module RShade | |
| 39 39 | 
             
                    type = value.is_a?(Class) ? value : value.class
         | 
| 40 40 | 
             
                    memo[var_name] = {
         | 
| 41 41 | 
             
                      name: var_name,
         | 
| 42 | 
            -
                      value | 
| 42 | 
            +
                      value: value,
         | 
| 43 43 | 
             
                      type: type.to_s
         | 
| 44 44 | 
             
                    }
         | 
| 45 45 | 
             
                  end
         | 
| 46 | 
            -
                  hash = { source_location | 
| 46 | 
            +
                  hash = { source_location: source_location, local_vars: local_vars, source: {},
         | 
| 47 | 
            +
                           receiver_variables: receiver_variables }
         | 
| 47 48 | 
             
                  new(hash)
         | 
| 48 49 | 
             
                end
         | 
| 49 50 |  | 
| @@ -32,12 +32,12 @@ module RShade | |
| 32 32 | 
             
                private
         | 
| 33 33 |  | 
| 34 34 | 
             
                # more info https://rubyapi.org/3.1/o/tracepoint
         | 
| 35 | 
            -
                # @param [TracePoint]  | 
| 36 | 
            -
                def process( | 
| 35 | 
            +
                # @param [TracePoint] trace_point
         | 
| 36 | 
            +
                def process(trace_point)
         | 
| 37 37 | 
             
                  changed
         | 
| 38 | 
            -
                  event = Event.from_trace_point( | 
| 39 | 
            -
                  return notify_observers(event, :enter) if CALL_EVENTS.include?( | 
| 40 | 
            -
                  return notify_observers(event, :leave) if RETURN_EVENTS.include?( | 
| 38 | 
            +
                  event = Event.from_trace_point(trace_point)
         | 
| 39 | 
            +
                  return notify_observers(event, :enter) if CALL_EVENTS.include?(trace_point.event)
         | 
| 40 | 
            +
                  return notify_observers(event, :leave) if RETURN_EVENTS.include?(trace_point.event)
         | 
| 41 41 |  | 
| 42 42 | 
             
                  notify_observers(event, :other)
         | 
| 43 43 | 
             
                end
         | 
    
        data/lib/rshade/version.rb
    CHANGED
    
    
    
        data/rshade.gemspec
    CHANGED
    
    | @@ -25,7 +25,7 @@ Gem::Specification.new do |spec| | |
| 25 25 | 
             
                spec.metadata['changelog_uri'] = 'https://github.com/gingray/rshade/CHANGELOG.md'
         | 
| 26 26 | 
             
              else
         | 
| 27 27 | 
             
                raise 'RubyGems 2.0 or newer is required to protect against ' \
         | 
| 28 | 
            -
             | 
| 28 | 
            +
                      'public gem pushes.'
         | 
| 29 29 | 
             
              end
         | 
| 30 30 |  | 
| 31 31 | 
             
              # Specify which files should be added to the gem when it is released.
         | 
| @@ -36,12 +36,11 @@ Gem::Specification.new do |spec| | |
| 36 36 | 
             
              spec.bindir        = 'exe'
         | 
| 37 37 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 38 38 | 
             
              spec.require_paths = ['lib']
         | 
| 39 | 
            +
              spec.required_ruby_version = '>= 2.7.0'
         | 
| 39 40 |  | 
| 40 | 
            -
              spec. | 
| 41 | 
            -
              spec. | 
| 42 | 
            -
              spec. | 
| 41 | 
            +
              spec.add_dependency 'binding_of_caller'
         | 
| 42 | 
            +
              spec.add_dependency 'colorize'
         | 
| 43 | 
            +
              spec.add_dependency 'prism'
         | 
| 43 44 |  | 
| 44 | 
            -
              spec. | 
| 45 | 
            -
              spec.add_development_dependency 'rake', '>= 12.3.3'
         | 
| 46 | 
            -
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 45 | 
            +
              spec.metadata['rubygems_mfa_required'] = 'true'
         | 
| 47 46 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rshade
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ivan Lopatin
         | 
| @@ -52,48 +52,6 @@ dependencies: | |
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: bundler
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: 2.2.33
         | 
| 62 | 
            -
              type: :development
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - "~>"
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: 2.2.33
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: rake
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - ">="
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 12.3.3
         | 
| 76 | 
            -
              type: :development
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - ">="
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 12.3.3
         | 
| 83 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: rspec
         | 
| 85 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            -
                requirements:
         | 
| 87 | 
            -
                - - "~>"
         | 
| 88 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '3.0'
         | 
| 90 | 
            -
              type: :development
         | 
| 91 | 
            -
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            -
                requirements:
         | 
| 94 | 
            -
                - - "~>"
         | 
| 95 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '3.0'
         | 
| 97 55 | 
             
            description: https://github.com/gingray/rshade
         | 
| 98 56 | 
             
            email:
         | 
| 99 57 | 
             
            - gingray.dev@gmail.com
         | 
| @@ -103,6 +61,7 @@ extra_rdoc_files: [] | |
| 103 61 | 
             
            files:
         | 
| 104 62 | 
             
            - ".gitignore"
         | 
| 105 63 | 
             
            - ".rspec"
         | 
| 64 | 
            +
            - ".rubocop.yml"
         | 
| 106 65 | 
             
            - ".travis.yml"
         | 
| 107 66 | 
             
            - Gemfile
         | 
| 108 67 | 
             
            - Gemfile.lock
         | 
| @@ -137,7 +96,6 @@ files: | |
| 137 96 | 
             
            - lib/rshade/formatter/trace/json.rb
         | 
| 138 97 | 
             
            - lib/rshade/formatter/trace/stdout.rb
         | 
| 139 98 | 
             
            - lib/rshade/formatter/trace/string.rb
         | 
| 140 | 
            -
            - lib/rshade/rails/rails.rb
         | 
| 141 99 | 
             
            - lib/rshade/rspec/rspec.rb
         | 
| 142 100 | 
             
            - lib/rshade/serializer/traversal.rb
         | 
| 143 101 | 
             
            - lib/rshade/stack.rb
         | 
| @@ -156,6 +114,7 @@ metadata: | |
| 156 114 | 
             
              homepage_uri: https://github.com/gingray/rshade
         | 
| 157 115 | 
             
              source_code_uri: https://github.com/gingray/rshade
         | 
| 158 116 | 
             
              changelog_uri: https://github.com/gingray/rshade/CHANGELOG.md
         | 
| 117 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 159 118 | 
             
            post_install_message:
         | 
| 160 119 | 
             
            rdoc_options: []
         | 
| 161 120 | 
             
            require_paths:
         | 
| @@ -164,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 164 123 | 
             
              requirements:
         | 
| 165 124 | 
             
              - - ">="
         | 
| 166 125 | 
             
                - !ruby/object:Gem::Version
         | 
| 167 | 
            -
                  version:  | 
| 126 | 
            +
                  version: 2.7.0
         | 
| 168 127 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 169 128 | 
             
              requirements:
         | 
| 170 129 | 
             
              - - ">="
         | 
    
        data/lib/rshade/rails/rails.rb
    DELETED
    
    | 
            File without changes
         |