ubiquitously 0.0.1.6 → 0.1.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.
Files changed (114) hide show
  1. data/README.markdown +224 -19
  2. data/Rakefile +12 -4
  3. data/bin/u.me +4 -0
  4. data/lib/ubiquitously.rb +56 -7
  5. data/lib/ubiquitously/commands/base.rb +118 -0
  6. data/lib/ubiquitously/commands/post.rb +108 -0
  7. data/lib/ubiquitously/commands/user.rb +111 -0
  8. data/lib/ubiquitously/extensions/callbacks.rb +62 -0
  9. data/lib/ubiquitously/extensions/core.rb +88 -0
  10. data/lib/ubiquitously/extensions/mechanize.rb +35 -0
  11. data/lib/ubiquitously/models/base.rb +18 -0
  12. data/lib/ubiquitously/models/page.rb +28 -0
  13. data/lib/ubiquitously/models/post.rb +66 -0
  14. data/lib/ubiquitously/models/service.rb +1 -0
  15. data/lib/ubiquitously/models/service/account.rb +57 -0
  16. data/lib/ubiquitously/models/service/account/authorizable.rb +58 -0
  17. data/lib/ubiquitously/models/service/account/loggable.rb +50 -0
  18. data/lib/ubiquitously/models/service/account/restful.rb +21 -0
  19. data/lib/ubiquitously/models/service/post.rb +59 -0
  20. data/lib/ubiquitously/models/service/post/loggable.rb +64 -0
  21. data/lib/ubiquitously/models/service/post/ownable.rb +31 -0
  22. data/lib/ubiquitously/models/service/post/postable.rb +73 -0
  23. data/lib/ubiquitously/models/service/post/restful.rb +52 -0
  24. data/lib/ubiquitously/models/user.rb +128 -0
  25. data/lib/ubiquitously/services/blogger_den.rb +68 -0
  26. data/lib/ubiquitously/services/chetzit.rb +37 -0
  27. data/lib/ubiquitously/services/code_project.rb +21 -0
  28. data/lib/ubiquitously/services/delicious.rb +54 -0
  29. data/lib/ubiquitously/services/design_bump.rb +41 -0
  30. data/lib/ubiquitously/services/designgizer.rb +21 -0
  31. data/lib/ubiquitously/services/designr_fix.rb +21 -0
  32. data/lib/ubiquitously/services/digg.rb +151 -0
  33. data/lib/ubiquitously/services/digzign.rb +25 -0
  34. data/lib/ubiquitously/services/diigo.rb +68 -0
  35. data/lib/ubiquitously/services/dzone.rb +132 -0
  36. data/lib/ubiquitously/services/dzone_snippets.rb +39 -0
  37. data/lib/ubiquitously/services/facebook.rb +42 -0
  38. data/lib/ubiquitously/services/faves.rb +81 -0
  39. data/lib/ubiquitously/services/favshare.rb +78 -0
  40. data/lib/ubiquitously/services/flikode.rb +38 -0
  41. data/lib/ubiquitously/services/friendfeed.rb +21 -0
  42. data/lib/ubiquitously/services/gist.rb +52 -0
  43. data/lib/ubiquitously/services/google_buzz.rb +15 -0
  44. data/lib/ubiquitously/services/identica.rb +15 -0
  45. data/lib/ubiquitously/services/jump_tags.rb +21 -0
  46. data/lib/ubiquitously/services/kailoon.rb +27 -0
  47. data/lib/ubiquitously/services/meta_filter.rb +26 -0
  48. data/lib/ubiquitously/services/mixx.rb +94 -0
  49. data/lib/ubiquitously/services/mmo.rb +22 -0
  50. data/lib/ubiquitously/services/mvc_forge.rb +37 -0
  51. data/lib/ubiquitously/services/my_space.rb +25 -0
  52. data/lib/ubiquitously/services/nestdev.rb +36 -0
  53. data/lib/ubiquitously/services/newsvine.rb +76 -0
  54. data/lib/ubiquitously/services/pixel_groovy.rb +22 -0
  55. data/lib/ubiquitously/services/posterous.rb +24 -0
  56. data/lib/ubiquitously/services/programmers_heaven.rb +21 -0
  57. data/lib/ubiquitously/{propeller.rb → services/propeller.rb} +17 -26
  58. data/lib/ubiquitously/services/queness.rb +38 -0
  59. data/lib/ubiquitously/services/reddit.rb +62 -0
  60. data/lib/ubiquitously/services/scribd.rb +21 -0
  61. data/lib/ubiquitously/services/script_and_style.rb +23 -0
  62. data/lib/ubiquitously/services/sharebrain.rb +19 -0
  63. data/lib/ubiquitously/services/shoutwire.rb +34 -0
  64. data/lib/ubiquitously/services/slideshare.rb +70 -0
  65. data/lib/ubiquitously/services/smipple.rb +21 -0
  66. data/lib/ubiquitously/services/snipplr.rb +67 -0
  67. data/lib/ubiquitously/services/snipt.rb +49 -0
  68. data/lib/ubiquitously/services/sphinn.rb +24 -0
  69. data/lib/ubiquitously/services/stumble_upon.rb +67 -0
  70. data/lib/ubiquitously/services/stumpedia.rb +13 -0
  71. data/lib/ubiquitously/services/tumblr.rb +28 -0
  72. data/lib/ubiquitously/services/tweako.rb +53 -0
  73. data/lib/ubiquitously/services/twitter.rb +60 -0
  74. data/lib/ubiquitously/services/web_blend.rb +25 -0
  75. data/lib/ubiquitously/services/webdev5.rb +32 -0
  76. data/lib/ubiquitously/services/who_freelance.rb +21 -0
  77. data/lib/ubiquitously/services/wordtaps.rb +36 -0
  78. data/lib/ubiquitously/services/yahoo_buzz.rb +64 -0
  79. data/lib/ubiquitously/services/youblr.rb +15 -0
  80. data/lib/ubiquitously/services/zabox.rb +22 -0
  81. data/lib/ubiquitously/support/active_record.rb +25 -0
  82. data/lib/ubiquitously/support/storage.rb +71 -0
  83. data/test/config/cookies.yml +111 -0
  84. data/test/config/credentials.yml +7 -0
  85. data/test/config/secrets.yml +33 -0
  86. data/test/config/tokens.yml +30 -0
  87. data/test/meta.html +19 -0
  88. data/test/test_delicious.rb +37 -0
  89. data/test/test_digg.rb +57 -0
  90. data/test/test_dzone.rb +23 -18
  91. data/test/test_facebook.rb +40 -0
  92. data/test/test_faves.rb +18 -20
  93. data/test/test_helper.rb +8 -1
  94. data/test/test_newsvine.rb +3 -3
  95. data/test/test_page.rb +21 -0
  96. data/test/test_post.rb +55 -0
  97. data/test/test_propeller.rb +2 -2
  98. data/test/test_reddit.rb +26 -4
  99. data/test/test_stumble_upon.rb +23 -3
  100. data/test/test_twitter.rb +33 -0
  101. data/test/test_user.rb +22 -0
  102. metadata +199 -24
  103. data/lib/ext.rb +0 -37
  104. data/lib/ubiquitously/base.rb +0 -56
  105. data/lib/ubiquitously/dzone.rb +0 -111
  106. data/lib/ubiquitously/faves.rb +0 -43
  107. data/lib/ubiquitously/mister_wong.rb +0 -11
  108. data/lib/ubiquitously/mixins/resourceful.rb +0 -50
  109. data/lib/ubiquitously/mixx.rb +0 -66
  110. data/lib/ubiquitously/newsvine.rb +0 -54
  111. data/lib/ubiquitously/reddit.rb +0 -46
  112. data/lib/ubiquitously/sphinn.rb +0 -11
  113. data/lib/ubiquitously/stumble_upon.rb +0 -61
  114. data/test/config.yml +0 -18
