tworgy-ruby 0.4.0 → 0.4.1

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.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "tworgy-ruby"
8
8
  gem.summary = %Q{Handy Ruby extensions}
9
- gem.description = %Q{fdsfsad}
9
+ gem.description = %Q{Handy Ruby extensions}
10
10
  gem.email = "code@tworgy.com"
11
11
  gem.homepage = "http://github.com/matholroyd/tworgy-ruby"
12
12
  gem.authors = ["Mat Holroyd"]
@@ -1,3 +1,5 @@
1
+ require 'ostruct'
2
+
1
3
  class Array
2
4
  def recursively(&block)
3
5
  map do |item|
@@ -12,6 +14,10 @@ class Array
12
14
  def recursively!(&block)
13
15
  replace(recursively(&block))
14
16
  end
17
+
18
+ def ostructify
19
+ collect { |i| (i.is_a?(Hash) || i.is_a?(Array)) ? i.ostructify : i }
20
+ end
15
21
  end
16
22
 
17
23
  class Hash
@@ -25,16 +31,24 @@ class Hash
25
31
  yield hash
26
32
  end
27
33
  end
28
-
34
+
29
35
  def recursively!(&block)
30
36
  replace(recursively(&block))
31
37
  end
32
38
 
33
39
  def ostructify
34
- result = inject({}) do |hash, (key, value)|
35
- hash[key] = value.is_a?(Hash) ? value.ostructify : value
40
+ temp = inject({}) do |hash, (key, value)|
41
+ hash[key] = (value.is_a?(Hash) || value.is_a?(Array)) ? value.ostructify : value
36
42
  hash
37
43
  end
38
- OpenStruct.new result
44
+ result = OpenStruct.new temp
45
+
46
+ if result.instance_variable_get('@table')[:id] != nil
47
+ def result.id
48
+ instance_variable_get('@table')[:id]
49
+ end
50
+ end
51
+ result
39
52
  end
40
53
  end
54
+
@@ -0,0 +1,12 @@
1
+ def capture_stderr
2
+ result = ""
3
+ begin
4
+ $stderr = StringIO.new
5
+ yield
6
+ $stderr.rewind
7
+ result = $stderr.read
8
+ ensure
9
+ $stderr = STDERR
10
+ end
11
+ result
12
+ end
@@ -0,0 +1 @@
1
+ require 'tworgy/testing'
data/lib/tworgy-ruby.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'tworgy/recursively'
1
+ require 'tworgy/hash_and_array_extensions'
2
2
  require 'tworgy/standard_extensions'
3
3
  require 'tworgy/tmail'
4
4
  require 'tworgy/dbc'
@@ -0,0 +1,57 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
2
+
3
+ describe "recursively" do
4
+
5
+ describe Hash do
6
+
7
+ it 'should symbolize the keys recursively' do
8
+ {'a' => {'b' => 3}}.recursively { |hash| symbolize_keys(hash) }.should == {:a => {:b => 3}}
9
+ end
10
+
11
+ describe 'ostructify' do
12
+ before :each do
13
+ @object = {:person => {:name => 'bob', :age => 5}, :array => [{:something => 'in the array'}]}.ostructify
14
+ end
15
+
16
+ it 'should turn a nested hash into nested OpenStructs' do
17
+ @object.person.name.should == 'bob'
18
+ @object.person.age.should == 5
19
+ end
20
+
21
+ it 'should keep ostructify all the way past arrays' do
22
+ @object.array[0].something.should == 'in the array'
23
+ end
24
+
25
+ it 'should replace the "def id" if id was defined, so dont get those annoying ruby warnings' do
26
+ capture_stderr {
27
+ o = {:id => 1}.ostructify
28
+ o.id.should == 1
29
+ }.should == ""
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ describe Array do
36
+ describe 'ostructify' do
37
+ before :each do
38
+ @object = [{:person => {:name => 'bob', :age => 5}}, {:animal => 'dog'}].ostructify
39
+ end
40
+
41
+ it 'should recursively ostructify things in the array' do
42
+ @object[0].person.name.should == 'bob'
43
+ @object[0].person.age.should == 5
44
+ @object[1].animal.should == 'dog'
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ def symbolize_keys(hash)
51
+ hash.inject({}) do |result, (key, value)|
52
+ result[key.to_sym] = value
53
+ result
54
+ end
55
+ end
56
+
57
+
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
2
+
3
+ describe 'rspec helper' do
4
+ it 'should capture nothing' do
5
+ capture_stderr {
6
+ 1 + 1
7
+ 1.to_s
8
+ }.should == ""
9
+ end
10
+
11
+ it 'should capture errors on stderr' do
12
+ capture_stderr {
13
+ [].id
14
+ }.should =~ /Object#id will be deprecated/
15
+ end
16
+
17
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
 
4
4
  require 'rubygems'
5
5
  require 'tworgy-ruby'
6
+ require 'tworgy-ruby-testing'
6
7
  require 'spec'
7
8
  require 'spec/autorun'
8
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tworgy-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mat Holroyd
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-23 00:00:00 +11:00
12
+ date: 2009-12-08 00:00:00 +11:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,7 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.2.9
24
24
  version:
25
- description: fdsfsad
25
+ description: Handy Ruby extensions
26
26
  email: code@tworgy.com
27
27
  executables: []
28
28
 
@@ -35,12 +35,15 @@ files:
35
35
  - LICENSE
36
36
  - README.rdoc
37
37
  - Rakefile
38
+ - lib/tworgy-ruby-testing.rb
38
39
  - lib/tworgy-ruby.rb
39
40
  - lib/tworgy/dbc.rb
40
- - lib/tworgy/recursively.rb
41
+ - lib/tworgy/hash_and_array_extensions.rb
41
42
  - lib/tworgy/standard_extensions.rb
43
+ - lib/tworgy/testing.rb
42
44
  - lib/tworgy/tmail.rb
43
- - spec/lib/tworgy/recursively_spec.rb
45
+ - spec/lib/tworgy/hash_and_array_extensions_spec.rb
46
+ - spec/lib/tworgy/testing_spec.rb
44
47
  - spec/spec.opts
45
48
  - spec/spec_helper.rb
46
49
  has_rdoc: true
@@ -72,5 +75,6 @@ signing_key:
72
75
  specification_version: 3
73
76
  summary: Handy Ruby extensions
74
77
  test_files:
75
- - spec/lib/tworgy/recursively_spec.rb
78
+ - spec/lib/tworgy/hash_and_array_extensions_spec.rb
79
+ - spec/lib/tworgy/testing_spec.rb
76
80
  - spec/spec_helper.rb
@@ -1,31 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
2
-
3
- describe "recursively" do
4
-
5
- describe Hash do
6
-
7
- it 'should symbolize the keys recursively' do
8
- {'a' => {'b' => 3}}.recursively { |hash| symbolize_keys(hash) }.should == {:a => {:b => 3}}
9
- end
10
-
11
- describe 'ostructify' do
12
- before :each do
13
- @object = {:person => {:name => 'bob', :age => 5}}.ostructify
14
- end
15
-
16
- it 'should turn a nested hash into nested OpenStructs' do
17
- @object.person.name.should == 'bob'
18
- @object.person.age.should == 5
19
- end
20
- end
21
- end
22
- end
23
-
24
- def symbolize_keys(hash)
25
- hash.inject({}) do |result, (key, value)|
26
- result[key.to_sym] = value
27
- result
28
- end
29
- end
30
-
31
-