pry-doc 0.13.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
File without changes
Binary file
Binary file
@@ -2,6 +2,40 @@ require_relative "show_source_with_c_internals"
2
2
 
3
3
  class Pry
4
4
  module MethodInfo
5
+ # @return [Regexp] a pattern that matches `method_instance.inspect`
6
+ METHOD_INSPECT_PATTERN =
7
+ # Ruby 2.7 changed how #inspect for methods looks like. It attaches param
8
+ # list and source location now. We use 2 Regexps: one is for 2.7+ and the
9
+ # other one is for older Rubies. This way we can modify both of them
10
+ # without the risk of breaking.
11
+ #
12
+ # See: https://bugs.ruby-lang.org/issues/14145
13
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.7.0")
14
+ %r{\A
15
+ \#<
16
+ (?:Unbound)?Method:\s
17
+ (.+) # Method owner such as "BigDecimal"
18
+ ([\#\.].+?) # Method signature such as ".finite?" or "#finite?"
19
+ \(.*\) # Param list
20
+ (?:
21
+ \s/.+\.rb:\d+ # Source location
22
+ )?
23
+ .* # Sometimes there's gibberish like "<main>:0", we ignore that
24
+ >
25
+ \z}x
26
+ else
27
+ %r{\A
28
+ \#<
29
+ (?:Unbound)?Method:\s
30
+ (.+) # Method owner such as "BigDecimal"
31
+ ([\#\.].+?) # Method signature such as ".finite?" or "#finite?"
32
+ (?:
33
+ \(.*\) # Param list
34
+ )?
35
+ >
36
+ \z}x
37
+ end
38
+
5
39
  class << self
6
40
  ##
7
41
  # Retrieve the YARD object that contains the method data.
@@ -52,7 +86,7 @@ class Pry
52
86
  # to figure out a better way to distinguish between class methods and
53
87
  # instance methods.
54
88
  def receiver_notation_for(meth)
55
- match = meth.inspect.match(/\A#<(?:Unbound)?Method: (.+)([#\.].+?)(?:\(.+\))?>\z/)
89
+ match = meth.inspect.match(METHOD_INSPECT_PATTERN)
56
90
  owner = meth.owner.to_s.sub(/#<.+?:(.+?)>/, '\1')
57
91
  name = match[2]
58
92
  name.sub!('#', '.') if match[1] =~ /\A#<Class:/
@@ -115,7 +149,7 @@ class Pry
115
149
  host_source_location, _ = WrappedModule.new(host).source_location
116
150
  break if host_source_location != nil
117
151
  return unless host.name
118
- host = eval(host.namespace_name)
152
+ host = eval(namespace_name(host))
119
153
  end while host
120
154
 
121
155
  # We want to exclude all source_locations that aren't gems (i.e
@@ -186,6 +220,12 @@ class Pry
186
220
  YARD.parse(file)
187
221
  end
188
222
  end
223
+
224
+ private
225
+
226
+ def namespace_name(host)
227
+ host.name.split("::")[0..-2].join("::")
228
+ end
189
229
  end
190
230
  end
191
231
  end
@@ -17,7 +17,7 @@ module Pry::CInternals
17
17
  attr_accessor :file_name
18
18
  attr_reader :ruby_source_folder
19
19
 
20
- def initialize(file_name:, content:, ruby_source_folder: nil)
20
+ def initialize(file_name: nil, content: nil, ruby_source_folder: nil)
21
21
  @ruby_source_folder = ruby_source_folder
22
22
  @content = content
23
23
  @file_name = file_name
@@ -44,7 +44,7 @@ module Pry::CInternals
44
44
  end
45
45
 
46
46
  def full_path_for(file_name)
47
- if Pry::Platform.windows?
47
+ if windows?
48
48
  # windows etags already has the path expanded, wtf
49
49
  file_name
50
50
  else
@@ -52,6 +52,14 @@ module Pry::CInternals
52
52
  end
53
53
  end
54
54
 
55
+ def windows?
56
+ if Gem::Version.new(Pry::VERSION) < Gem::Version.new("0.12.0")
57
+ Pry::Platform.windows?
58
+ else
59
+ Pry::Helpers::Platform.windows?
60
+ end
61
+ end
62
+
55
63
  def symbol_type_for(symbol)
56
64
  if symbol =~ /#\s*define/
57
65
  :macro
@@ -25,18 +25,34 @@ module Pry::CInternals
25
25
  private
26
26
 
27
27
  def set_platform_specific_commands
28
- if Pry::Platform.windows?
28
+ if windows?
29
29
  self.curl_cmd = "curl -k --fail -L -O https://github.com/ruby/ruby/archive/v#{ruby_version}.zip " +
30
30
  "& 7z -y x v#{ruby_version}.zip"
31
31
  self.etag_binary = File.join(PryDoc.root, "libexec/windows/etags")
32
32
  self.etag_cmd = %{dir /b /s *.c *.h *.y | "#{etag_binary}" - --no-members}
33
33
  else
34
34
  self.curl_cmd = "curl --fail -L https://github.com/ruby/ruby/archive/v#{ruby_version}.tar.gz | tar xzvf - 2> /dev/null"
35
- self.etag_binary = Pry::Platform.linux? ? File.join(PryDoc.root, "libexec/linux/etags-#{arch}") : "etags"
35
+ self.etag_binary = linux? ? File.join(PryDoc.root, "libexec/linux/etags-#{arch}") : "etags"
36
36
  self.etag_cmd = "find . -type f -name '*.[chy]' | #{etag_binary} - --no-members"
37
37
  end
38
38
  end
39
39
 
40
+ def windows?
41
+ if Gem::Version.new(Pry::VERSION) < Gem::Version.new("0.12.0")
42
+ Pry::Platform.windows?
43
+ else
44
+ Pry::Helpers::Platform.windows?
45
+ end
46
+ end
47
+
48
+ def linux?
49
+ if Gem::Version.new(Pry::VERSION) < Gem::Version.new("0.12.0")
50
+ Pry::Platform.linux?
51
+ else
52
+ Pry::Helpers::Platform.linux?
53
+ end
54
+ end
55
+
40
56
  def ask_for_install
41
57
  print "Identifier not found - do you want to install CRuby sources to attempt to resolve the identifier there?" +
42
58
  "\nThis allows the lookup of C internals Y/N "
@@ -17,21 +17,21 @@ module Pry::CInternals
17
17
  end
18
18
  if result
19
19
  set_file_and_dir_locals(file)
20
- _pry_.pager.page result
20
+ pry_instance.pager.page result
21
21
  else
22
22
  raise Pry::CommandError, no_definition_message
23
23
  end
24
24
  end
25
25
 
26
26
  def process
27
- if opts.present?(:c) && !_pry_.config.skip_cruby_source
27
+ if opts.present?(:c) && !pry_instance.config.skip_cruby_source
28
28
  show_c_source
29
29
  return
30
30
  else
31
31
  super
32
32
  end
33
33
  rescue Pry::CommandError
34
- raise if _pry_.config.skip_cruby_source
34
+ raise if pry_instance.config.skip_cruby_source
35
35
  show_c_source
36
36
  end
37
37
 
@@ -1,3 +1,3 @@
1
1
  module PryDoc
2
- VERSION = '0.13.4'
2
+ VERSION = '1.2.0'.freeze
3
3
  end
data/pry-doc.gemspec CHANGED
@@ -24,7 +24,7 @@ DESCR
24
24
 
25
25
  s.add_dependency 'yard', "~> 0.9.11"
26
26
  s.add_dependency 'pry', "~> 0.11"
27
- s.add_development_dependency 'latest_ruby', '~> 0.0'
27
+ s.add_development_dependency 'latest_ruby', '~> 3.0'
28
28
  s.add_development_dependency 'rspec', '~> 3.5'
29
29
  s.add_development_dependency 'rake', "~> 10.0"
30
30
  end
data/spec/pry-doc_spec.rb CHANGED
@@ -239,14 +239,14 @@ EOF
239
239
 
240
240
  it 'should look up core (C) class method (by Method object)' do
241
241
  obj = Module.module_eval do
242
- Pry::MethodInfo.info_for(Dir.method(:glob))
242
+ Pry::MethodInfo.info_for(Dir.method(:mkdir))
243
243
  end
244
244
  expect(obj.source).not_to be_nil
245
245
  end
246
246
 
247
247
  it 'should look up core (C) class method (by UnboundMethod object)' do
248
248
  obj = Module.module_eval do
249
- Pry::MethodInfo.info_for(class << Dir; instance_method(:glob); end)
249
+ Pry::MethodInfo.info_for(class << Dir; instance_method(:mkdir); end)
250
250
  end
251
251
  expect(obj.source).not_to be_nil
252
252
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mair (banisterfiend)
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-10 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.0'
47
+ version: '3.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.0'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -92,8 +92,8 @@ executables: []
92
92
  extensions: []
93
93
  extra_rdoc_files: []
94
94
  files:
95
+ - ".circleci/config.yml"
95
96
  - ".gitignore"
96
- - ".travis.yml"
97
97
  - ".yardopts"
98
98
  - CHANGELOG.md
99
99
  - Gemfile
@@ -127,6 +127,21 @@ files:
127
127
  - lib/pry-doc/docs/25/object_types
128
128
  - lib/pry-doc/docs/25/objects/root.dat
129
129
  - lib/pry-doc/docs/25/proxy_types
130
+ - lib/pry-doc/docs/26/checksums
131
+ - lib/pry-doc/docs/26/complete
132
+ - lib/pry-doc/docs/26/object_types
133
+ - lib/pry-doc/docs/26/objects/root.dat
134
+ - lib/pry-doc/docs/26/proxy_types
135
+ - lib/pry-doc/docs/27/checksums
136
+ - lib/pry-doc/docs/27/complete
137
+ - lib/pry-doc/docs/27/object_types
138
+ - lib/pry-doc/docs/27/objects/root.dat
139
+ - lib/pry-doc/docs/27/proxy_types
140
+ - lib/pry-doc/docs/30/checksums
141
+ - lib/pry-doc/docs/30/complete
142
+ - lib/pry-doc/docs/30/object_types
143
+ - lib/pry-doc/docs/30/objects/root.dat
144
+ - lib/pry-doc/docs/30/proxy_types
130
145
  - lib/pry-doc/pry_ext/method_info.rb
131
146
  - lib/pry-doc/pry_ext/show_source_with_c_internals.rb
132
147
  - lib/pry-doc/pry_ext/show_source_with_c_internals/c_file.rb
@@ -152,7 +167,7 @@ homepage: https://github.com/pry/pry-doc
152
167
  licenses:
153
168
  - MIT
154
169
  metadata: {}
155
- post_install_message:
170
+ post_install_message:
156
171
  rdoc_options: []
157
172
  require_paths:
158
173
  - lib
@@ -167,9 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
182
  - !ruby/object:Gem::Version
168
183
  version: '0'
169
184
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.6.14
172
- signing_key:
185
+ rubygems_version: 3.2.15
186
+ signing_key:
173
187
  specification_version: 4
174
188
  summary: Provides YARD and extended documentation support for Pry
175
189
  test_files: []
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- before_install:
2
- - gem update --system
3
- - gem update bundler
4
-
5
- rvm:
6
- - 2.0.0
7
- - 2.1.10
8
- - 2.2.9
9
- - 2.3.6
10
- - 2.4.3
11
- - 2.5.0
12
-
13
- script:
14
- - bundle exec rake spec
15
-
16
- sudo: false
17
-
18
- cache: bundler
19
-
20
- matrix:
21
- allow_failures:
22
- - rvm: ruby-head
23
-
24
- branches:
25
- only:
26
- - master