@@ -2,9 +2,9 @@ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  module Ubiquitously
4
4
  class PropellerTest < ActiveSupport::TestCase
5
- context "Propeller::User" do
5
+ context "Propeller::Account" do
6
6
  setup do
7
- @user = Ubiquitously::Propeller::User.new
7
+ @user = Ubiquitously::Propeller::Account.new
8
8
  end
9
9
 
10
10
  context "login" do
@@ -2,9 +2,10 @@ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  module Ubiquitously
4
4
  class RedditTest < ActiveSupport::TestCase
5
- context "Reddit::User" do
5
+ =begin
6
+ context "Reddit::Account" do
6
7
  setup do
7
- @user = Ubiquitously::Reddit::User.new
8
+ @user = Ubiquitously::Reddit::Account.new
8
9
  end
9
10
 
10
11
  context "login" do
@@ -22,10 +23,31 @@ module Ubiquitously
22
23
  end
23
24
  end
24
25
  end
25
-
26
+ =end
26
27
  context "Reddit::Post" do
27
28
  setup do
28
- @post = Ubiquitously::Reddit::Post.new
29
+ @user = Ubiquitously::User.new(
30
+ :username => "viatropos",
31
+ :cookies_path => "test/cookies.yml"
32
+ )
33
+
34
+ @title = "Using Redis on Heroku"
35
+ @description = "The only javascript framework you'll need. Well, if you need Object Oriented JS, you'll have to do a little initial setup."
36
+ @tags = %w(javascript, frameworks, jquery)
37
+
38
+ @post = Ubiquitously::Post.new(
39
+ :url => "./test/meta.html",
40
+ :title => @title,
41
+ :description => @description,
42
+ :tags => @tags,
43
+ :categories => ["web-design"],
44
+ :user => @user
45
+ )
46
+ end
47
+
48
+ should "create a post" do
49
+ @post.url = "http://jeffkreeftmeijer.com/2010/things-i-learned-from-my-node.js-experiment/"
50
+ assert @post.save(:reddit)
29
51
  end
