Sha256: 5126377aec930680379be473845c8ad6dea5040d72d6431f0a415de019acd822

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 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 symbol in MRI"
    end

    def show_c_source
      if opts.present?(:all)
        result, file = CodeFetcher.new(line_number_style).fetch_all_definitions(obj_name)
      else
        result, file = CodeFetcher.new(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)
        show_c_source
        return
      else
        super
      end
    rescue Pry::CommandError
      show_c_source
    end

    private

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

      { line_number_style: style }
    end

    Pry::Commands.add_command(ShowSourceWithCInternals)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pry-doc-0.13.0pre7 lib/pry-doc/pry_ext/show_source_with_c_internals.rb
pry-doc-0.13.0pre6 lib/pry-doc/pry_ext/show_source_with_c_internals.rb
pry-doc-0.13.0pre5 lib/pry-doc/pry_ext/show_source_with_c_internals.rb
pry-doc-0.13.0pre4 lib/pry-doc/pry_ext/show_source_with_c_internals.rb