MasterRecord 0.2.0 → 0.3.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.
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: