puts_debuggerer 0.8.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ module Kernel
2
+ def pd_inspect
3
+ pd self, printer: false, pd_inspect: true
4
+ end
5
+ alias pdi pd_inspect
6
+ end
@@ -0,0 +1,109 @@
1
+ module PutsDebuggerer
2
+ module RunDeterminer
3
+ OBJECT_RUN_AT = {}
4
+
5
+ class << self
6
+ attr_reader :run_at_global_number
7
+
8
+ def run_at_global_number=(value)
9
+ @run_at_global_number = value
10
+ end
11
+
12
+ def init_run_at_global_number
13
+ @run_at_global_number = 1
14
+ end
15
+
16
+ def increment_run_at_global_number
17
+ @run_at_global_number += 1
18
+ end
19
+
20
+ def reset_run_at_global_number
21
+ @run_at_global_number = nil
22
+ end
23
+
24
+ def run_at_number(object, run_at)
25
+ OBJECT_RUN_AT[[object,run_at]]
26
+ end
27
+
28
+ def init_run_at_number(object, run_at)
29
+ OBJECT_RUN_AT[[object,run_at]] = 1
30
+ end
31
+
32
+ def increment_run_at_number(object, run_at)
33
+ OBJECT_RUN_AT[[object,run_at]] += 1
34
+ end
35
+
36
+ def reset_run_at_number(object, run_at)
37
+ OBJECT_RUN_AT.delete([object, run_at])
38
+ end
39
+
40
+ def reset_run_at_numbers
41
+ OBJECT_RUN_AT.clear
42
+ end
43
+
44
+ def run_number(object, run_at)
45
+ run_at_global_number || run_at_number(object, run_at)
46
+ end
47
+
48
+ def run_pd?(object, run_at)
49
+ run_pd = false
50
+ if run_at.nil?
51
+ run_pd = true
52
+ else
53
+ run_number = determine_run_number(object, run_at)
54
+ run_pd = determine_run_pd(run_at, run_number)
55
+ end
56
+ run_pd
57
+ end
58
+
59
+ def determine_run_number(object, run_at)
60
+ if PutsDebuggerer.run_at? # check if global option is set
61
+ determine_global_run_number
62
+ else
63
+ determine_local_run_number(object, run_at)
64
+ end
65
+ end
66
+
67
+ def determine_global_run_number
68
+ if PutsDebuggerer::RunDeterminer.run_at_global_number.nil?
69
+ PutsDebuggerer::RunDeterminer.init_run_at_global_number
70
+ else
71
+ PutsDebuggerer::RunDeterminer.increment_run_at_global_number
72
+ end
73
+ PutsDebuggerer::RunDeterminer.run_at_global_number
74
+ end
75
+
76
+ def determine_local_run_number(object, run_at)
77
+ if PutsDebuggerer::RunDeterminer.run_at_number(object, run_at).nil?
78
+ PutsDebuggerer::RunDeterminer.init_run_at_number(object, run_at)
79
+ else
80
+ PutsDebuggerer::RunDeterminer.increment_run_at_number(object, run_at)
81
+ end
82
+ PutsDebuggerer::RunDeterminer.run_at_number(object, run_at)
83
+ end
84
+
85
+ def determine_run_pd(run_at, run_number)
86
+ if run_at.is_a?(Integer)
87
+ determine_run_pd_integer(run_at, run_number)
88
+ elsif run_at.is_a?(Array)
89
+ determine_run_pd_array(run_at, run_number)
90
+ elsif run_at.is_a?(Range)
91
+ determine_run_pd_range(run_at, run_number)
92
+ end
93
+ end
94
+
95
+ def determine_run_pd_integer(run_at, run_number)
96
+ run_pd = true if run_at == run_number
97
+ end
98
+
99
+ def determine_run_pd_array(run_at, run_number)
100
+ run_pd = true if run_at.include?(run_number)
101
+ end
102
+
103
+ def determine_run_pd_range(run_at, run_number)
104
+ run_pd = true if run_at.cover?(run_number) || (run_at.end == -1 && run_number >= run_at.begin)
105
+ end
106
+
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,31 @@
1
+ module PutsDebuggerer
2
+ class SourceFile
3
+ def initialize(file_path)
4
+ @file = File.new(file_path)
5
+ end
6
+
7
+ def source(source_line_count, source_line_number)
8
+ @source = ''
9
+ # For Opal Ruby compatibility, skip source lines if file does not respond to readline (as in Opal)
10
+ lines = source_lines(source_line_count, source_line_number)
11
+ @source = lines.join(' '*5) if @file.respond_to?(:readline)
12
+ @source
13
+ end
14
+
15
+ def source_lines(source_line_count, source_line_number)
16
+ lines = []
17
+ begin
18
+ while @file.lineno < source_line_number + source_line_count
19
+ file_line_number = @file.lineno + 1
20
+ file_line = @file.readline
21
+ if file_line_number >= source_line_number && file_line_number < source_line_number + source_line_count
22
+ lines << file_line
23
+ end
24
+ end
25
+ rescue EOFError
26
+ # Done
27
+ end
28
+ lines
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puts_debuggerer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-25 00:00:00.000000000 Z
11
+ date: 2020-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -67,86 +67,129 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.12'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: jeweler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: 2.3.9
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
- version: '1.0'
82
+ version: 2.3.9
83
83
  - !ruby/object:Gem::Dependency
