representable 0.13.1 → 1.0.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/CHANGES.textile +4 -0
- data/README.rdoc +23 -8
- data/lib/representable.rb +24 -0
- data/lib/representable/version.rb +1 -1
- data/representable.gemspec +1 -1
- metadata +73 -103
- data/.gitmodules +0 -3
data/CHANGES.textile
CHANGED
data/README.rdoc
CHANGED
@@ -44,7 +44,7 @@ To use your representer include it in the matching class. Note that you could re
|
|
44
44
|
class Hero
|
45
45
|
attr_accessor :forename, :surename
|
46
46
|
|
47
|
-
|
47
|
+
include Representable
|
48
48
|
include HeroRepresenter
|
49
49
|
end
|
50
50
|
|
@@ -215,13 +215,13 @@ Representers roughly follow the {DCI}[http://en.wikipedia.org/wiki/Data,_context
|
|
215
215
|
|
216
216
|
The only difference is that you have to define which representers to use for typed properties.
|
217
217
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
218
|
+
module HeroRepresenter
|
219
|
+
property :forename
|
220
|
+
property :surename
|
221
|
+
collection :features
|
222
|
+
property :origin, :class => Location
|
223
|
+
collection :friends, :class => Hero, :extend => HeroRepresenter
|
224
|
+
end
|
225
225
|
|
226
226
|
There's no need to specify a representer for the +origin+ property since the +Location+ class statically includes its representation. For +friends+, we can use +:extend+ to tell representable which module to mix in dynamically.
|
227
227
|
|
@@ -250,6 +250,21 @@ Representable allows declaring a document's syntax and structure while having di
|
|
250
250
|
|
251
251
|
The #to_xml method gives us an XML representation of Peter - great!
|
252
252
|
|
253
|
+
=== Mapping tag attributes
|
254
|
+
|
255
|
+
You can also map properties to tag attributes in representable.
|
256
|
+
|
257
|
+
class Hero
|
258
|
+
attr_accessor :name
|
259
|
+
include Representable::XML
|
260
|
+
property :name, :attribute => true
|
261
|
+
end
|
262
|
+
|
263
|
+
Hero.new(:name => "Peter Pan").to_xml
|
264
|
+
#=> <hero name="Peter Pan" />
|
265
|
+
|
266
|
+
Naturally, this works for both ways.
|
267
|
+
|
253
268
|
|
254
269
|
== More
|
255
270
|
|
data/lib/representable.rb
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
require 'representable/definition'
|
2
2
|
|
3
|
+
# Representable can be used in two ways.
|
4
|
+
#
|
5
|
+
# == On class level
|
6
|
+
#
|
7
|
+
# To try out Representable you might include the format module into the represented class directly and then
|
8
|
+
# define the properties.
|
9
|
+
#
|
10
|
+
# class Hero < ActiveRecord::Base
|
11
|
+
# include Representable::JSON
|
12
|
+
# property :name
|
13
|
+
#
|
14
|
+
# This will give you to_/from_json for each instance. However, this approach limits your class to one representation.
|
15
|
+
#
|
16
|
+
# == On module level
|
17
|
+
#
|
18
|
+
# Modules give you much more flexibility since you can mix them into objects at runtime, roughly following the DCI
|
19
|
+
# pattern.
|
20
|
+
#
|
21
|
+
# module HeroRepresenter
|
22
|
+
# include Representable::JSON
|
23
|
+
# property :name
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# hero.extend(HeroRepresenter).to_json
|
3
27
|
module Representable
|
4
28
|
def self.included(base)
|
5
29
|
base.class_eval do
|
data/representable.gemspec
CHANGED
@@ -24,6 +24,6 @@ Gem::Specification.new do |s|
|
|
24
24
|
|
25
25
|
s.add_development_dependency "rake"
|
26
26
|
s.add_development_dependency "test_xml"
|
27
|
-
s.add_development_dependency "minitest", "
|
27
|
+
s.add_development_dependency "minitest", "=2.8.1"
|
28
28
|
s.add_development_dependency "mocha"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,113 +1,91 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: representable
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 13
|
8
|
-
- 1
|
9
|
-
version: 0.13.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Nick Sutterer
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-27 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: nokogiri
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &72760530 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :runtime
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: json
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: *72760530
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &72760260 !ruby/object:Gem::Requirement
|
37
28
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
44
33
|
type: :runtime
|
45
|
-
version_requirements: *id002
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rake
|
48
34
|
prerelease: false
|
49
|
-
|
35
|
+
version_requirements: *72760260
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &72760000 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
- 0
|
56
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
57
44
|
type: :development
|
58
|
-
version_requirements: *id003
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: test_xml
|
61
45
|
prerelease: false
|
62
|
-
|
46
|
+
version_requirements: *72760000
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: test_xml
|
49
|
+
requirement: &72759760 !ruby/object:Gem::Requirement
|
63
50
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
|
68
|
-
- 0
|
69
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
70
55
|
type: :development
|
71
|
-
version_requirements: *id004
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: minitest
|
74
56
|
prerelease: false
|
75
|
-
|
57
|
+
version_requirements: *72759760
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: minitest
|
60
|
+
requirement: &72759480 !ruby/object:Gem::Requirement
|
76
61
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
|
81
|
-
- 2
|
82
|
-
- 8
|
83
|
-
version: "2.8"
|
62
|
+
requirements:
|
63
|
+
- - =
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.8.1
|
84
66
|
type: :development
|
85
|
-
version_requirements: *id005
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
|
-
name: mocha
|
88
67
|
prerelease: false
|
89
|
-
|
68
|
+
version_requirements: *72759480
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mocha
|
71
|
+
requirement: &72759220 !ruby/object:Gem::Requirement
|
90
72
|
none: false
|
91
|
-
requirements:
|
92
|
-
- -
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
|
95
|
-
- 0
|
96
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
97
77
|
type: :development
|
98
|
-
|
99
|
-
|
100
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *72759220
|
80
|
+
description: Maps representation documents from and to Ruby objects. Includes XML
|
81
|
+
and JSON support, plain properties, collections and compositions.
|
82
|
+
email:
|
101
83
|
- apotonick@gmail.com
|
102
84
|
executables: []
|
103
|
-
|
104
85
|
extensions: []
|
105
|
-
|
106
86
|
extra_rdoc_files: []
|
107
|
-
|
108
|
-
files:
|
87
|
+
files:
|
109
88
|
- .gitignore
|
110
|
-
- .gitmodules
|
111
89
|
- .rspec
|
112
90
|
- .travis.yml
|
113
91
|
- CHANGES.textile
|
@@ -130,37 +108,29 @@ files:
|
|
130
108
|
- test/representable_test.rb
|
131
109
|
- test/test_helper.rb
|
132
110
|
- test/xml_test.rb
|
133
|
-
has_rdoc: true
|
134
111
|
homepage: http://representable.apotomo.de
|
135
112
|
licenses: []
|
136
|
-
|
137
113
|
post_install_message:
|
138
114
|
rdoc_options: []
|
139
|
-
|
140
|
-
require_paths:
|
115
|
+
require_paths:
|
141
116
|
- lib
|
142
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
118
|
none: false
|
144
|
-
requirements:
|
145
|
-
- -
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
|
148
|
-
|
149
|
-
version: "0"
|
150
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
124
|
none: false
|
152
|
-
requirements:
|
153
|
-
- -
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
|
156
|
-
- 0
|
157
|
-
version: "0"
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
158
129
|
requirements: []
|
159
|
-
|
160
130
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.
|
131
|
+
rubygems_version: 1.8.10
|
162
132
|
signing_key:
|
163
133
|
specification_version: 3
|
164
|
-
summary: Maps representation documents from and to Ruby objects. Includes XML and
|
134
|
+
summary: Maps representation documents from and to Ruby objects. Includes XML and
|
135
|
+
JSON support, plain properties, collections and compositions.
|
165
136
|
test_files: []
|
166
|
-
|
data/.gitmodules
DELETED