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 +4 -4
- data/Rakefile +1 -0
- data/lib/pry-doc/pry_ext/show_source_with_c_internals.rb +14 -14
- data/lib/pry-doc/pry_ext/show_source_with_c_internals/c_file.rb +31 -12
- data/lib/pry-doc/pry_ext/show_source_with_c_internals/code_fetcher.rb +47 -36
- data/lib/pry-doc/pry_ext/show_source_with_c_internals/symbol_extractor.rb +23 -27
- data/lib/pry-doc/version.rb +1 -1
- data/pry-doc.gemspec +1 -1
- data/spec/pry-doc_spec.rb +24 -12
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc2cce15654d5274eafc32d64f55017731f9c886
|
4
|
+
data.tar.gz: ab085546cca4977bd51a7d4be0c80804cd12af9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b0811fb74814d2f15f0c0ef562231ef7690eb889e1bcd9aff49babb8238eb6ee2fbd6f358149937194baf3c45bfdce6d05ba3e716322925a483e681a565700d
|
7
|
+
data.tar.gz: 6f21469f06a59961638c6db297b3fe2dc14a055946d18751a2c93423221acfb88bd4721dbbcd87a875086ba7d47a95b4a330110640b3a51dadeefb34d82a91f4
|
data/Rakefile
CHANGED
@@ -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
|
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)
|
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)
|
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.
|
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.
|
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
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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, :
|
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
|
20
|
-
|
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
|
-
|
27
|
+
@symbols = @lines.each_with_object({}) do |v, h|
|
30
28
|
symbol, line_number = v.split(SYMBOL_SEPARATOR)
|
31
|
-
|
32
|
-
|
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.
|
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
|
-
#
|
14
|
-
|
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
|
-
""
|
31
|
-
|
32
|
-
|
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
|
-
""
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
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.
|
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
|
-
|
96
|
-
|
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
|
-
|
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 "
|
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
|
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{
|
114
|
-
check_for_error(
|
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{
|
120
|
-
check_for_error(
|
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
|
-
|
13
|
+
case info.symbol_type
|
14
|
+
when :macro
|
14
15
|
extract_macro(info)
|
15
|
-
|
16
|
+
when :struct, :enum
|
16
17
|
extract_struct(info)
|
17
|
-
|
18
|
+
when :typedef_struct
|
18
19
|
extract_typedef_struct(info)
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
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
|
-
|
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 =~
|
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,
|
99
|
+
token_count(tokens, '{') == token_count(tokens, '}')
|
90
100
|
end
|
91
101
|
|
92
102
|
def token_count(tokens, token)
|
93
|
-
tokens.count { |v|
|
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
|
-
|
98
|
-
|
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
|
data/lib/pry-doc/version.rb
CHANGED
data/pry-doc.gemspec
CHANGED
@@ -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', "
|
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"
|
data/spec/pry-doc_spec.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 "
|
192
|
+
context "curly brackets on subsequent line" do
|
181
193
|
subject do
|
182
|
-
decolor described_class.new
|
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
|
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.
|
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-
|
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
|
-
-
|
96
|
-
-
|
97
|
-
-
|
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.
|
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
|