methodz 0.1.6 → 0.1.7
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 +4 -4
- data/lib/methodz/core.rb +31 -33
- data/lib/methodz/version.rb +1 -1
- data/methodz.gemspec +36 -0
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 30bf0f5355916570ae7628e076a2065414a443500b353396b36afc36fdd01df6
|
|
4
|
+
data.tar.gz: 15aa82a8abc9118063b3466d1f67fa0890a90cade6adcccf6580685054b56c7c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 84822ea016cf898c9f479789934339a7e8160f2dd144e2b34a9bf04daf379874f3069c362b00cdbdb6a99d0f499e6255c697531ff7f6354b72766d751b221d8a
|
|
7
|
+
data.tar.gz: 8d2e80bb9d118f5f839c1a919d859ea20851c2e653deb90128400aedfe6fd99355004e692419548388d40895b72f91fd14675b78a6e477a319f29daeef9a4f82
|
data/lib/methodz/core.rb
CHANGED
|
@@ -1,45 +1,43 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return list if opts.empty?
|
|
3
|
+
class Object
|
|
4
|
+
def methodz(opts = {})
|
|
5
|
+
list = public_methods + private_methods + protected_methods - Object.methods
|
|
6
|
+
return list if opts.empty?
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
# simple usage, ex: user.methodz('stripe')
|
|
9
|
+
opts = { q: opts } if opts.instance_of?(String)
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
# query by keyword in definition
|
|
12
|
+
list = list.filter { |m| m.to_s.include?(opts[:q] || '') }
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
# query specific types, ex: user.methodz('stripe', type: 'private')
|
|
15
|
+
if opts[:type] && !%w[all].include?(opts[:type])
|
|
16
|
+
list = list.filter { |m| send("#{opts[:type]}_methods").include?(m) }
|
|
17
|
+
end
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
# remove ActiveModel::Dirty helpers, ex: will_save_change_to_{query}
|
|
20
|
+
dirty_attrz.each { |da| list = list.filter { |m| !m.to_s.include?(da.to_s) } }
|
|
21
|
+
list = list.filter { |_| dirty_attrz.any? { |da| !da.to_s.include?(opts[:q] || '') } }
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
# remove getter/setter attributes (seeking user-defined methods, not activerecord given)
|
|
24
|
+
attrz.each { |a| list = list.filter { |m| !m.to_s.include?(a.to_s) } }
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
list
|
|
27
|
+
end
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
def attrz
|
|
30
|
+
return [] unless respond_to?(:attributes)
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
attributes.keys.map(&:to_sym)
|
|
33
|
+
end
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
35
|
+
# https://api.rubyonrails.org/classes/ActiveModel/Dirty.html
|
|
36
|
+
def dirty_attrz
|
|
37
|
+
%i[
|
|
38
|
+
restore_ will_save_change_to _change_to_be_saved _for_database
|
|
39
|
+
_before_last_save _in_database _change _was _id? _previously_was
|
|
40
|
+
_before_last_save_was _came_from_ _before_type_cast _changed?
|
|
41
|
+
]
|
|
44
42
|
end
|
|
45
|
-
end
|
|
43
|
+
end
|
data/lib/methodz/version.rb
CHANGED
data/methodz.gemspec
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/methodz/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "methodz"
|
|
7
|
+
spec.version = Methodz::VERSION
|
|
8
|
+
spec.authors = ["Ryan Kulp"]
|
|
9
|
+
spec.email = ["ryanckulp@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Lookup object methods by partial name match or type."
|
|
12
|
+
spec.homepage = "https://github.com/ryanckulp/methodz"
|
|
13
|
+
spec.license = "MIT"
|
|
14
|
+
spec.required_ruby_version = ">= 2.6.0"
|
|
15
|
+
|
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
17
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
|
18
|
+
|
|
19
|
+
# Specify which files should be added to the gem when it is released.
|
|
20
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
21
|
+
spec.files = Dir.chdir(__dir__) do
|
|
22
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
23
|
+
(File.expand_path(f) == __FILE__) ||
|
|
24
|
+
f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
spec.bindir = "exe"
|
|
28
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
29
|
+
spec.require_paths = ["lib"]
|
|
30
|
+
|
|
31
|
+
# Uncomment to register a new dependency of your gem
|
|
32
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
|
33
|
+
|
|
34
|
+
# For more information and examples about making a new gem, check out our
|
|
35
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
|
36
|
+
end
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: methodz
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Kulp
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
11
|
date: 2023-12-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
|
-
description:
|
|
13
|
+
description:
|
|
14
14
|
email:
|
|
15
15
|
- ryanckulp@gmail.com
|
|
16
16
|
executables: []
|
|
@@ -25,6 +25,7 @@ files:
|
|
|
25
25
|
- lib/methodz/core.rb
|
|
26
26
|
- lib/methodz/error.rb
|
|
27
27
|
- lib/methodz/version.rb
|
|
28
|
+
- methodz.gemspec
|
|
28
29
|
- sig/methodz.rbs
|
|
29
30
|
homepage: https://github.com/ryanckulp/methodz
|
|
30
31
|
licenses:
|
|
@@ -32,7 +33,7 @@ licenses:
|
|
|
32
33
|
metadata:
|
|
33
34
|
homepage_uri: https://github.com/ryanckulp/methodz
|
|
34
35
|
source_code_uri: https://github.com/ryanckulp/methodz
|
|
35
|
-
post_install_message:
|
|
36
|
+
post_install_message:
|
|
36
37
|
rdoc_options: []
|
|
37
38
|
require_paths:
|
|
38
39
|
- lib
|
|
@@ -47,8 +48,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
47
48
|
- !ruby/object:Gem::Version
|
|
48
49
|
version: '0'
|
|
49
50
|
requirements: []
|
|
50
|
-
rubygems_version: 3.
|
|
51
|
-
signing_key:
|
|
51
|
+
rubygems_version: 3.0.1
|
|
52
|
+
signing_key:
|
|
52
53
|
specification_version: 4
|
|
53
54
|
summary: Lookup object methods by partial name match or type.
|
|
54
55
|
test_files: []
|