hash_out 0.1.1 → 0.1.2
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/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
|