Sha256: 13448a5fe3d22ce2ccb3be8225ea6bc302984320a13dabbaa058686e9ea3d55f

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

require_relative "show_source_with_c_internals/code_fetcher"

module Pry::CInternals
  class ShowSourceWithCInternals < Pry::Command::ShowSource
    def options(opt)
      super(opt)
      opt.on :c, "c-source", "Show source of a C identifier in MRI (rather than Ruby method of same name)"
    end

    def show_c_source
      if opts.present?(:all)
        result, file = CodeFetcher.new(line_number_style: line_number_style)
                         .fetch_all_definitions(obj_name)
      else
        result, file = CodeFetcher.new(line_number_style: line_number_style)
                         .fetch_first_definition(obj_name)
      end
      if result
        set_file_and_dir_locals(file)
        _pry_.pager.page result
      else
        raise Pry::CommandError, no_definition_message
      end
    end

    def process
      if opts.present?(:c) && !Pry.config.skip_cruby_source
        show_c_source
        return
      else
        super
      end
    rescue Pry::CommandError
      raise if Pry.config.skip_cruby_source
      show_c_source
    end

    private

    # We can number lines with their actual line numbers
    # or starting with 1 (base-one)
    def line_number_style
      if opts.present?(:'base-one')
        :'base-one'
      elsif opts.present?(:'line-numbers')
        :'line-numbers'
      else
        nil
      end
    end

    Pry::Commands.add_command(ShowSourceWithCInternals)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pry-doc-0.13.0pre10 lib/pry-doc/pry_ext/show_source_with_c_internals.rb
pry-doc-0.13.0pre9 lib/pry-doc/pry_ext/show_source_with_c_internals.rb