pry-state 0.1.4 → 0.1.6

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: 0140187e1248cf48aac29d8488f98ffaf47f7751
4
- data.tar.gz: 710d9174d37fc3c03ed4fe52f406c3d11ea71d1f
3
+ metadata.gz: 520ba178a70a9cab1929c9368b5ce0664b49fc2f
4
+ data.tar.gz: ae440f7fbf8ef7d606d9dff0b165efa0098bd1df
5
5
  SHA512:
6
- metadata.gz: 89da620165a3624c63dd2348ca87f732ef1c3a6a220688b688ab10b2909cede436a10e6f03de981de929400641e3f8647ab85facf1bf4536e5ebed59e7116366
7
- data.tar.gz: f59041400c929d9a8b0430c17c23d90c814145b3fae043871711eaa646be4f0bc3f950fe4c08383722a3ce73a7b1c42cf777d2361fc621e26ace63683eaf8703
6
+ metadata.gz: 48f95903fd105d8fa9fb979f35aa6788ae2c6c8a01a922cc8019c5b207ff6eb37431da9cf06adb9ff23aa254a508869defde467c5bd4ddd349fef4f2b8e36db1
7
+ data.tar.gz: d71c27d2503db830047624a2fe26871b0bbbe23a3e17477cd515631f793442eb7160cbf8e8b64d4bc3c351269f3e804fb6dd7337386cba966b01f3f25a9ea206
data/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # Pry-State
2
2
 
3
+ Why?
4
+ When you are debugging, you care about the state of your program. You want to inspect which value is nil or which array is still empty or something similar. The default pry session doesn't give you all these info. You have to evaluate the variables in the prompt to really see what's going on. It is this problem that this extension of pry is trying to solve.
5
+
3
6
  Pry state is an extension of pry. With pry state you can see the values of the instance and local variables in a pry session.
4
7
 
