MasterRecord 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/MasterRecord.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "MasterRecord"
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Takeshi Morita"]
data/README.rdoc CHANGED
@@ -32,7 +32,11 @@
32
32
  # MasterRecord::CSV.load_file(file_path,header exists)
33
33
  User.load_data(MasterRecord::CSV.load_file(File.expand_path("./data/user.csv", File.dirname(__FILE__)),true))
34
34
  User.find().count => 4
35
+ User.find("1").name => "ひろし"
35
36
  User.find_by_name("ひろし")[0].age => 10
37
+ User.find(:name => "たけし",:age => 21) => []
38
+ User.find(:name => "たけし",:age => 20).count => 1
39
+ User.find_one(:name => "たけし",:age => 20).id => "2"
36
40
 
37
41
  #1 あめ 30
38
42
  #2 チョコレート 40
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/data/country.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  1:
2
2
  name: "Japan"
3
- population: 120000000
4
3
  salutation: "こんにちは"
4
+ population: 120000000
5
5
  2:
6
6
  name: "China"
7
- population: 500000000
8
7
  salutation: "您好"
8
+ population: 500000000
data/lib/MasterRecord.rb CHANGED
@@ -61,18 +61,47 @@ module MasterRecord
61
61
  end
62
62
  end
63
63
 
64
- def c.find(identity=nil)
65
- return all unless identity
66
- identity = identity.to_s
67
- if identity.include?("@")
68
- id = identity.split("@")[-1]
64
+ def c.find_one(condition=nil)
65
+ if condition == nil
66
+ if @master_records.count == 0
67
+ return nil
68
+ else
69
+ return new(@master_records.first)
70
+ end
71
+ end
72
+ if condition.is_a? Hash
73
+ filtered = @master_records.detect do |id,rec|
74
+ break new(id) if coincide?(id,rec,condition)
75
+ end
69
76
  else
70
- id = identity
77
+ id = condition.to_s
78
+ if @master_records[id]
79
+ new(id)
80
+ else
81
+ nil
82
+ end
71
83
  end
72
- if @master_records[id]
73
- new(id)
84
+ end
85
+
86
+ def c.coincide?(id,rec,condition)
87
+ condition.each do|k,v|
88
+ if k.to_s == "id"
89
+ break nil if id != v
90
+ else
91
+ break nil if rec[k.to_sym] != v
92
+ end
93
+ end != nil
94
+ end
95
+
96
+ def c.find(condition=nil)
97
+ return all unless condition
98
+ if condition.is_a? Hash
99
+ filtered = @master_records.select do |id,rec|
100
+ coincide?(id,rec,condition)
101
+ end
102
+ filtered.map{|k,v| new(k)}
74
103
  else
75
- nil
104
+ find_one(condition)
76
105
  end
77
106
  end
78
107
  end
@@ -26,13 +26,24 @@ end
26
26
  describe "Masterrecord" do
27
27
  describe "csv" do
28
28
  before do
29
+ #1,ひろし,10
30
+ #2,たけし,20
31
+ #3,まこと,30
32
+ #4,けん,40
29
33
  User.load_data(MasterRecord::CSV.load_file(File.expand_path("../data/user.csv", File.dirname(__FILE__)),true))
30
34
  end
31
35
  it{ User.find().count.should == 4}
36
+ it{ User.find("1").name.should == "ひろし"}
32
37
  it{ User.find_by_name("ひろし")[0].age.should == 10}
38
+ it{ User.find(:name => "たけし",:age => 21).should == []}
39
+ it{ User.find(:name => "たけし",:age => 20).count.should == 1}
40
+ it{ User.find_one(:name => "たけし",:age => 20).id.should == "2"}
33
41
  end
34
42
  describe "tsv" do
35
43
  before do
44
+ #1 あめ 30
45
+ #2 チョコレート 40
46
+ #3 ガム 50
36
47
  Item.load_data(MasterRecord::TSV.load_file(File.expand_path("../data/item.tsv", File.dirname(__FILE__))))
37
48
  end
38
49
  it{ Item.find().count.should == 3}
@@ -40,6 +51,14 @@ describe "Masterrecord" do
40
51
  end
41
52
  describe "yml" do
42
53
  before do
54
+ #1:
55
+ # name: "Japan"
56
+ # population: 120000000
57
+ # salutation: "こんにちは"
58
+ #2:
59
+ # name: "China"
60
+ # population: 500000000
61
+ # salutation: "您好"
43
62
  Country.load_data(
44
63
  MasterRecord::YAML.load_file(Country.fields,File.expand_path("../data/country.yml", File.dirname(__FILE__))))
45
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MasterRecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &17965520 !ruby/object:Gem::Requirement
16
+ requirement: &20301620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.3.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *17965520
24
+ version_requirements: *20301620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &17963240 !ruby/object:Gem::Requirement
27
+ requirement: &20300880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *17963240
35
+ version_requirements: *20300880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &17960820 !ruby/object:Gem::Requirement
38
+ requirement: &20300320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *17960820
46
+ version_requirements: *20300320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &17958860 !ruby/object:Gem::Requirement
49
+ requirement: &20299320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *17958860
57
+ version_requirements: *20299320
58
58
  description: Object Mapper for csv or tsv or yaml etc.. you can use find,find_one_by|field|,find_by_|field|
59
59
  email: laten@nifty.com
60
60
  executables: []
@@ -96,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  segments:
98
98
  - 0
99
- hash: 3410631809793611323
99
+ hash: -1265236637701093746
100
100
  required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  none: false
102
102
  requirements: