hanswurst 0.4.1 → 0.4.2
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/README.md +6 -0
- data/VERSION +1 -1
- data/lib/hanswurst.rb +14 -12
- data/test/test_hanswurst.rb +8 -0
- metadata +22 -22
data/README.md
CHANGED
@@ -30,6 +30,10 @@ first you have to build your roles as normal couch potato classes
|
|
30
30
|
property :last_name
|
31
31
|
property :first_name
|
32
32
|
|
33
|
+
def name()
|
34
|
+
"#{firstname} #{lastname}"
|
35
|
+
end
|
36
|
+
|
33
37
|
validates_presence_of :last_name
|
34
38
|
end
|
35
39
|
|
@@ -64,12 +68,14 @@ later...
|
|
64
68
|
hw = CouchPotato.database.load_document id
|
65
69
|
|
66
70
|
hw.person___first_name # => 'Diederich'
|
71
|
+
hw.person___name # => 'Diederich Hessling'
|
67
72
|
hw.product___price # => 20
|
68
73
|
|
69
74
|
# or with 'as'
|
70
75
|
person = hw.as :person
|
71
76
|
person.first_name # => 'Diederich'
|
72
77
|
person.last_name # => 'Hessling'
|
78
|
+
person.name # => 'Diederich Hessling'
|
73
79
|
|
74
80
|
|
75
81
|
you may also declare that roles are depending on other roles
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.2
|
data/lib/hanswurst.rb
CHANGED
@@ -50,28 +50,30 @@ class Hanswurst
|
|
50
50
|
|
51
51
|
# helper for easy access to role attributes
|
52
52
|
class As
|
53
|
-
def initialize(doc,
|
53
|
+
def initialize(doc, *roles)
|
54
54
|
@doc = doc
|
55
|
-
@
|
55
|
+
@roles = roles
|
56
56
|
end
|
57
57
|
|
58
58
|
def _id
|
59
59
|
@doc._id
|
60
60
|
end
|
61
61
|
|
62
|
-
def as(
|
63
|
-
self.class.new(@doc,
|
62
|
+
def as(*new_roles)
|
63
|
+
self.class.new(@doc, *@roles.dup.concat(new_roles))
|
64
|
+
end
|
65
|
+
|
66
|
+
def roles_as_string
|
67
|
+
@roles.join('__')
|
64
68
|
end
|
65
69
|
|
70
|
+
# we suppose, we have a subrole
|
66
71
|
def method_missing(meth, *args)
|
67
|
-
# we suppose, we have a subrole
|
68
72
|
if meth.to_s =~ /__/
|
69
|
-
#
|
70
|
-
@doc.send(:"#{@role}__#{meth}", *args)
|
73
|
+
@doc.send(:"#{roles_as_string}__#{meth}", *args)
|
71
74
|
else
|
72
|
-
@doc.send(:"#{
|
75
|
+
@doc.send(:"#{roles_as_string}___#{meth}", *args)
|
73
76
|
end
|
74
|
-
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
@@ -125,7 +127,7 @@ class Hanswurst
|
|
125
127
|
case meth
|
126
128
|
when /^([^=]+)___([^=]+)(\=)?$/ # obj.role__prop # => we get / set a property
|
127
129
|
role, property, setter = $1, $2, $3
|
128
|
-
return setter ? set_property(role, property, value) : read(role, property)
|
130
|
+
return setter ? set_property(role, property, value) : read(role, property, *args)
|
129
131
|
when /^([^=]+)\=$/ # obj.role = ... # => we set a role
|
130
132
|
return set_role(role, value) if role_exists?(role=$1)
|
131
133
|
end
|
@@ -236,8 +238,8 @@ class Hanswurst
|
|
236
238
|
end
|
237
239
|
|
238
240
|
# read a property of a role
|
239
|
-
def read(role, property)
|
240
|
-
return self.hanswurst_data[role.to_s].send(property.to_sym) if hanswurst_data_exists?(role.to_s)
|
241
|
+
def read(role, property, *args)
|
242
|
+
return self.hanswurst_data[role.to_s].send(property.to_sym, *args) if hanswurst_data_exists?(role.to_s)
|
241
243
|
nil
|
242
244
|
end
|
243
245
|
|
data/test/test_hanswurst.rb
CHANGED
@@ -8,6 +8,10 @@ class Pers
|
|
8
8
|
include CouchPotato::Persistence
|
9
9
|
property :firstname
|
10
10
|
property :lastname
|
11
|
+
|
12
|
+
def name(seperator)
|
13
|
+
"#{lastname}#{seperator}#{firstname}"
|
14
|
+
end
|
11
15
|
end
|
12
16
|
|
13
17
|
class Prod
|
@@ -153,6 +157,8 @@ class TestCouch < Test::Unit::TestCase
|
|
153
157
|
assert !o.hanswurst_roles.has_key?("product")
|
154
158
|
assert_equal 'Bugs', o.person___firstname
|
155
159
|
assert_equal nil, o.product___article_number
|
160
|
+
#p [:person, o.person]
|
161
|
+
assert_equal 'Bunny, Bugs', o.person___name(', ')
|
156
162
|
end
|
157
163
|
|
158
164
|
should "save for moduled classed" do
|
@@ -247,6 +253,7 @@ class TestCouch < Test::Unit::TestCase
|
|
247
253
|
f = o.as 'fff'
|
248
254
|
d = f.as "d"
|
249
255
|
person = d.as "person"
|
256
|
+
person.firstname = "Donald"
|
250
257
|
person.lastname = "Duck"
|
251
258
|
f.f = "FFF"
|
252
259
|
d.prod___name = "testerer"
|
@@ -264,6 +271,7 @@ class TestCouch < Test::Unit::TestCase
|
|
264
271
|
|
265
272
|
qpers = qf.as(:d).as :person
|
266
273
|
assert_equal "Duck", qpers.lastname
|
274
|
+
assert_equal "Duck, Donald", qpers.name(', ')
|
267
275
|
end
|
268
276
|
end
|
269
277
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanswurst
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-01-16 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: couch_potato
|
16
|
-
requirement: &
|
16
|
+
requirement: &19524980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19524980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yard
|
27
|
-
requirement: &
|
27
|
+
requirement: &19524200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.6.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *19524200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &19523480 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *19523480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &19522820 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.5.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *19522820
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rcov
|
60
|
-
requirement: &
|
60
|
+
requirement: &19522220 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *19522220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
|
-
requirement: &
|
71
|
+
requirement: &19521460 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *19521460
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: shoulda
|
82
|
-
requirement: &
|
82
|
+
requirement: &19490000 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *19490000
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: linecache19
|
93
|
-
requirement: &
|
93
|
+
requirement: &19489400 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *19489400
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: ruby-debug19
|
104
|
-
requirement: &
|
104
|
+
requirement: &19488800 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *19488800
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: couch_potato
|
115
|
-
requirement: &
|
115
|
+
requirement: &19488200 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *19488200
|
124
124
|
description: flexible enhancement of couch potato
|
125
125
|
email: ! 'Base64.decode64(''bGludXhAbWFyY3JlbmVhcm5zLmRl
|
126
126
|
|
@@ -155,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
155
|
version: '0'
|
156
156
|
segments:
|
157
157
|
- 0
|
158
|
-
hash:
|
158
|
+
hash: -2383077333237470866
|
159
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|