rack_console 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8635759efe0c98de153499de75f6cd6637cbf804
4
- data.tar.gz: 7c003b7f68057c920ae1d966949fd8885463655e
3
+ metadata.gz: 6118a7bb2ae127448272b43fa93fded43d4dee30
4
+ data.tar.gz: 0d2bfcf921120bfb7897e4f609fc384df1b126fa
5
5
  SHA512:
6
- metadata.gz: 7a254fd07d115832dbae6d9c0b64ce0fe609a3325730f747e39d64207933cd96b9904dd0680ae2d25136fcbffe444187b09a5ec87e6c2b5fa5a10e1a1ca3b449
7
- data.tar.gz: 43d74977d408bf5f519ee99e3e1c89b50374398d2fa5c6e2043b3868807f7ea857184cf0122dd931d461324b53577e3f873bf134736967885d18a1d9ca0af8a9
6
+ metadata.gz: da69edcfc2924e8606afa7c761c93b9d1d0a1b08738d8d3b1f35a57c7a279bc843f8995b4a288ef7305191b0465abf82a47ebf8b655aafe20aa3f1d400cae5de
7
+ data.tar.gz: afd218cc0f1f15b503a4d026025a9c880c18043358385564bb6a8d9600960f3a440cd78dc03975503f431e39f766890128467e6e0901d095a1b36e86b1b94f95
@@ -36,6 +36,12 @@ module RackConsole
36
36
  haml :'console/file', locals: locals, layout: layout
37
37
  end
38
38
 
39
+ get "/methods/file/*" do
40
+ prepare_file!
41
+ @methods = methods_within_file(@source_file.file) if @source_file
42
+ haml :'console/methods', locals: locals, layout: layout
43
+ end
44
+
39
45
  get "/css/:path" do | path |
40
46
  halt 404 if path =~ /\.\./
41
47
  content_type 'text/css'
@@ -216,20 +216,21 @@ module RackConsole
216
216
  name_p = match_pred(params[:name], :to_sym)
217
217
  kind_p = match_pred(params[:kind], :to_sym)
218
218
  owner_p = match_pred(params[:owner])
219
+ file_p = match_pred(params[:file])
219
220
 
220
221
  methods = [ ]
221
222
  seen = { }
222
223
  ObjectSpace.each_object(::Module) do | owner |
223
224
  next unless (owner.name rescue nil)
224
225
  next if owner_p && owner_p != owner.name
225
- methods_for_module(owner, name_p, kind_p, seen, methods)
226
+ methods_for_module(owner, name_p, kind_p, file_p, seen, methods)
226
227
  end
227
228
  sort_methods! methods
228
229
  methods
229
230
  end
230
231
 
231
232
  def match_pred value, m = nil
232
- if value != '*' && value != ''
233
+ if value != nil && value != '*' && value != ''
233
234
  value = value.send(m) if m
234
235
  else
235
236
  value = nil
@@ -237,7 +238,7 @@ module RackConsole
237
238
  value
238
239
  end
239
240
 
240
- def methods_for_module owner, name_p = nil, kind_p = nil, seen = { }, to_methods = nil
241
+ def methods_for_module owner, name_p = nil, kind_p = nil, file_p = nil, seen = { }, to_methods = nil
241
242
  methods = to_methods || [ ]
242
243
  kind = :i
243
244
  unless kind_p && kind_p != kind
@@ -245,6 +246,10 @@ module RackConsole
245
246
  next if name_p && name_p != (name = name.to_sym)
246
247
  if meth = (owner.instance_method(name) rescue nil) and key = [ owner, kind, name ] and ! seen[key]
247
248
  seen[key] = true
249
+ if file_p
250
+ f = meth.source_location and f = f.first
251
+ next if f != file_p
252
+ end
248
253
  methods << MockMethod.new(meth, name, kind, owner)
249
254
  end
250
255
  end
@@ -256,6 +261,10 @@ module RackConsole
256
261
  next if name_p && name_p != (name = name.to_sym)
257
262
  if meth = (owner.singleton_method(name) rescue nil) and key = [ owner, kind, name ] and ! seen[key]
258
263
  seen[key] = true
264
+ if file_p
265
+ f = meth.source_location and f = f.first
266
+ next if f != file_p
267
+ end
259
268
  methods << MockMethod.new(meth, name, kind, owner)
260
269
  end
261
270
  end
@@ -279,6 +288,16 @@ module RackConsole
279
288
  owner.singleton_methods(false)
280
289
  end
281
290
 
291
+ def methods_within_file file
292
+ methods = methods_matching(file: file)
293
+ sort_methods_by_source_location! methods
294
+ end
295
+
296
+ def sort_methods_by_source_location! methods
297
+ methods.sort_by!{|x| x.source_location || DUMMY_SOURCE_LOCATION }
298
+ end
299
+ DUMMY_SOURCE_LOCATION = [ "".freeze, 0 ].freeze
300
+
282
301
  class MockMethod
283
302
  attr_accessor :meth, :name, :kind, :owner
284
303
  def initialize *args
@@ -307,6 +326,11 @@ module RackConsole
307
326
  [ file, line && line.to_i ]
308
327
  end
309
328
 
329
+ def source_file_methods_href file
330
+ link = file.sub(%r{^/}, '-')
331
+ link = url_root("/methods/file/#{link}")
332
+ end
333
+
310
334
  def source_file source_location
311
335
  source_location && SourceFile.new(source_location).load!
312
336
  end
@@ -75,6 +75,5 @@ module RackConsole
75
75
  end
76
76
  self
77
77
  end
78
-
79
78
  end
80
79
  end
@@ -5,7 +5,10 @@
5
5
  %dl
6
6
  - if @result_ok
7
7
  %dt File:
8
- %dd.file_name=file_name_tag(h @source_file.file)
8
+ %dd.file_name
9
+ =file_name_tag(h @source_file.file)
10
+ %a{href: source_file_methods_href(@source_file.file)}
11
+ (methods)
9
12
  %dt Source:
10
13
  %dd.source
11
14
  %table.source_listing
@@ -1,6 +1,11 @@
1
1
  .rack_console
2
2
  =haml :'console/server_info', locals: locals
3
3
  .result
4
+ - if @source_file
5
+ %dl
6
+ %dt File:
7
+ %dd.file_name
8
+ =file_name_tag(h @source_file.file)
4
9
  =haml :'console/methods_table', locals: locals.merge(methods: @methods)
5
10
  =haml :'console/error', locals: locals
6
11
 
@@ -1,3 +1,3 @@
1
1
  module RackConsole
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack_console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kurt Stephens