pry-doc 0.13.0pre8 → 0.13.0pre9

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
  SHA1:
3
- metadata.gz: 4f18f3949c483ac69e2b6b7786a72b176e9d7212
4
- data.tar.gz: e6a1bbc5787add79d0d3ed0b75aba42f39545136
3
+ metadata.gz: bc2cce15654d5274eafc32d64f55017731f9c886
4
+ data.tar.gz: ab085546cca4977bd51a7d4be0c80804cd12af9c
5
5
  SHA512:
6
- metadata.gz: 870ceb665ca6397cfcdf4995879f44a1f45972f05b3f259651d4f01a22983538c2e138b0dc424a06ab559d64d55b58fdb9ad536ffaed02461955811b79723bc0
7
- data.tar.gz: e0c1d2da207f8a96bfcfceb71f8f243c81873dc13c00d2accc6d00e428b2dc636a26e44b43b70ac95dbc267c9779f370cb263b7ab6d7f67fad8c0c2201ecc3a0
6
+ metadata.gz: 7b0811fb74814d2f15f0c0ef562231ef7690eb889e1bcd9aff49babb8238eb6ee2fbd6f358149937194baf3c45bfdce6d05ba3e716322925a483e681a565700d
7
+ data.tar.gz: 6f21469f06a59961638c6db297b3fe2dc14a055946d18751a2c93423221acfb88bd4721dbbcd87a875086ba7d47a95b4a330110640b3a51dadeefb34d82a91f4
data/Rakefile CHANGED
@@ -2,6 +2,7 @@ require 'rspec/core/rake_task'
2
2
  RSpec::Core::RakeTask.new(:spec)
3
3
 
4
4
  task default: :spec
5
+ task test: :spec
5
6
 
6
7
  dlext = RbConfig::CONFIG['DLEXT']
7
8
  direc = File.dirname(__FILE__)
@@ -4,14 +4,16 @@ module Pry::CInternals
4
4
  class ShowSourceWithCInternals < Pry::Command::ShowSource
5
5
  def options(opt)
6
6
  super(opt)
7
- opt.on :c, "c-source", "Show source of a C symbol in MRI"
7
+ opt.on :c, "c-source", "Show source of a C identifier in MRI (rather than Ruby method of same name)"
8
8
  end
9
9
 
10
10
  def show_c_source
11
11
  if opts.present?(:all)
12
- result, file = CodeFetcher.new(line_number_style).fetch_all_definitions(obj_name)
12
+ result, file = CodeFetcher.new(line_number_style: line_number_style)
13
+ .fetch_all_definitions(obj_name)
13
14
  else
14
- result, file = CodeFetcher.new(line_number_style).fetch_first_definition(obj_name)
15
+ result, file = CodeFetcher.new(line_number_style: line_number_style)
16
+ .fetch_first_definition(obj_name)
15
17
  end
16
18
  if result
17
19
  set_file_and_dir_locals(file)
@@ -22,14 +24,14 @@ module Pry::CInternals
22
24
  end
23
25
 
24
26
  def process
25
- if opts.present?(:c) && !Pry.config.skip_mri_source
27
+ if opts.present?(:c) && !Pry.config.skip_cruby_source
26
28
  show_c_source
27
29
  return
28
30
  else
29
31
  super
30
32
  end
31
33
  rescue Pry::CommandError
32
- raise if Pry.config.skip_mri_source
34
+ raise if Pry.config.skip_cruby_source
33
35
  show_c_source
34
36
  end
35
37
 
@@ -38,15 +40,13 @@ module Pry::CInternals
38
40
  # We can number lines with their actual line numbers
39
41
  # or starting with 1 (base-one)
40
42
  def line_number_style
41
- style = if opts.present?(:'base-one')
42
- :'base-one'
43
- elsif opts.present?(:'line-numbers')
44
- :'line-numbers'
45
- else
46
- nil
47
- end
48
-
49
- { line_number_style: style }
43
+ if opts.present?(:'base-one')
44
+ :'base-one'
45
+ elsif opts.present?(:'line-numbers')
46
+ :'line-numbers'
47
+ else
48
+ nil
49
+ end
50
50
  end
