nested_ostruct 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7fc845a4179005cf5dad00ff8a6213a5db89fa5a
4
+ data.tar.gz: 74df1fbd3276445bc19257629ca94b5f93454761
5
+ SHA512:
6
+ metadata.gz: 09f4be98b3bec2913bdfce4d6bed4cdcea4b861c20d80be0276b08da45acb39123703251389cfba7f72eb42e9da22de11463c4f176c1652b6c7242f85c2fb033
7
+ data.tar.gz: e7282222fa845f9f204b1d5cdbb72d7bab9d5b86c85234c9fd228168dc239f41a6761a32cac006ae4e26cce0c49413a334eea3d51d119a5018984aba9b27be64
@@ -0,0 +1,25 @@
1
+ # -*- ruby -*-
2
+
3
+ require "autotest/restart"
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.testlib = "minitest/unit"
7
+ #
8
+ # at.extra_files << "../some/external/dependency.rb"
9
+ #
10
+ # at.libs << ":../some/external"
11
+ #
12
+ # at.add_exception "vendor"
13
+ #
14
+ # at.add_mapping(/dependency.rb/) do |f, _|
15
+ # at.files_matching(/test_.*rb$/)
16
+ # end
17
+ #
18
+ # %w(TestA TestB).each do |klass|
19
+ # at.extra_class_map[klass] = "test/test_misc.rb"
20
+ # end
21
+ # end
22
+
23
+ # Autotest.add_hook :run_command do |at|
24
+ # system "rake build"
25
+ # end
@@ -0,0 +1,54 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+
38
+ ## Environment normalization:
39
+ /.bundle/
40
+ /vendor/bundle
41
+ /lib/bundler/man/
42
+
43
+ # for a library or gem, you might want to ignore these files since the code is
44
+ # intended to run in multiple environments; otherwise, check them in:
45
+ Gemfile.lock
46
+ .ruby-version
47
+ .ruby-gemset
48
+
49
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
+ .rvmrc
51
+
52
+ .DS_Store
53
+ *.swp
54
+ *.swo
@@ -0,0 +1,9 @@
1
+ .git/*
2
+
3
+ *.swp
4
+ .*.swp
5
+ **/*.swp
6
+ **/.*.swp
7
+
8
+ .DS_Store
9
+ **/.DS_Store
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ # -*- ruby -*-
2
+
3
+ # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
4
+
5
+ source "https://rubygems.org/"
6
+
7
+
8
+ gem "minitest", "~>5.10", :group => [:development, :test]
9
+ gem "hoe-yard", ">=0.1.3", :group => [:development, :test]
10
+ gem "hoe-ignore", "~>1.0", :group => [:development, :test]
11
+ gem "hoe-bundler", "~>1.2", :group => [:development, :test]
12
+ gem "hoe-gemspec", "~>1.0", :group => [:development, :test]
13
+ gem "hoe-git", "~>1.6", :group => [:development, :test]
14
+ gem "yard", "~>0.8", :group => [:development, :test]
15
+ gem "redcarpet", "~>3.3", :group => [:development, :test]
16
+ gem "hoe", "~>3.16", :group => [:development, :test]
17
+
18
+ # vim: syntax=ruby
@@ -0,0 +1,6 @@
1
+ === 0.0.1 / 2017-06-19
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
@@ -0,0 +1,12 @@
1
+ .autotest
2
+ .gitignore
3
+ .hoeignore
4
+ Gemfile
5
+ History.txt
6
+ Manifest.txt
7
+ README.md
8
+ Rakefile
9
+ bin/nested_ostruct
10
+ lib/nested_ostruct.rb
11
+ lib/nested_ostruct/version.rb
12
+ test/test_nested_ostruct.rb
@@ -0,0 +1,43 @@
1
+ # NestedOstruct
2
+
3
+ Convert nested OpenStruct to Hash
4
+
5
+ Repo: https://github.com/awesome/nested_ostruct
6
+
7
+ ## Usage
8
+
9
+ ```
10
+ require 'nested_ostruct'
11
+
12
+ hash = NestedOstruct.to_hash(ostruct)
13
+ ```
14
+
15
+ ## Installation
16
+
17
+ Command Line
18
+
19
+ ```
20
+ gem install nested_ostruct
21
+ ```
22
+
23
+ Gemfile
24
+
25
+ ```
26
+ gem 'nested_ostruct'
27
+ ```
28
+
29
+ ## Requirements
30
+
31
+ Ruby 1.9+
32
+
33
+ ## License
34
+
35
+ MIT License
36
+
37
+ Copyright (c) 2017 SoAwesomeMan
38
+
39
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
40
+
41
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
42
+
43
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,57 @@
1
+ # -*- ruby -*-
2
+
3
+ require "rubygems"
4
+ require "hoe"
5
+ require './lib/nested_ostruct/version.rb'
6
+
7
+ Hoe.plugin :gemspec
8
+ Hoe.plugin :minitest
9
+ Hoe.plugin :yard
10
+ Hoe.plugin :bundler
11
+ Hoe.plugin :git
12
+ Hoe.plugin :ignore
13
+
14
+ Hoe.spec "nested_ostruct" do
15
+ developer("So Awesome Man", "callme@1800AWESO.ME")
16
+
17
+ license "MIT" # this matches the license in the README file
18
+
19
+ self.email = 'callme@1800AWESO.ME'
20
+
21
+ self.name = 'nested_ostruct'
22
+ self.version = NestedOstruct::VERSION
23
+ self.summary = 'Convert nested OpenStruct to Hash'
24
+ self.description = self.summary
25
+ self.urls = ['https://github.com/awesome/nested_ostruct']
26
+ self.testlib = :minitest
27
+ self.readme_file = 'README.md'
28
+ self.history_file = 'History.txt'
29
+
30
+ # third-party
31
+ self.yard_title = self.name
32
+ self.yard_markup = 'markdown'
33
+
34
+ self.extra_dev_deps += [
35
+ ["hoe-yard", "~> 0.1"],
36
+ ["hoe-ignore", "~> 1.0"],
37
+ ["hoe-bundler", "~> 1.2"],
38
+ ["hoe-gemspec", "~> 1.0"],
39
+ ["hoe-git", "~> 1.6"],
40
+ ["minitest", "~> 5.9"],
41
+ ["yard", "~> 0.8"],
42
+ ["redcarpet", "~> 3.3"] # yard/markdown
43
+ ]
44
+
45
+ self.clean_globs += [
46
+ '.yardoc',
47
+ 'vendor',
48
+ 'Gemfile.lock',
49
+ '.bundle',
50
+ ]
51
+
52
+ self.spec_extras = {
53
+ :required_ruby_version => '>= 1.9.2'
54
+ }
55
+ end
56
+
57
+ # vim: syntax=ruby
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ abort "you need to write me"
@@ -0,0 +1,31 @@
1
+ require 'ostruct'
2
+
3
+ module NestedOstruct
4
+ extend self
5
+
6
+ def to_hash(object)
7
+ object = object.to_h if object.is_a?(OpenStruct)
8
+
9
+ case object.class.to_s
10
+ when /Hash/
11
+ object.each do |key, value|
12
+ if [Hash, Array, OpenStruct].include?(value.class)
13
+ object[key] = to_hash(value)
14
+ else
15
+ object[key] = value
16
+ end
17
+ end
18
+
19
+ when /Array/
20
+ object.each_with_index do |value, i|
21
+ if [Hash, Array, OpenStruct].include?(value.class)
22
+ object[i] = to_hash(value)
23
+ else
24
+ object[i] = value
25
+ end
26
+ end
27
+ end
28
+
29
+ object
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module NestedOstruct
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,42 @@
1
+ gem "minitest"
2
+ require "minitest/autorun"
3
+ require "nested_ostruct"
4
+
5
+ class TestNestedOstruct < Minitest::Test
6
+ def test_sanity
7
+ skip "write tests or Zen Spider will kneecap you"
8
+ end
9
+
10
+ def test_call_to_hash
11
+ hash_in_array = [{:totally => 'awesome!'}]
12
+
13
+ nest_2 = OpenStruct.new
14
+ nest_2.three = 'awesome'
15
+ nest_2.four = 'rad'
16
+ nest_2.array = [5,[6,7,[8,9]]]
17
+
18
+ nest_1 = OpenStruct.new
19
+ nest_1.one = 'awesome'
20
+ nest_1.two = 'rad'
21
+ nest_1.array = hash_in_array
22
+ nest_1.hash = nest_2
23
+
24
+ obj = OpenStruct.new
25
+ obj.array = [1,2,3,4]
26
+ obj.hash = nest_1
27
+ obj.name = :rick_hunter
28
+
29
+ act = NestedOstruct.to_hash(obj)
30
+ exp = Hash
31
+ assert_kind_of exp, act
32
+
33
+ exp = {:array =>[1, 2, 3, 4],
34
+ :hash =>
35
+ {:one => "awesome",
36
+ :two => "rad",
37
+ :array => [{:totally => "awesome!"}],
38
+ :hash => {:three => "awesome", :four => "rad", :array => [5, [6, 7, [8, 9]]]}},
39
+ :name => :rick_hunter}
40
+ assert_equal exp, act
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nested_ostruct
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - So Awesome Man
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hoe-yard
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: hoe-ignore
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hoe-bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hoe-gemspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: hoe-git
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.6'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.6'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.8'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.8'
111
+ - !ruby/object:Gem::Dependency
112
+ name: redcarpet
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: hoe
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.16'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.16'
139
+ description: Convert nested OpenStruct to Hash
140
+ email: callme@1800AWESO.ME
141
+ executables:
142
+ - nested_ostruct
143
+ extensions: []
144
+ extra_rdoc_files:
145
+ - History.txt
146
+ - Manifest.txt
147
+ - README.md
148
+ files:
149
+ - ".autotest"
150
+ - ".gitignore"
151
+ - ".hoeignore"
152
+ - Gemfile
153
+ - History.txt
154
+ - Manifest.txt
155
+ - README.md
156
+ - Rakefile
157
+ - bin/nested_ostruct
158
+ - lib/nested_ostruct.rb
159
+ - lib/nested_ostruct/version.rb
160
+ - test/test_nested_ostruct.rb
161
+ homepage: https://github.com/awesome/nested_ostruct
162
+ licenses:
163
+ - MIT
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options:
167
+ - "--title"
168
+ - nested_ostruct
169
+ - "--markup"
170
+ - markdown
171
+ - "--quiet"
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: 1.9.2
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ requirements: []
185
+ rubyforge_project:
186
+ rubygems_version: 2.2.5
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Convert nested OpenStruct to Hash
190
+ test_files: []