ex_struct 0.0.1 → 0.0.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ex_struct}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["takkaw"]
12
- s.date = %q{2011-08-09}
12
+ s.date = %q{2011-08-13}
13
13
  s.description = %q{ExStruct is expandable OpenStruct.For example, ExStruct.new.foo.bar.baz = :hello}
14
14
  s.email = %q{takkaw@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -1,5 +1,18 @@
1
1
  require 'ostruct'
2
2
  class ExStruct < OpenStruct
3
+ def initialize(hash=nil)
4
+ @table = {}
5
+ regist(hash) if hash
6
+ end
7
+
8
+ def regist(hash)
9
+ for k,v in hash
10
+ @table[k.to_sym] = Hash === v ? ExStruct.new(v) : v
11
+ new_ostruct_member(k)
12
+ end
13
+ end
14
+ private :regist
15
+
3
16
  def method_missing(mid, *args)
4
17
  mname = mid.id2name
5
18
  len = args.length
@@ -1,6 +1,25 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestExStruct < Test::Unit::TestCase
4
+ should "duped object equals original" do
5
+ conf = ExStruct.new(:x => {:y => 100})
6
+ assert_equal conf,conf.dup
7
+ end
8
+ should "load dumped object" do
9
+ conf = ExStruct.new(:x => {:y => 100})
10
+ e = ExStruct.new()
11
+ e.marshal_load(conf.marshal_dump)
12
+ assert_equal e.x.y , 100
13
+ end
14
+ should "compare same object" do
15
+ conf1 = ExStruct.new(:x => {:y => 100})
16
+ conf2 = ExStruct.new(:x => {:y => 100})
17
+ assert_equal true,conf1 == conf2
18
+ end
19
+ should "initialize with hash" do
20
+ conf = ExStruct.new(:x => {:y => 100})
21
+ assert_equal conf.x.y,100
22
+ end
4
23
  should "add new method as value = 100" do
5
24
  conf = ExStruct.new
6
25
  conf.value = 100
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ex_struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-09 00:00:00.000000000 +09:00
12
+ date: 2011-08-13 00:00:00.000000000 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &2152538620 !ruby/object:Gem::Requirement
17
+ requirement: &2152394560 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2152538620
25
+ version_requirements: *2152394560
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: jeweler
28
- requirement: &2152537400 !ruby/object:Gem::Requirement
28
+ requirement: &2152393520 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.6.4
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2152537400
36
+ version_requirements: *2152393520
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rcov
39
- requirement: &2152536300 !ruby/object:Gem::Requirement
39
+ requirement: &2152392580 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2152536300
47
+ version_requirements: *2152392580
48
48
  description: ExStruct is expandable OpenStruct.For example, ExStruct.new.foo.bar.baz
49
49
  = :hello
50
50
  email: takkaw@gmail.com