ex_struct 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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