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 +1 -1
- data/README.rdoc +4 -0
- data/VERSION +1 -1
- data/data/country.yml +2 -2
- data/lib/MasterRecord.rb +38 -9
- data/spec/MasterRecord_spec.rb +19 -0
- metadata +10 -10
data/MasterRecord.gemspec
CHANGED
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.
|
1
|
+
0.3.0
|
data/data/country.yml
CHANGED
data/lib/MasterRecord.rb
CHANGED
@@ -61,18 +61,47 @@ module MasterRecord
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
def c.
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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 =
|
77
|
+
id = condition.to_s
|
78
|
+
if @master_records[id]
|
79
|
+
new(id)
|
80
|
+
else
|
81
|
+
nil
|
82
|
+
end
|
71
83
|
end
|
72
|
-
|
73
|
-
|
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
|
-
|
104
|
+
find_one(condition)
|
76
105
|
end
|
77
106
|
end
|
78
107
|
end
|
data/spec/MasterRecord_spec.rb
CHANGED
@@ -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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *20301620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
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: *
|
35
|
+
version_requirements: *20300880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
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: *
|
46
|
+
version_requirements: *20300320
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rcov
|
49
|
-
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: *
|
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:
|
99
|
+
hash: -1265236637701093746
|
100
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
102
102
|
requirements:
|