5
- ![SCREENSHOT] (https://cloud.githubusercontent.com/assets/1620848/8893566/c4a69ea6-33b2-11e5-90e4-d80cd498f135.png)
8
+ ![SCREENSHOT] (https://cloud.githubusercontent.com/assets/1620848/9140567/d57047a4-3d4f-11e5-901e-d508c01c8d52.png)
6
9
 
7
10
  ## Installation
8
11
 
@@ -30,6 +33,11 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
30
33
 
31
34
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
35
 
36
+ ## Roadmap
37
+
38
+ 1. Indicate the CHANGE in value between pry sessions by different color.
39
+ 2. Associate the variables with numbers, and support command to evaluate the variable through these numbers. eg. command 's1' will show the value of first variable and so on.
40
+
33
41
  ## Contributing
34
42
 
35
43
  1. Fork it ( https://github.com/[my-github-username]/pry-state/fork )
data/lib/pry-state.rb CHANGED
@@ -4,5 +4,5 @@ require 'pry-state/hook_action'
4
4
 
5
5
 
6
6
  Pry.hooks.add_hook(:before_session, "pry_state_hook") do |output, binding, pry|
7
- HookAction.new(binding).act
7
+ HookAction.new(binding, pry).act
8
8
  end
@@ -1,66 +1,57 @@
1
+ require 'pry-state/printer'
2
+
1
3
  class HookAction
2
4
  IGNORABLE_LOCAL_VARS = [:__, :_, :_ex_, :_pry_, :_out_, :_in_, :_dir_, :_file_]
3
- IGNORABLE_INSTANCE_VARS = [:@_request, :@_response, :@_routes]
4
5
 
5
- def initialize binding
6
- @binding = binding
7
- @instance_variables = @binding.eval('instance_variables')
8
- @local_variables = @binding.eval('local_variables')
6
+ CONTROLLER_INSTANCE_VARIABLES = [:@_request, :@_response, :@_routes]
7
+ RSPEC_INSTANCE_VARIABLES = [:@__inspect_output, :@__memoized]
8
+ IGNORABLE_INSTANCE_VARS = CONTROLLER_INSTANCE_VARIABLES + RSPEC_INSTANCE_VARIABLES
9
+
10
+ def initialize binding, pry
11
+ @binding, @pry = binding, pry
12
+
9
13
  end
10
14
 
11
15
  def act
12
- (instance_variables - IGNORABLE_INSTANCE_VARS).each do |var|
13
- eval_and_print var, 'green'
16
+ # when using guard, locals :e, :lib, :pry_state_prev get printed.
17
+ # this 'if' cuts them off.
18
+ if @binding.eval("self.class") == Object
19
+ return
20
+ end
21
+
22
+ (binding.eval('instance_variables') - IGNORABLE_INSTANCE_VARS).each do |var|
23
+ eval_and_print var, var_color: 'green'
14
24
  end
15
25
 
16
- (local_variables - IGNORABLE_LOCAL_VARS).each do |var|
17
- eval_and_print var, 'cyan'
26
+ (binding.eval('local_variables') - IGNORABLE_LOCAL_VARS).each do |var|
27
+ eval_and_print var, var_color: 'cyan'
18
28
  end
19
29
  end
20
30
 
21
31
  private
22
- attr_reader :binding, :instance_variables, :local_variables
32
+ attr_reader :binding, :pry
23
33
 
24
- def eval_and_print var, color
25
- var_name_adjusted = var.to_s.ljust(25)
26
- print Pry::Helpers::Text.send(color, truncate(var_name_adjusted, 25) )
34
+ def eval_and_print var, var_color: 'green', value_color: 'white'
27
35
  value = binding.eval(var.to_s)
28
- print_stringified_val_or_nil value
29
- end
30
-
31
- def print_stringified_val_or_nil value
32
- value = stringify_value value
33
- if value.empty?
34
- print Pry::Helpers::Text.red 'nil'
35
- else
36
- print truncate(value, 60)
36
+ if value_changed? var, value
37
+ var_color = "bright_#{var_color}"; value_color = 'bright_yellow'
37
38
  end
38
- print "\n"
39
+ Printer.trunc_and_print var, value, var_color, value_color
40
+ stick_value! var, value # to refer the value in next
39
41
  end
40
42
 
41
- def stringify_value value
42
- if value.class == String
43
- "\"#{value}\""
44
- elsif value.class == Array
45
- "len:#{value.count} #{value}"
46
- else
47
- value.to_s
48
- end
43
+ def value_changed? var, value
44
+ prev_state[var] and prev_state[var] != value
49
45
  end
50
46
 
51
- def truncate text, length
52
- if text.nil? then return end
53
- l = length - "...".chars.to_a.size
54
- (text.chars.to_a.size > length ? text.chars.to_a[0...l].join + "..." : text).to_s
47
+ def stick_value! var, value
48
+ prev_state[var] = value
55
49
  end
56
50
 
57
- # def prev_value var
58
- # prev_binding = binding.eval('@_prev_binding')
59
- # puts binding
60
- # puts prev_binding
61
- # value = prev_binding.eval var.to_s
62
- # print "prev value of #{var} is #{value.to_s.truncate(20)}"
63
- # value
64
- # end
51
+ def prev_state
52
+ # init a hash to store state to be used in next session
53
+ # in finding diff
54
+ pry.config.extra_sticky_locals[:pry_state_prev] ||= {}
55
+ end
65
56
 
66
57
  end
@@ -0,0 +1,36 @@
1
+ module Printer
2
+ extend self
3
+
4
+ def trunc_and_print var, value, var_color, value_color
5
+ var_name_adjusted = var.to_s.ljust(25)
6
+ print Pry::Helpers::Text.send(var_color, truncate(var_name_adjusted, 25) )
7
+ print_stringified_val_or_nil value, value_color
8
+ print "\n"
9
+ end
10
+
11
+ private
12
+ def truncate text, length
13
+ if text.nil? then return end
14
+ l = length - "...".chars.to_a.size
15
+ (text.chars.to_a.size > length ? text.chars.to_a[0...l].join + "..." : text).to_s
16
+ end
17
+
18
+ def print_stringified_val_or_nil value, color
19
+ value = stringify_value value
20
+ if value.empty?
21
+ print Pry::Helpers::Text.red 'nil'
22
+ else
23
+ print Pry::Helpers::Text.send(color, truncate(value, 60) )
24
+ end
25
+ end
26
+
27
+ def stringify_value value
28
+ if value.class == String
29
+ "\"#{value}\""
30
+ elsif value.class == Array
31
+ "len:#{value.count} #{value}"
32
+ else
33
+ value.to_s
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module PryState
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.6'
3
3
  end
data/pry-state.gemspec CHANGED
@@ -20,10 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.9"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency 'rspec', '~> 0'
23
+ spec.add_development_dependency 'rspec', '~> 3.3', '>= 3.3.0'
24
+ spec.add_development_dependency 'rspec-core', '~> 3.3', '>= 3.3.2'
25
+ spec.add_development_dependency 'pry-nav', '~> 0.2.4'
26
+ spec.add_development_dependency 'guard', '~> 2.13', '>= 2.13.0'
27
+ spec.add_development_dependency 'guard-rspec', '~> 4.6', '>= 4.6.3'
24
28
  spec.add_runtime_dependency 'pry', '>= 0.9.10', '< 0.11.0'
25
- spec.add_development_dependency "pry-nav", '~> 0'
26
- spec.add_development_dependency "guard", '~> 0'
27
- spec.add_development_dependency "guard-rspec", '~> 0'
28
29
 
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-state
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sudhagar
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-02 00:00:00.000000000 Z
11
+ date: 2015-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,76 +44,114 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.3'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.3.0
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
- version: '0'
57
+ version: '3.3'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.3.0
55
61
  - !ruby/object:Gem::Dependency
56
- name: pry
62
+ name: rspec-core
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ">="
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 0.9.10
62
- - - "<"
67
+ version: '3.3'
68
+ - - ">="
63
69
  - !ruby/object:Gem::Version
64
- version: 0.11.0
65
- type: :runtime
70
+ version: 3.3.2
71
+ type: :development
66
72
  prerelease: false
67
73
  version_requirements: !ruby/object:Gem::Requirement
68
74
  requirements:
69
- - - ">="
75
+ - - "~>"
70
76
  - !ruby/object:Gem::Version
71
- version: 0.9.10
72
- - - "<"
77
+ version: '3.3'
78
+ - - ">="
73
79
  - !ruby/object:Gem::Version
74
- version: 0.11.0
80
+ version: 3.3.2
75
81
  - !ruby/object:Gem::Dependency
76
82
  name: pry-nav
77
83
  requirement: !ruby/object:Gem::Requirement
78
84
  requirements:
79
85
  - - "~>"
80
86
  - !ruby/object:Gem::Version
81
- version: '0'
87
+ version: 0.2.4
82
88
  type: :development
83
89
  prerelease: false
84
90
  version_requirements: !ruby/object:Gem::Requirement
85
91
  requirements:
86
92
  - - "~>"
87
93
  - !ruby/object:Gem::Version
88
- version: '0'
94
+ version: 0.2.4
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: guard
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
99
  - - "~>"
94
100
  - !ruby/object:Gem::Version
95
- version: '0'
101
+ version: '2.13'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.13.0
96
105
  type: :development
97
106
  prerelease: false
98
107
  version_requirements: !ruby/object:Gem::Requirement
99
108
  requirements:
100
109
  - - "~>"
101
110
  - !ruby/object:Gem::Version
102
- version: '0'
111
+ version: '2.13'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 2.13.0
103
115
  - !ruby/object:Gem::Dependency
104
116
  name: guard-rspec
105
117
  requirement: !ruby/object:Gem::Requirement
106
118
  requirements:
107
119
  - - "~>"
108
120
  - !ruby/object:Gem::Version
109
- version: '0'
121
+ version: '4.6'
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 4.6.3
110
125
  type: :development
111
126
  prerelease: false
112
127
  version_requirements: !ruby/object:Gem::Requirement
113
128
  requirements:
114
129
  - - "~>"
115
130
  - !ruby/object:Gem::Version
116
- version: '0'
131
+ version: '4.6'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 4.6.3
135
+ - !ruby/object:Gem::Dependency
136
+ name: pry
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 0.9.10
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.11.0
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 0.9.10
152
+ - - "<"
153
+ - !ruby/object:Gem::Version
154
+ version: 0.11.0
117
155
  description: Pry state lets you to see the values of the instance and local variables
118
156
  in a pry session
119
157
  email:
@@ -134,6 +172,7 @@ files:
134
172
  - bin/setup
135
173
  - lib/pry-state.rb
136
174
  - lib/pry-state/hook_action.rb
175
+ - lib/pry-state/printer.rb
137
176
  - lib/pry-state/version.rb
138
177
  - pry-state.gemspec
139
178
  homepage: https://github.com/SudhagarS/pry-state