30
52
  end
31
53
  end
@@ -2,9 +2,9 @@ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  module Ubiquitously
4
4
  class StumbleUponTest < ActiveSupport::TestCase
5
- context "StumbleUpon::User" do
5
+ context "StumbleUpon::Account" do
6
6
  setup do
7
- @user = Ubiquitously::StumbleUpon::User.new
7
+ @user = Ubiquitously::StumbleUpon::Account.new
8
8
  end
9
9
 
10
10
  context "login" do
@@ -25,7 +25,27 @@ module Ubiquitously
25
25
 
26
26
  context "StumbleUpon::Post" do
27
27
  setup do
28
- @post = Ubiquitously::StumbleUpon::Post.new
28
+ @user = Ubiquitously::User.new(
29
+ :username => "viatropos",
30
+ :cookies_path => "test/cookies.yml"
31
+ )
32
+
33
+ @title = "jQuery"
34
+ @description = "The only javascript framework you'll need. Well, if you need Object Oriented JS, you'll have to do a little initial setup."
35
+ @tags = %w(javascript, frameworks, jquery)
36
+
37
+ @post = Ubiquitously::Post.new(
38
+ :url => "./test/meta.html",
39
+ :title => @title,
40
+ :description => @description,
41
+ :tags => @tags,
42
+ :user => @user
43
+ )
44
+ end
45
+
46
+ should "create a post" do
47
+ @post.url = "http://jquery.com"
48
+ assert @post.save(:stumble_upon)
29
49
  end
30
50
  end
31
51
  end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ module Ubiquitously
4
+ class TwitterTest < ActiveSupport::TestCase
5
+ context "Twitter::Account" do
6
+ setup do
7
+ create_user(:storage => "test/config")
8
+ end
9
+ end
10
+
11
+ context "Twitter::Post" do
12
+ setup do
13
+ create_user(:storage => "test/config")
14
+
15
+ @title = "Viatropos"
16
+ @description = "Mechanically logging in"
17
+ @tags = %w(ubiquitous)
18
+
19
+ @post = Ubiquitously::Post.new(
20
+ :url => "./test/meta.html",
21
+ :title => @title,
22
+ :description => @description,
23
+ :tags => @tags,
24
+ :user => @user
25
+ )
26
+ end
27
+
28
+ should "create a post" do
29
+ assert @post.save(:twitter)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ module Ubiquitously
4
+ class UserTest < ActiveSupport::TestCase
5
+
6
+ context "User" do
7
+ setup do
8
+ @user = Ubiquitously::User.new(
9
+ :username => "viatropos",
10
+ :cookies_path => "test/cookies.yml"
11
+ )
12
+ end
13
+
14
+ should "save cookies for user" do
15
+ @user.login(:dzone, :newsvine)
16
+ @user.accounts.each do |account|
17
+ assert_equal true, account.logged_in?
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ubiquitously
3
3
  version: !ruby/object:Gem::Version
4
- hash: 71
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- - 6
11
- version: 0.0.1.6
9
+ - 0
10
+ version: 0.1.0
12
11
  platform: ruby
13
12
  authors:
14
13
  - Lance Pollard
@@ -16,13 +15,27 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-07-31 00:00:00 -07:00
18
+ date: 2010-08-17 00:00:00 -05:00
20
19
  default_executable:
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
- name: activesupport
22
+ name: json
24
23
  prerelease: false
25
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: activesupport
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
26
39
  none: false
27
40
  requirements:
28
41
  - - ">="
@@ -34,11 +47,95 @@ dependencies:
34
47
  - 5
35
48
  version: 2.3.5