51
51
 
52
52
  Pry::Commands.add_command(ShowSourceWithCInternals)
@@ -9,37 +9,56 @@
9
9
  # Following lines are the symbols followed by line number with char 127 as separator.
10
10
  module Pry::CInternals
11
11
  class CFile
12
- SourceLocation = Struct.new(:file, :line, :original_symbol)
12
+ SourceLocation = Struct.new(:file, :line, :symbol_type)
13
13
 
14
14
  # Used to separate symbol from line number
15
15
  SYMBOL_SEPARATOR = "\x7f"
16
16
 
17
17
  attr_accessor :symbols, :file_name
18
+ attr_reader :ruby_source_folder
18
19
 
19
- def self.from_str(str)
20
- new(str).tap(&:process_symbols)
21
- end
22
-
23
- def initialize(str)
20
+ def initialize(str, ruby_source_folder: nil)
21
+ @ruby_source_folder = ruby_source_folder
24
22
  @lines = str.lines
25
23
  @file_name = @lines.shift.split(",").first
26
24
  end
27
25
 
28
26
  def process_symbols
29
- array = @lines.map do |v|
27
+ @symbols = @lines.each_with_object({}) do |v, h|
30
28
  symbol, line_number = v.split(SYMBOL_SEPARATOR)
31
- [cleanup_symbol(symbol),
32
- [SourceLocation.new(@file_name, cleanup_linenumber(line_number), symbol.strip)]]
29
+ next if symbol.strip =~ /^\w+$/ # these symbols are usually errors in etags
30
+ h[cleanup_symbol(symbol)] = [source_location_for(symbol, line_number)]
33
31
  end
34
-
35
- @symbols = Hash[array]
36
32
  end
37
33
 
38
34
  private
39
35
 
