hash_out 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/hash_out.gemspec +2 -2
- data/lib/hash_out/version.rb +1 -1
- data/lib/hash_out.rb +17 -2
- data/spec/lib/integration_spec.rb +22 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09d4acf8885e3018d89507399d889841f5b67e34
|
4
|
+
data.tar.gz: 180a33b85d8abd7cfc25b333d9649bd1c0465cb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c7021e5425cefeef649cf02d1e4e291098ecb6636838f55b416a6eb74a1f4fb464108ef9d5b6d410e6b5e6fe37da6ec15159d042f1ff7d219f50383b3b1731c
|
7
|
+
data.tar.gz: cd0abe87615671b457852adaf3a68b7138f4e9526d8d0d3a85f102a86665c60a2d2e92c9c29d25ad21a515386e58e477dd03c60bfa97d28eb2d0018d5ef3d84a
|
data/README.md
CHANGED
@@ -21,7 +21,10 @@ $ gem install hash_out
|
|
21
21
|
3. If desired, exclude methods from `#hash_out` by adding `exclude_from_hash_out` to them.
|
22
22
|
4. Call `#hash_out` on the instance to return a hash of method names and their values.
|
23
23
|
|
24
|
-
|
24
|
+
##### `#hash_out` automatically excludes the following from the hash it returns:
|
25
|
+
1. private methods
|
26
|
+
2. methods that require arguments
|
27
|
+
3. instance methods in classes that include `HashOut` that wrap or otherwise call `#hash_out`
|
25
28
|
|
26
29
|
```ruby
|
27
30
|
require 'hash_out'
|
data/hash_out.gemspec
CHANGED
@@ -5,8 +5,8 @@ require 'hash_out/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'hash_out'
|
8
|
-
s.description = 'Easily convert
|
9
|
-
s.summary = "hash_out adds
|
8
|
+
s.description = 'Easily convert objects to hashes.'
|
9
|
+
s.summary = "hash_out adds the #hash_out method to your class' instance. It returns a hash of public method names and values."
|
10
10
|
s.authors = ['Dave Jachimiak']
|
11
11
|
s.email = 'dave.jachimiak@gmail.com'
|
12
12
|
s.homepage = 'http://github.com/davejachimiak/hash_out'
|
data/lib/hash_out/version.rb
CHANGED
data/lib/hash_out.rb
CHANGED
@@ -2,8 +2,15 @@ module HashOut
|
|
2
2
|
require 'set'
|
3
3
|
|
4
4
|
def hash_out
|
5
|
-
|
6
|
-
|
5
|
+
caller_method = caller_method_sym caller.first
|
6
|
+
|
7
|
+
handle_recursion(caller_method) do
|
8
|
+
if @called == 1
|
9
|
+
set_hash_out
|
10
|
+
delete_exclusions
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
7
14
|
@hash_out
|
8
15
|
end
|
9
16
|
|
@@ -16,6 +23,14 @@ module HashOut
|
|
16
23
|
|
17
24
|
private
|
18
25
|
|
26
|
+
def handle_recursion hash_out_caller
|
27
|
+
@called ||= 0
|
28
|
+
@called += 1
|
29
|
+
exclusions.add hash_out_caller
|
30
|
+
yield
|
31
|
+
@called = 0
|
32
|
+
end
|
33
|
+
|
19
34
|
def set_hash_out
|
20
35
|
@hash_out = Hash[interesting_methods_and_values]
|
21
36
|
end
|
@@ -83,6 +83,7 @@ describe 'HashOut#hash_out' do
|
|
83
83
|
|
84
84
|
def clean materials
|
85
85
|
clean_with materials
|
86
|
+
@cleaned = true
|
86
87
|
end
|
87
88
|
|
88
89
|
def blade edge=:sharp
|
@@ -96,7 +97,8 @@ describe 'HashOut#hash_out' do
|
|
96
97
|
yield self
|
97
98
|
end
|
98
99
|
|
99
|
-
def clean_with
|
100
|
+
def clean_with materials
|
101
|
+
#
|
100
102
|
end
|
101
103
|
end
|
102
104
|
|
@@ -106,4 +108,23 @@ describe 'HashOut#hash_out' do
|
|
106
108
|
|
107
109
|
expect(grinder.hash_out).to_equal hash_out
|
108
110
|
end
|
111
|
+
|
112
|
+
class SoMeta
|
113
|
+
include HashOut
|
114
|
+
|
115
|
+
def an_method
|
116
|
+
:result
|
117
|
+
end
|
118
|
+
|
119
|
+
def attributes
|
120
|
+
hash_out
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
it "ignores internal public method that calls #hash_out" do
|
125
|
+
so_meta = SoMeta.new
|
126
|
+
hash_out = { an_method: :result }
|
127
|
+
|
128
|
+
expect(so_meta.attributes).to_equal hash_out
|
129
|
+
end
|
109
130
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash_out
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Jachimiak
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.1'
|
41
|
-
description: Easily convert
|
41
|
+
description: Easily convert objects to hashes.
|
42
42
|
email: dave.jachimiak@gmail.com
|
43
43
|
executables: []
|
44
44
|
extensions: []
|
@@ -77,7 +77,7 @@ rubyforge_project:
|
|
77
77
|
rubygems_version: 2.0.2
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
|
-
summary: hash_out adds
|
81
|
-
method names and values.
|
80
|
+
summary: 'hash_out adds the #hash_out method to your class'' instance. It returns
|
81
|
+
a hash of public method names and values.'
|
82
82
|
test_files:
|
83
83
|
- spec/lib/integration_spec.rb
|