36
49
  type: :runtime
37
- version_requirements: *id001
38
- description: Making it easy for you to be everywhere, even if there's no API
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: mechanize
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: highline
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :runtime
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: rack
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :runtime
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: httparty
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ type: :runtime
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: activemodel
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ type: :runtime
120
+ version_requirements: *id007
121
+ - !ruby/object:Gem::Dependency
122
+ name: passport
123
+ prerelease: false
124
+ requirement: &id008 !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ hash: 3
130
+ segments:
131
+ - 0
132
+ version: "0"
133
+ type: :runtime
134
+ version_requirements: *id008
135
+ description: Social Publishing Rubygem
39
136
  email: lancejpollard@gmail.com
40
- executables: []
41
-
137
+ executables:
138
+ - u.me
42
139
  extensions: []
43
140
 
44
141
  extra_rdoc_files: []
@@ -48,28 +145,106 @@ files:
48
145
  - Rakefile
49
146
  - init.rb
50
147
  - MIT-LICENSE
51
- - lib/ext.rb
52
- - lib/ubiquitously/base.rb
53
- - lib/ubiquitously/dzone.rb
54
- - lib/ubiquitously/faves.rb
55
- - lib/ubiquitously/mister_wong.rb
56
- - lib/ubiquitously/mixins/resourceful.rb
57
- - lib/ubiquitously/mixx.rb
58
- - lib/ubiquitously/newsvine.rb
59
- - lib/ubiquitously/propeller.rb
60
- - lib/ubiquitously/reddit.rb
61
- - lib/ubiquitously/sphinn.rb
62
- - lib/ubiquitously/stumble_upon.rb
148
+ - lib/ubiquitously/commands/base.rb
149
+ - lib/ubiquitously/commands/post.rb
150
+ - lib/ubiquitously/commands/user.rb
151
+ - lib/ubiquitously/extensions/callbacks.rb
152
+ - lib/ubiquitously/extensions/core.rb
153
+ - lib/ubiquitously/extensions/mechanize.rb
154
+ - lib/ubiquitously/models/base.rb
155
+ - lib/ubiquitously/models/page.rb
156
+ - lib/ubiquitously/models/post.rb
157
+ - lib/ubiquitously/models/service/account/authorizable.rb
158
+ - lib/ubiquitously/models/service/account/loggable.rb
159
+ - lib/ubiquitously/models/service/account/restful.rb
160
+ - lib/ubiquitously/models/service/account.rb
161
+ - lib/ubiquitously/models/service/post/loggable.rb
162
+ - lib/ubiquitously/models/service/post/ownable.rb
163
+ - lib/ubiquitously/models/service/post/postable.rb
164
+ - lib/ubiquitously/models/service/post/restful.rb
165
+ - lib/ubiquitously/models/service/post.rb
166
+ - lib/ubiquitously/models/service.rb
167
+ - lib/ubiquitously/models/user.rb
168
+ - lib/ubiquitously/services/blogger_den.rb
169
+ - lib/ubiquitously/services/chetzit.rb
170
+ - lib/ubiquitously/services/code_project.rb
171
+ - lib/ubiquitously/services/delicious.rb
172
+ - lib/ubiquitously/services/design_bump.rb
173
+ - lib/ubiquitously/services/designgizer.rb
174
+ - lib/ubiquitously/services/designr_fix.rb
175
+ - lib/ubiquitously/services/digg.rb
176
+ - lib/ubiquitously/services/digzign.rb
177
+ - lib/ubiquitously/services/diigo.rb
178
+ - lib/ubiquitously/services/dzone.rb
179
+ - lib/ubiquitously/services/dzone_snippets.rb
180
+ - lib/ubiquitously/services/facebook.rb
181
+ - lib/ubiquitously/services/faves.rb
182
+ - lib/ubiquitously/services/favshare.rb
183
+ - lib/ubiquitously/services/flikode.rb
184
+ - lib/ubiquitously/services/friendfeed.rb
185
+ - lib/ubiquitously/services/gist.rb
186
+ - lib/ubiquitously/services/google_buzz.rb
187
+ - lib/ubiquitously/services/identica.rb
188
+ - lib/ubiquitously/services/jump_tags.rb
189
+ - lib/ubiquitously/services/kailoon.rb
190
+ - lib/ubiquitously/services/meta_filter.rb
191
+ - lib/ubiquitously/services/mixx.rb
192
+ - lib/ubiquitously/services/mmo.rb
193
+ - lib/ubiquitously/services/mvc_forge.rb
194
+ - lib/ubiquitously/services/my_space.rb
195
+ - lib/ubiquitously/services/nestdev.rb
196
+ - lib/ubiquitously/services/newsvine.rb
197
+ - lib/ubiquitously/services/pixel_groovy.rb
198
+ - lib/ubiquitously/services/posterous.rb
199
+ - lib/ubiquitously/services/programmers_heaven.rb
200
+ - lib/ubiquitously/services/propeller.rb
201
+ - lib/ubiquitously/services/queness.rb
202
+ - lib/ubiquitously/services/reddit.rb
203
+ - lib/ubiquitously/services/scribd.rb
204
+ - lib/ubiquitously/services/script_and_style.rb
205
+ - lib/ubiquitously/services/sharebrain.rb
206
+ - lib/ubiquitously/services/shoutwire.rb
207
+ - lib/ubiquitously/services/slideshare.rb
208
+ - lib/ubiquitously/services/smipple.rb
209
+ - lib/ubiquitously/services/snipplr.rb
210
+ - lib/ubiquitously/services/snipt.rb
211
+ - lib/ubiquitously/services/sphinn.rb
212
+ - lib/ubiquitously/services/stumble_upon.rb
213
+ - lib/ubiquitously/services/stumpedia.rb
214
+ - lib/ubiquitously/services/tumblr.rb
215
+ - lib/ubiquitously/services/tweako.rb
216
+ - lib/ubiquitously/services/twitter.rb
217
+ - lib/ubiquitously/services/web_blend.rb
218
+ - lib/ubiquitously/services/webdev5.rb
219
+ - lib/ubiquitously/services/who_freelance.rb
220
+ - lib/ubiquitously/services/wordtaps.rb
221
+ - lib/ubiquitously/services/yahoo_buzz.rb
222
+ - lib/ubiquitously/services/youblr.rb
223
+ - lib/ubiquitously/services/zabox.rb
224
+ - lib/ubiquitously/support/active_record.rb
225
+ - lib/ubiquitously/support/storage.rb
63
226
  - lib/ubiquitously.rb