84
- name: jeweler
84
+ name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.3.0
89
+ version: 2.1.4
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 2.3.0
96
+ version: 2.1.4
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: coveralls
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.8.5
103
+ version: 0.8.23
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.8.5
110
+ version: 0.8.23
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.10.0
117
+ version: 0.16.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.16.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov-lcov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.7.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.10.0
138
+ version: 0.7.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: undercover
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.3.4
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.3.4
153
+ - !ruby/object:Gem::Dependency
154
+ name: logging
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 2.3.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 2.3.0
125
167
  description: |
126
- Yes, many of us avoid debuggers like the plague and clamp on to our puts statements like an umbrella in a stormy day. Why not make it official and have puts debugging become its own perfectly legitimate thing?!!
127
-
128
- Enter puts_debuggerer. A guilt-free puts debugger Ruby gem FTW!
129
-
130
- In other words, puts_debuggerer is a Ruby library for improved puts debugging, automatically displaying bonus useful information such as source line number and source code.
131
-
132
- Partially inspired (only partially ;) by this blog post:
133
- https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer.html
134
- (Credit to Tenderlove.)
168
+ Debuggers are great! They help us troubleshoot complicated programming problems by inspecting values produced by code, line by line. They are invaluable when trying to understand what is going on in a large application composed of thousands or millions of lines of code.
169
+ In day-to-day test-driven development and simple debugging though, a puts statement can be a lot quicker in revealing what is going on than halting execution completely just to inspect a single value or a few. This is certainly true when writing the simplest possible code that could possibly work, and running a test every few seconds or minutes. Problem is you need to locate puts statements in large output logs, know which methods were invoked, find out what variable names are being printed, and see nicely formatted output. Enter puts_debuggerer. A guilt-free puts debugging Ruby gem FTW that prints file names, line numbers, code statements, and formats output nicely courtesy of awesome_print.
170
+ Partially inspired by this blog post: https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer.html (Credit to Tenderlove.)
135
171
  email: andy.am@gmail.com
136
172
  executables: []
137
173
  extensions: []
138
174
  extra_rdoc_files:
175
+ - CHANGELOG.md
139
176
  - LICENSE.txt
140
177
  - README.md
141
178
  files:
179
+ - CHANGELOG.md
142
180
  - LICENSE.txt
143
181
  - README.md
182
+ - VERSION
183
+ - lib/pd.rb
144
184
  - lib/puts_debuggerer.rb
185
+ - lib/puts_debuggerer/core_ext/kernel.rb
186
+ - lib/puts_debuggerer/run_determiner.rb
187
+ - lib/puts_debuggerer/source_file.rb
145
188
  homepage: http://github.com/AndyObtiva/puts_debuggerer
146
189
  licenses:
147
190
  - MIT
148
191
  metadata: {}
149
- post_install_message:
192
+ post_install_message:
150
193
  rdoc_options: []
151
194
  require_paths:
152
195
  - lib
@@ -161,9 +204,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
204
  - !ruby/object:Gem::Version
162
205
  version: '0'
163
206
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.6.10
166
- signing_key:
207
+ rubygems_version: 3.1.4
208
+ signing_key:
167
209
  specification_version: 4
168
210
  summary: Ruby library for improved puts debugging, automatically displaying bonus
169
211
  useful information such as source line number and source code.