36
+ def source_location_for(symbol, line_number)
37
+ SourceLocation.new(File.join(ruby_source_folder, @file_name),
38
+ cleanup_linenumber(line_number), symbol_type_for(symbol.strip))
39
+ end
40
+
41
+ def symbol_type_for(symbol)
42
+ if symbol.start_with?("#define")
43
+ :macro
44
+ elsif symbol =~ /\bstruct\b/
45
+ :struct
46
+ elsif symbol =~ /\benum\b/
47
+ :enum
48
+ elsif symbol.start_with?("}")
49
+ :typedef_struct
50
+ elsif symbol =~/^typedef.*;$/
51
+ :typedef_oneliner
52
+ elsif symbol =~ /\($/
53
+ :function
54
+ else
55
+ :unknown
56
+ end
57
+ end
58
+
40
59
  def cleanup_symbol(symbol)
41
60
  symbol = symbol.split.last
42
- symbol.chomp("(").chomp("*").chomp(";")
61
+ symbol.gsub(/\W/, '')
43
62
  end
44
63
 
45
64
  def cleanup_linenumber(line_number)
@@ -10,8 +10,15 @@ module Pry::CInternals
10
10
  attr_accessor :ruby_source_folder
11
11
  end
12
12
 
13
- # normalized
14
- def self.ruby_version() RUBY_VERSION.tr(".", "_") end
13
+ # The Ruby version that corresponds to a downloadable release
14
+ # Note that after Ruby 2.1.0 they exclude the patchlevel from the release name
15
+ def self.ruby_version
16
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.1.0")
17
+ RUBY_VERSION.tr(".", "_")
18
+ else
19
+ RUBY_VERSION.tr(".", "_") + "_#{RUBY_PATCHLEVEL}"
20
+ end
21
+ end
15
22
 
16
23
  self.ruby_source_folder = File.join(File.expand_path("~/.pry.d"), "ruby-#{ruby_version}")
17
24
 
@@ -27,13 +34,12 @@ module Pry::CInternals
27
34
  infos = self.class.symbol_map[symbol]
28
35
  return unless infos
29
36
 
30
- "".tap do |result|
31
- infos.count.times do |index|
32
- result << fetch_first_definition(symbol, index).first << "\n"
33
- end
34
-
35
- return [result, full_path_for(infos.first.file)]
37
+ result = ""
38
+ infos.count.times do |index|
39
+ result << fetch_first_definition(symbol, index).first << "\n"
36
40
  end
41
+
42
+ return [result, infos.first.file]
37
43
  end
38
44
 
39
45
  def fetch_first_definition(symbol, index=nil)
@@ -43,33 +49,25 @@ module Pry::CInternals
43
49
  info = infos[index || 0]
44
50
  code = symbol_extractor.extract(info)
45
51
 
46
- "".tap do |result|
47
- result << "\n#{bold('From: ')}#{info.file} @ line #{info.line}:\n"
48
- result << "#{bold('Number of implementations:')} #{infos.count}\n" unless index
49
- result << "#{bold('Number of lines: ')} #{code.lines.count}\n\n"
50
- result << Pry::Code.new(code, start_line_for(info.line), :c).
51
- with_line_numbers(use_line_numbers?).highlighted
52
+ result = ""
53
+ result << "\n#{bold('From: ')}#{info.file} @ line #{info.line}:\n"
54
+ result << "#{bold('Number of implementations:')} #{infos.count}\n" unless index
55
+ result << "#{bold('Number of lines: ')} #{code.lines.count}\n\n"
56
+ result << Pry::Code.new(code, start_line_for(info.line), :c).
57
+ with_line_numbers(use_line_numbers?).highlighted
58
+
59
+ return [result, info.file]
52
60
 
53
- return [result, full_path_for(info.file)]
54
- end
55
61
  end
56
62
 
57
63
  private
58
64
 
59
- def full_path_for(file)
60
- File.join(self.class.ruby_source_folder, file)
61
- end
62
-
63
65
  def use_line_numbers?
64
66
  !!line_number_style
65
67
  end
66
68
 
67
69
  def start_line_for(line)
68
- if line_number_style == :'base-one'
69
- 1
70
- else
71
- line || 1
72
- end
70
+ line_number_style == :'base-one' ? 1 : line || 1
73
71
  end
74
72
 
75
73
  def self.symbol_map
@@ -81,7 +79,7 @@ module Pry::CInternals
81
79
 
82
80
  def self.parse_tagfile
83
81
  @c_files ||= tagfile.split("\f\n")[1..-1].map do |v|
84
- CFile.from_str(v)
82
+ CFile.new(v, ruby_source_folder: ruby_source_folder).tap(&:process_symbols)
85
83
  end
86
84
  end
87
85
 
@@ -92,34 +90,47 @@ module Pry::CInternals
92
90
  @tagfile ||= File.read(tags)
93
91
  end
94
92
 
95
- def self.check_for_error(message)
96
- raise Pry::CommandError, message if $?.to_i != 0
93
+ # @param [String] message Message to display on error
94
+ # @param [&Block] block Optional assertion
95
+ def self.check_for_error(message, &block)
96
+ raise Pry::CommandError, message if $?.to_i != 0 || block && !block.call
97
97
  end
98
98
 
99
99
  def self.ask_for_install
100
- puts "Method/class Not found - do you want to install MRI sources to attempt to resolve the lookup there? (This allows the lookup of C internals) Y/N"
100
+ print "Identifier not found - do you want to install CRuby sources to attempt to resolve the identifier there?\n(This allows the lookup of C internals) Y/N "
101
101
 
102
102
  if $stdin.gets !~ /^y/i
103
- puts "MRI sources not installed. To prevent being asked again, add `Pry.config.skip_mri_source = true` to your ~/.pryrc"
103
+ puts "CRuby sources not installed. To prevent being asked again, add `Pry.config.skip_cruby_source = true` to your ~/.pryrc"
104
104
  raise Pry::CommandError, "No definition found."
105
105
  end
106
106
  end
107
107
 
108
108
  def self.install_and_setup_ruby_source
109
109
  ask_for_install
110
- puts "Downloading and setting up Ruby #{ruby_version} source in attempt to resolve symbol..."
110
+ puts "Downloading and setting up Ruby #{ruby_version} source..."
111
+ download_ruby
112
+ generate_tagfile
113
+ puts "...Finished!"
114
+ end
115
+
116
+ def self.download_ruby
117
+ curl_cmd = "curl --show-error --fail-early --fail -L https://github.com/ruby/ruby/archive/v#{ruby_version}.tar.gz | tar xzvf - 2> /dev/null"
118
+
111
119
  FileUtils.mkdir_p(ruby_source_folder)
112
120
  FileUtils.cd(File.dirname(ruby_source_folder)) do
113
- %x{ curl -L https://github.com/ruby/ruby/archive/v#{ruby_version}.tar.gz | tar xzvf - > /dev/null 2>&1 }
114
- check_for_error("curl")
121
+ %x{ #{curl_cmd} }
122
+ check_for_error(curl_cmd) { Dir.entries(ruby_source_folder).count > 5 }
115
123
  end
124
+ end
125
+
126
+ def self.generate_tagfile
127
+ find_cmd = "find . -type f -name '*.[chy]' | etags - --no-members -o tags"
116
128
 
117
129
  FileUtils.cd(ruby_source_folder) do
118
130
  puts "Generating tagfile!"
119
- %x{ find . -type f -name "*.[chy]" | etags - --no-members -o tags }
120
- check_for_error("find | etags")
131
+ %x{ #{find_cmd} }
132
+ check_for_error(find_cmd) { File.size(File.join(ruby_source_folder, "tags")) > 500 }
121
133
  end
122
- puts "...Finished!"
123
134
  end
124
135
  end
125
136
  end
@@ -10,16 +10,20 @@ module Pry::CInternals
10
10
  end
11
11
 
12
12
  def extract(info)
13
- if info.original_symbol.start_with?("#define")
13
+ case info.symbol_type
14
+ when :macro
14
15
  extract_macro(info)
15
- elsif info.original_symbol =~ /\s+(struct|enum)\s+/
16
+ when :struct, :enum
16
17
  extract_struct(info)
17
- elsif info.original_symbol.start_with?("}")
18
+ when :typedef_struct
18
19
  extract_typedef_struct(info)
19
- elsif info.original_symbol =~/^typedef.*;$/
20
- extract_typedef_oneliner(info)
21
- else
20
+ when :typedef_oneliner
21
+ extract_oneliner(info)
22
+ when :function
22
23
  extract_function(info)
24
+ else
25
+ # if we dont know what it is, just extract out a single line
26
+ extract_oneliner(info)
23
27
  end
24
28
  end
25
29
 
@@ -43,7 +47,7 @@ module Pry::CInternals
43
47
  end
44
48
  end
45
49
 
46
- def extract_typedef_oneliner(info)
50
+ def extract_oneliner(info)
47
51
  source_file = source_from_file(info.file)
48
52
  return source_file[info.line]
49
53
  end
@@ -57,7 +61,13 @@ module Pry::CInternals
57
61
  offset += 1
58
62
  end
59
63
 
60
- offset += 1 if !source_file[info.line].strip.end_with?("{")
64
+ (0..4).each do |v|
65
+ line = source_file[info.line + v]
66
+ if line && line.strip.end_with?("{")
67
+ offset += v
68
+ break
69
+ end
70
+ end
61
71
 
62
72
  extract_code(info, offset: offset, start_line: start_line) do |code|
63
73
  return code if balanced?(code)
@@ -81,35 +91,21 @@ module Pry::CInternals
81
91
  end
82
92
 
83
93
  def function_return_type?(str)
84
- str.strip =~ /[\w\*]$/
94
+ str.strip =~ /\w\s*\*?$/
85
95
  end
86
96
 
87
97
  def balanced?(str)
88
98
  tokens = CodeRay.scan(str, :c).tokens.each_slice(2)
89
- token_count(tokens, /{/) == token_count(tokens, /}/)
99
+ token_count(tokens, '{') == token_count(tokens, '}')
90
100
  end
91
101
 
92
102
  def token_count(tokens, token)
93
- tokens.count { |v| v.first =~ token && v.last == :operator }
103
+ tokens.count { |v| v.first.to_s.include?(token) && v.last == :operator }
94
104
  end
95
105
 
96
106
  def source_from_file(file)
97
- file_cache = self.class.file_cache
98
- if file_cache.key?(file)
99
- file_cache[file]
100
- else
101
- # inject a "\n" as first element to align array index and line number
102
- file_cache[file] = ["\n", *File.read(full_path_for(file)).lines]
103
- end
104
- end
105
-
106
- def full_path_for(file)
107
- File.join(@ruby_source_folder, file)
108
- end
109
-
110
- # normalized
111
- def ruby_version
112
- RUBY_VERSION.tr(".", "_")
107
+ # inject a leading "\n" to align array index and line number
108
+ self.class.file_cache[file] ||= ["\n", *File.read(file).lines]
113
109
  end
114
110
  end
115
111
  end
@@ -1,3 +1,3 @@
1
1
  module PryDoc
2
- VERSION = '0.13.0pre8'
2
+ VERSION = '0.13.0pre9'
3
3
  end
@@ -23,7 +23,7 @@ DESCR
23
23
  s.required_ruby_version = '>= 2.0'
24
24
 
25
25
  s.add_dependency 'yard', "~> 0.9.11"
26
- s.add_dependency 'pry', ">= 0.11.3"
26
+ s.add_dependency 'pry', "~> 0.11.3"
27
27
  s.add_development_dependency 'latest_ruby', '~> 0.0'
28
28
  s.add_development_dependency 'rspec', '~> 3.5'
29
29
  s.add_development_dependency 'rake', "~> 10.0"
@@ -47,8 +47,14 @@ RSpec.describe PryDoc do
47
47
  end
48
48
 
49
49
  describe "#fetch_all_definitions" do
50
+ it "returns both code and file name" do
51
+ file_ = described_class.symbol_map["foo"].first.file
52
+ _, file = described_class.new.fetch_all_definitions("foo")
53
+ expect(file).to eq file_
54
+ end
55
+
50
56
  it "returns the code for all symbols" do
51
- code, = described_class.new(line_number_style: nil).fetch_all_definitions("foo")
57
+ code, = described_class.new.fetch_all_definitions("foo")
52
58
  expect(decolor code).to include <<EOF
53
59
  int
54
60
  foo(void) {
@@ -65,6 +71,12 @@ EOF
65
71
  end
66
72
 
67
73
  describe "#fetch_first_definition" do
74
+ it "returns both code and file name" do
75
+ code, file = described_class.new.fetch_first_definition("wassup")
76
+ expect(decolor code).to include "typedef int wassup;"
77
+ expect(file).to eq File.join(__dir__, "fixtures/c_source/hello.c")
78
+ end
79
+
68
80
  context "with line numbers" do
69
81
  context "normal style (actual line numbers)" do
70
82
  it "displays actual line numbers" do
@@ -94,7 +106,7 @@ EOF
94
106
  end
95
107
 
96
108
  it "returns the code for a function" do
97
- code, = described_class.new(line_number_style: nil).fetch_first_definition("foo")
109
+ code, = described_class.new.fetch_first_definition("foo")
98
110
  expect(decolor code).to include(<<EOF
99
111
  int
100
112
  foo(void) {
@@ -109,7 +121,7 @@ EOF
109
121
  end
110
122
 
111
123
  it "returns the code for an enum" do
112
- code, = described_class.new(line_number_style: nil).fetch_first_definition("bar")
124
+ code, = described_class.new.fetch_first_definition("bar")
113
125
  expect(decolor code).to include <<EOF
114
126
  enum bar {
115
127
  alpha,
@@ -120,19 +132,19 @@ EOF
120
132
  end
121
133
 
122
134
  it "returns the code for a macro" do
123
- code, = described_class.new(line_number_style: nil).fetch_first_definition("baby")
135
+ code, = described_class.new.fetch_first_definition("baby")
124
136
  expect(decolor code).to include('#define baby do {')
125
137
  expect(decolor code).to include('printf("baby");')
126
138
  expect(decolor code).to include('while(0)')
127
139
  end
128
140
 
129
141
  it "returns the code for a typedef" do
130
- code, = described_class.new(line_number_style: nil).fetch_first_definition("wassup")
142
+ code, = described_class.new.fetch_first_definition("wassup")
131
143
  expect(decolor code).to include('typedef int wassup;')
132
144
  end
133
145
 
134
146
  it "returns the code for a struct" do
135
- code, = described_class.new(line_number_style: nil).fetch_first_definition("baz")
147
+ code, = described_class.new.fetch_first_definition("baz")
136
148
  expect(decolor code).to include <<EOF
137
149
  struct baz {
138
150
  int x;
@@ -142,7 +154,7 @@ EOF
142
154
  end
143
155
 
144
156
  it "returns the code for a typedef'd struct" do
145
- code, = described_class.new(line_number_style: nil).fetch_first_definition("cutie_pie")
157
+ code, = described_class.new.fetch_first_definition("cutie_pie")
146
158
  expect(decolor code).to include <<EOF
147
159
  typedef struct {
148
160
  int lovely;
@@ -152,7 +164,7 @@ EOF
152
164
  end
153
165
 
154
166
  it "returns the code for a typedef'd enum" do
155
- code, = described_class.new(line_number_style: nil).fetch_first_definition("baby_enum")
167
+ code, = described_class.new.fetch_first_definition("baby_enum")
156
168
  expect(decolor code).to include <<EOF
157
169
  typedef enum cute_enum_e {
158
170
  lillybing,
@@ -165,7 +177,7 @@ EOF
165
177
  context "function definitions" do
166
178
  context "return type is on same line" do
167
179
  subject do
168
- decolor described_class.new(line_number_style: nil)
180
+ decolor described_class.new
169
181
  .fetch_first_definition("tinkywinky")
170
182
  .first
171
183
  end
@@ -177,9 +189,9 @@ EOF
177
189
  end
178
190
  end
179
191
 
180
- context "curl brackets on subsequent line" do
192
+ context "curly brackets on subsequent line" do
181
193
  subject do
182
- decolor described_class.new(line_number_style: nil)
194
+ decolor described_class.new
183
195
  .fetch_first_definition("lala")
184
196
  .first
185
197
  end
@@ -194,7 +206,7 @@ EOF
194
206
 
195
207
  context "return type on prior line and curly brackets on subsequent" do
196
208
  subject do
197
- decolor described_class.new(line_number_style: nil)
209
+ decolor described_class.new
198
210
  .fetch_first_definition("po")
199
211
  .first
200
212
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0pre8
4
+ version: 0.13.0pre9
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mair (banisterfiend)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-08 00:00:00.000000000 Z
11
+ date: 2018-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.9.11
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.9.11
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.11.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.11.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: latest_ruby
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.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
54
  version: '0.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.0'
83
83
  description: |
@@ -92,9 +92,9 @@ executables: []
92
92
  extensions: []
93
93
  extra_rdoc_files: []
94
94
  files:
95
- - ".gitignore"
96
- - ".travis.yml"
97
- - ".yardopts"
95
+ - .gitignore
96
+ - .travis.yml
97
+ - .yardopts
98
98
  - CHANGELOG.md
99
99
  - Gemfile
100
100
  - LICENSE
@@ -153,17 +153,17 @@ require_paths:
153
153
  - lib
154
154
  required_ruby_version: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - ">="
156
+ - - '>='
157
157
  - !ruby/object:Gem::Version
158
158
  version: '2.0'
159
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  requirements:
161
- - - ">"
161
+ - - '>'
162
162
  - !ruby/object:Gem::Version
163
163
  version: 1.3.1
164
164
  requirements: []
165
165
  rubyforge_project:
166
- rubygems_version: 2.6.11
166
+ rubygems_version: 2.0.14
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: Provides YARD and extended documentation support for Pry