64
227
  - rails/init.rb
65
- - test/config.yml
228
+ - test/config/cookies.yml
229
+ - test/config/credentials.yml
230
+ - test/config/secrets.yml
231
+ - test/config/tokens.yml
232
+ - test/meta.html
233
+ - test/test_delicious.rb
234
+ - test/test_digg.rb
66
235
  - test/test_dzone.rb
236
+ - test/test_facebook.rb
67
237
  - test/test_faves.rb
68
238
  - test/test_helper.rb
69
239
  - test/test_newsvine.rb
240
+ - test/test_page.rb
241
+ - test/test_post.rb
70
242
  - test/test_propeller.rb
71
243
  - test/test_reddit.rb
72
244
  - test/test_stumble_upon.rb
245
+ - test/test_twitter.rb
246
+ - test/test_user.rb
247
+ - bin/u.me
73
248
  has_rdoc: true
74
249
  homepage: http://github.com/viatropos/ubiquitously
75
250
  licenses: []
@@ -103,6 +278,6 @@ rubyforge_project: ubiquitously
103
278
  rubygems_version: 1.3.7
104
279
  signing_key:
105
280
  specification_version: 3
106
- summary: "Ubiquitously: Making it easy for you to be everywhere, even if there's no API"
281
+ summary: "Ubiquitously: Social Publishing to everywhere from anywhere, even if there's no API"
107
282
  test_files: []
108
283
 
data/lib/ext.rb DELETED
@@ -1,37 +0,0 @@
1
- class Hash
2
- def recursively_symbolize_keys!
3
- self.symbolize_keys!
4
- self.values.each do |v|
5
- if v.is_a? Hash
6
- v.recursively_symbolize_keys!
7
- elsif v.is_a? Array
8
- v.recursively_symbolize_keys!
9
- end
10
- end
11
- self
12
- end
13
-
14
- def symbolize_keys
15
- inject({}) do |options, (key, value)|
16
- options[(key.to_sym rescue key) || key] = value
17
- options
18
- end
19
- end
20
-
21
- # Destructively convert all keys to symbols.
22
- def symbolize_keys!
23
- self.replace(self.symbolize_keys)
24
- end
25
- end
26
-
27
- class Array
28
- def recursively_symbolize_keys!
29
- self.each do |item|
30
- if item.is_a? Hash
31
- item.recursively_symbolize_keys!
32
- elsif item.is_a? Array
33
- item.recursively_symbolize_keys!
34
- end
35
- end
36
- end
37
- end