what_methods 1.0.0
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.
- data/CHANGELOG +0 -0
- data/README +3 -0
- data/Rakefile +79 -0
- data/lib/what_methods.rb +79 -0
- data/lib/what_methods/version.rb +9 -0
- data/test/all_tests.rb +1 -0
- data/test/test_helper.rb +2 -0
- metadata +63 -0
data/CHANGELOG
ADDED
File without changes
|
data/README
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/packagetask'
|
5
|
+
require 'rake/gempackagetask'
|
6
|
+
require 'rake/rdoctask'
|
7
|
+
require 'rake/contrib/rubyforgepublisher'
|
8
|
+
require 'fileutils'
|
9
|
+
include FileUtils
|
10
|
+
require File.join(File.dirname(__FILE__), 'lib', 'what_methods', 'version')
|
11
|
+
|
12
|
+
AUTHOR = "you"
|
13
|
+
EMAIL = "your contact email for bug fixes and info"
|
14
|
+
DESCRIPTION = "description of gem"
|
15
|
+
HOMEPATH = 'http://what_methods.rubyforge.org'
|
16
|
+
|
17
|
+
|
18
|
+
NAME = "what_methods"
|
19
|
+
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
20
|
+
VERS = ENV['VERSION'] || (WhatMethod::VERSION::STRING + (REV ? ".#{REV}" : ""))
|
21
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
22
|
+
RDOC_OPTS = ['--quiet', '--title', "what_methods documentation",
|
23
|
+
"--opname", "index.html",
|
24
|
+
"--line-numbers",
|
25
|
+
"--main", "README",
|
26
|
+
"--inline-source"]
|
27
|
+
BIN_FILES = %w( )
|
28
|
+
|
29
|
+
desc "Packages up what_methods gem."
|
30
|
+
task :default => [:test]
|
31
|
+
task :package => [:clean]
|
32
|
+
|
33
|
+
task :test do
|
34
|
+
require File.dirname(__FILE__) + '/test/all_tests.rb'
|
35
|
+
end
|
36
|
+
|
37
|
+
spec =
|
38
|
+
Gem::Specification.new do |s|
|
39
|
+
s.name = NAME
|
40
|
+
s.version = VERS
|
41
|
+
s.platform = Gem::Platform::RUBY
|
42
|
+
s.has_rdoc = true
|
43
|
+
s.extra_rdoc_files = ["README", "CHANGELOG"]
|
44
|
+
s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
|
45
|
+
s.summary = DESCRIPTION
|
46
|
+
s.description = DESCRIPTION
|
47
|
+
s.author = AUTHOR
|
48
|
+
s.email = EMAIL
|
49
|
+
s.homepage = HOMEPATH
|
50
|
+
s.executables = BIN_FILES
|
51
|
+
s.bindir = "bin"
|
52
|
+
s.require_path = "lib"
|
53
|
+
|
54
|
+
#s.add_dependency('activesupport', '>=1.3.1')
|
55
|
+
#s.required_ruby_version = '>= 1.8.2'
|
56
|
+
|
57
|
+
s.files = %w(README CHANGELOG Rakefile) +
|
58
|
+
Dir.glob("{bin,doc,test,lib,templates,extras,website,script}/**/*") +
|
59
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
60
|
+
Dir.glob("examples/**/*.rb") +
|
61
|
+
Dir.glob("tools/*.rb")
|
62
|
+
|
63
|
+
# s.extensions = FileList["ext/**/extconf.rb"].to_a
|
64
|
+
end
|
65
|
+
|
66
|
+
Rake::GemPackageTask.new(spec) do |p|
|
67
|
+
p.need_tar = false
|
68
|
+
p.gem_spec = spec
|
69
|
+
end
|
70
|
+
|
71
|
+
task :install do
|
72
|
+
name = "#{NAME}-#{VERS}.gem"
|
73
|
+
sh %{rake package}
|
74
|
+
sh %{sudo gem install pkg/#{name}}
|
75
|
+
end
|
76
|
+
|
77
|
+
task :uninstall => [:clean] do
|
78
|
+
sh %{sudo gem uninstall #{NAME}}
|
79
|
+
end
|
data/lib/what_methods.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# Some credits:
|
2
|
+
# Code this verions is based on: Andrew Birkett
|
3
|
+
# http://www.nobugs.org/developer/ruby/method_finder.html
|
4
|
+
# Improvements from Why's blog entry
|
5
|
+
# * what? == - Why
|
6
|
+
# * @@blacklist - llasram
|
7
|
+
# * clone alias - Daniel Schierbeck
|
8
|
+
# * $stdout redirect - Why
|
9
|
+
# http://redhanded.hobix.com/inspect/stickItInYourIrbrcMethodfinder.html
|
10
|
+
# Improvements from Nikolas Coukouma
|
11
|
+
# * Varargs and block support
|
12
|
+
# * Improved catching
|
13
|
+
# * Redirecting $stdout and $stderr (independently of Why)
|
14
|
+
# http://atrustheotaku.livejournal.com/339449.html
|
15
|
+
#
|
16
|
+
# A version posted in 2002 by Steven Grady:
|
17
|
+
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/32844
|
18
|
+
# David Tran's versions:
|
19
|
+
# * Simple
|
20
|
+
# http://www.doublegifts.com/pub/ruby/methodfinder.rb.html
|
21
|
+
# * Checks permutations of arguments
|
22
|
+
# http://www.doublegifts.com/pub/ruby/methodfinder2.rb.html
|
23
|
+
#
|
24
|
+
# Last updated: 2006/05/20
|
25
|
+
|
26
|
+
class Object
|
27
|
+
def what?(*a)
|
28
|
+
WhatMethods::MethodFinder.show(self, *a)
|
29
|
+
end
|
30
|
+
alias_method :__clone__, :clone
|
31
|
+
def clone
|
32
|
+
__clone__
|
33
|
+
rescue TypeError
|
34
|
+
self
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class DummyOut
|
39
|
+
def write(*args)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module WhatMethods
|
44
|
+
class MethodFinder
|
45
|
+
@@blacklist = %w(daemonize display exec exit! fork sleep system syscall what?)
|
46
|
+
|
47
|
+
def initialize( obj, *args )
|
48
|
+
@obj = obj
|
49
|
+
@args = args
|
50
|
+
end
|
51
|
+
def ==( val )
|
52
|
+
MethodFinder.show( @obj, val, *@args )
|
53
|
+
end
|
54
|
+
|
55
|
+
# Find all methods on [anObject] which, when called with [args] return [expectedResult]
|
56
|
+
def self.find( anObject, expectedResult, *args, &block )
|
57
|
+
stdout, stderr = $stdout, $stderr
|
58
|
+
$stdout = $stderr = DummyOut.new
|
59
|
+
# change this back to == if you become worried about speed and warnings.
|
60
|
+
res = anObject.methods.
|
61
|
+
select { |name| anObject.method(name).arity <= args.size }.
|
62
|
+
select { |name| not @@blacklist.include? name }.
|
63
|
+
select { |name| begin
|
64
|
+
anObject.clone.method( name ).call( *args, &block ) == expectedResult;
|
65
|
+
rescue Object; end }
|
66
|
+
$stdout, $stderr = stdout, stderr
|
67
|
+
res
|
68
|
+
end
|
69
|
+
|
70
|
+
# Pretty-prints the results of the previous method
|
71
|
+
def self.show( anObject, expectedResult, *args, &block)
|
72
|
+
find( anObject, expectedResult, *args, &block).each { |name|
|
73
|
+
print "#{anObject.inspect}.#{name}"
|
74
|
+
print "(" + args.map { |o| o.inspect }.join(", ") + ")" unless args.empty?
|
75
|
+
puts " == #{expectedResult.inspect}"
|
76
|
+
}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/test/all_tests.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir['**/*_test.rb'].each { |test_case| require test_case }
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.11
|
3
|
+
specification_version: 1
|
4
|
+
name: what_methods
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 1.0.0
|
7
|
+
date: 2006-10-10 00:00:00 +02:00
|
8
|
+
summary: description of gem
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: your contact email for bug fixes and info
|
12
|
+
homepage: http://what_methods.rubyforge.org
|
13
|
+
rubyforge_project:
|
14
|
+
description: description of gem
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
authors:
|
29
|
+
- you
|
30
|
+
files:
|
31
|
+
- README
|
32
|
+
- CHANGELOG
|
33
|
+
- Rakefile
|
34
|
+
- test/all_tests.rb
|
35
|
+
- test/test_helper.rb
|
36
|
+
- lib/what_methods.rb
|
37
|
+
- lib/what_methods
|
38
|
+
- lib/what_methods/version.rb
|
39
|
+
test_files: []
|
40
|
+
|
41
|
+
rdoc_options:
|
42
|
+
- --quiet
|
43
|
+
- --title
|
44
|
+
- what_methods documentation
|
45
|
+
- --opname
|
46
|
+
- index.html
|
47
|
+
- --line-numbers
|
48
|
+
- --main
|
49
|
+
- README
|
50
|
+
- --inline-source
|
51
|
+
- --exclude
|
52
|
+
- ^(examples|extras)/
|
53
|
+
extra_rdoc_files:
|
54
|
+
- README
|
55
|
+
- CHANGELOG
|
56
|
+
executables: []
|
57
|
+
|
58
|
+
extensions: []
|
59
|
+
|
60
|
+
requirements: []
|
61
|
+
|
62
|
+
dependencies: []
|
63
|
+
|