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 +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:
|