sdl4r 0.9.9 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +70 -1
- data/LICENSE +499 -497
- data/Rakefile +38 -28
- data/TODO +194 -45
- data/doc/classes/SDL4R/AbbreviationTimezoneProxy.html +151 -0
- data/doc/classes/SDL4R/ConstantTimezone.html +129 -0
- data/doc/classes/SDL4R/Element.html +148 -0
- data/doc/classes/SDL4R/Reader.html +683 -0
- data/doc/classes/SDL4R/RelativeTimezone.html +187 -0
- data/doc/classes/SDL4R/SdlBinary.html +188 -0
- data/doc/classes/SDL4R/SdlParseError.html +110 -0
- data/doc/classes/SDL4R/SdlTimeSpan.html +651 -0
- data/doc/classes/SDL4R/Serializer.html +557 -0
- data/doc/classes/SDL4R/Serializer/Ref.html +138 -0
- data/doc/classes/SDL4R/TZAbbreviationDB/Record.html +117 -0
- data/doc/classes/SDL4R/Tag.html +1274 -0
- data/doc/classes/SDL4R/Token.html +131 -0
- data/doc/created.rid +1 -0
- data/doc/files/CHANGELOG.html +290 -0
- data/doc/files/LICENSE.html +53 -0
- data/doc/files/README.html +405 -0
- data/doc/files/lib/sdl4r/abbreviation_timezone_proxy_rb.html +63 -0
- data/doc/files/lib/sdl4r/constant_timezone_rb.html +54 -0
- data/doc/files/lib/sdl4r/element_rb.html +54 -0
- data/doc/files/lib/sdl4r/reader_rb.html +68 -0
- data/doc/files/lib/sdl4r/relative_timezone_rb.html +62 -0
- data/doc/files/lib/sdl4r/sdl4r_rb.html +66 -0
- data/doc/files/lib/sdl4r/sdl4r_tzinfo_rb.html +64 -0
- data/doc/files/lib/sdl4r/sdl4r_version_rb.html +54 -0
- data/doc/files/lib/sdl4r/sdl_binary_rb.html +54 -0
- data/doc/files/lib/sdl4r/sdl_parse_error_rb.html +54 -0
- data/doc/files/lib/sdl4r/sdl_time_span_rb.html +54 -0
- data/doc/files/lib/sdl4r/serializer_rb.html +62 -0
- data/doc/files/lib/sdl4r/tag_rb.html +66 -0
- data/doc/files/lib/sdl4r/token_rb.html +54 -0
- data/doc/files/lib/sdl4r/tokenizer_rb.html +64 -0
- data/doc/files/lib/sdl4r/tz_abbreviation_db_rb.html +67 -0
- data/doc/files/lib/sdl4r_rb.html +54 -0
- data/doc/files/lib/sdl4r_tzinfo_rb.html +54 -0
- data/doc/fr_class_index.html +23 -0
- data/doc/fr_file_index.html +40 -0
- data/doc/fr_method_index.html +4711 -0
- data/doc/index.html +15 -0
- data/doc/rdoc-style.css +328 -0
- data/lib/sdl4r.rb +3 -1
- data/lib/sdl4r/abbreviation_timezone_proxy.rb +38 -0
- data/lib/sdl4r/constant_timezone.rb +58 -0
- data/{test/sdl4r/sdl_test.rb → lib/sdl4r/element.rb} +19 -14
- data/lib/sdl4r/reader.rb +772 -0
- data/lib/sdl4r/relative_timezone.rb +156 -0
- data/lib/sdl4r/sdl4r.rb +187 -45
- data/lib/sdl4r/sdl4r_tzinfo.rb +75 -0
- data/lib/sdl4r/sdl4r_version.rb +24 -0
- data/lib/sdl4r/sdl_parse_error.rb +1 -1
- data/lib/sdl4r/sdl_time_span.rb +5 -1
- data/lib/sdl4r/serializer.rb +473 -60
- data/lib/sdl4r/tag.rb +126 -51
- data/lib/sdl4r/token.rb +49 -0
- data/lib/sdl4r/tokenizer.rb +431 -0
- data/lib/sdl4r/tz_abbreviation_db.rb +266 -0
- data/read_jprof.html +16934 -0
- data/read_jprof_pull.html +14451 -0
- data/read_prof.html +4983 -0
- data/read_prof_pull.html +4896 -0
- data/test/sdl4r/parser_test.rb +577 -503
- data/test/sdl4r/read_jprof.rb +58 -0
- data/test/sdl4r/read_prof.rb +70 -0
- data/test/sdl4r/reader_test.rb +173 -0
- data/test/sdl4r/relative_timezone_test.rb +102 -0
- data/test/sdl4r/sdl4r_test.rb +611 -528
- data/test/sdl4r/sdl4r_tzinfo_test.rb +108 -0
- data/test/sdl4r/sdl_test_case.rb +60 -0
- data/test/sdl4r/serializer_test.rb +448 -11
- data/test/sdl4r/tag_test.rb +84 -5
- data/test/sdl4r/tokenizer_test.rb +128 -0
- metadata +69 -11
- data/lib/sdl4r/parser.rb +0 -648
- data/lib/sdl4r/parser/reader.rb +0 -184
- data/lib/sdl4r/parser/time_span_with_zone.rb +0 -57
- data/lib/sdl4r/parser/token.rb +0 -138
- data/lib/sdl4r/parser/tokenizer.rb +0 -507
@@ -0,0 +1,557 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html lang='en'>
|
3
|
+
<head>
|
4
|
+
<title>: SDL4R::Serializer [RDoc: Simple Declarative Language for Ruby]</title>
|
5
|
+
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
|
6
|
+
<link href='../../rdoc-style.css' media='screen' rel='stylesheet' type='text/css'>
|
7
|
+
<script type='text/javascript'>
|
8
|
+
//<![CDATA[
|
9
|
+
function popupCode(url) {
|
10
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
11
|
+
}
|
12
|
+
|
13
|
+
function toggleCode(id) {
|
14
|
+
var code = document.getElementById(id)
|
15
|
+
|
16
|
+
code.style.display = code.style.display != 'block' ? 'block' : 'none'
|
17
|
+
return true
|
18
|
+
}
|
19
|
+
|
20
|
+
// Make codeblocks hidden by default
|
21
|
+
document.writeln('<' + 'style type="text/css">.method .source pre { display: none }<\/style>')
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
<body class='page'>
|
26
|
+
<div class='class' id='wrapper'>
|
27
|
+
<div class='header'>
|
28
|
+
<h1 class='name'>
|
29
|
+
<span class='type'>Class</span>
|
30
|
+
SDL4R::Serializer
|
31
|
+
</h1>
|
32
|
+
<ol class='paths'>
|
33
|
+
<li>
|
34
|
+
<a href="../../files/lib/sdl4r/serializer_rb.html">lib/sdl4r/serializer.rb</a>
|
35
|
+
</li>
|
36
|
+
</ol>
|
37
|
+
<div class='parent'>
|
38
|
+
Parent:
|
39
|
+
<strong>Object</strong>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
<div id='content'>
|
43
|
+
<div id='text'>
|
44
|
+
<div id='description'>
|
45
|
+
<p>
|
46
|
+
Allows to serialize/deserialize between SDL and Ruby objects.
|
47
|
+
</p>
|
48
|
+
<p>
|
49
|
+
Classes which need to implement custom serialization/deserialization should
|
50
|
+
define the +to_sdl()+ and +from_sdl()+ methods as follows:
|
51
|
+
</p>
|
52
|
+
<pre>class MyClass

 attr_accessor :firstname

 def from_sdl(tag, serializer = Serializer.new)
 self.firstname = tag.attribute("name")
 self
 end

 def to_sdl(serializer = Serializer.new, tag = serializer.new_tag(nil, self, nil))
 tag.set_attribute("name", self.firstname)
 tag
 end

end</pre>
|
53
|
+
<p>
|
54
|
+
Custom serialization (using +to_sdl()+) or deserialization (using
|
55
|
+
+from_sdl()+) can be more efficient than the standard one as its logic is
|
56
|
+
more straightforward).
|
57
|
+
</p>
|
58
|
+
<h2>Author</h2>
|
59
|
+
<p>
|
60
|
+
Philippe Vosges
|
61
|
+
</p>
|
62
|
+
</div>
|
63
|
+
<div id='method-list'>
|
64
|
+
<h2>Methods</h2>
|
65
|
+
<h3>public class</h3>
|
66
|
+
<ol>
|
67
|
+
<li><a href="#M000083">new</a></li>
|
68
|
+
</ol>
|
69
|
+
<h3>public instance</h3>
|
70
|
+
<ol>
|
71
|
+
<li><a href="#M000097">deserialize</a></li>
|
72
|
+
<li><a href="#M000100">deserialize_from_attributes</a></li>
|
73
|
+
<li><a href="#M000102">deserialize_from_child_tags</a></li>
|
74
|
+
<li><a href="#M000099">deserialize_from_values</a></li>
|
75
|
+
<li><a href="#M000098">deserialize_object</a></li>
|
76
|
+
<li><a href="#M000101">get_deserialized_property_name</a></li>
|
77
|
+
<li><a href="#M000090">get_method</a></li>
|
78
|
+
<li><a href="#M000096">new_plain_object</a></li>
|
79
|
+
<li><a href="#M000086">new_ref_tag</a></li>
|
80
|
+
<li><a href="#M000085">new_tag</a></li>
|
81
|
+
<li><a href="#M000084">reference_object</a></li>
|
82
|
+
<li><a href="#M000091">serializable_property?</a></li>
|
83
|
+
<li><a href="#M000087">serialize</a></li>
|
84
|
+
<li><a href="#M000093">serialize_array</a></li>
|
85
|
+
<li><a href="#M000094">serialize_array_as_child_tags</a></li>
|
86
|
+
<li><a href="#M000088">serialize_hash</a></li>
|
87
|
+
<li><a href="#M000095">serialize_object_or_ref</a></li>
|
88
|
+
<li><a href="#M000089">serialize_plain_object</a></li>
|
89
|
+
<li><a href="#M000092">serialize_property</a></li>
|
90
|
+
<li><a href="#M000103">set_serializable_property</a></li>
|
91
|
+
</ol>
|
92
|
+
</div>
|
93
|
+
<div id='section'>
|
94
|
+
<div id='class-list'>
|
95
|
+
<h2>Classes and Modules</h2>
|
96
|
+
Class <a href="Serializer/Ref.html" class="link">SDL4R::Serializer::Ref</a><br />
|
97
|
+
</div>
|
98
|
+
<div id='constants-list'>
|
99
|
+
<h2>Constants</h2>
|
100
|
+
<div class='name-list'>
|
101
|
+
<table summary='Constants'>
|
102
|
+
<tr class='top-aligned-row context-row'>
|
103
|
+
<td class='context-item-name'>OBJECT_ID_ATTR_NAME</td>
|
104
|
+
<td>=</td>
|
105
|
+
<td class='context-item-value'>'oid'</td>
|
106
|
+
</tr>
|
107
|
+
<tr class='top-aligned-row context-row'>
|
108
|
+
<td class='context-item-name'>OBJECT_REF_ATTR_NAME</td>
|
109
|
+
<td>=</td>
|
110
|
+
<td class='context-item-value'>'oref'</td>
|
111
|
+
</tr>
|
112
|
+
</table>
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
<div id='methods'>
|
116
|
+
<h2>Public class methods</h2>
|
117
|
+
<div class='method public-class' id='method-M000083'>
|
118
|
+
<a name='M000083'></a>
|
119
|
+
<div class='synopsis'>
|
120
|
+
<span class='name'>new</span>
|
121
|
+
<span class='arguments'>(options = {})</span>
|
122
|
+
</div>
|
123
|
+
<div class='description'>
|
124
|
+
<h3>options:</h3>
|
125
|
+
<pre>[:omit_nil_properties]
if true, nil object properties are not exported to the serialized SDL (default: false)
[:default_namespace]
the default namespace of the generated tags (default: ""). This namespace doesn't apply to
attributes.</pre>
|
126
|
+
</div>
|
127
|
+
<div class='source'>
|
128
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000083-source'); return false">
|
129
|
+
[show source]
|
130
|
+
</a>
|
131
|
+
<pre id='M000083-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 73</span>
73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span> = {})
74: <span class="ruby-ivar">@options</span> = {}.<span class="ruby-identifier">merge</span>(<span class="ruby-ivar">@@DEFAULT_OPTIONS</span>).<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">options</span>)
75: <span class="ruby-ivar">@next_oid</span> = <span class="ruby-value">1</span>
76: <span class="ruby-ivar">@ref_by_oid</span> = {}
77: <span class="ruby-ivar">@ref_by_object</span> = {}
78: <span class="ruby-keyword kw">end</span></pre>
|
132
|
+
</div>
|
133
|
+
</div>
|
134
|
+
<h2>Public instance methods</h2>
|
135
|
+
<div class='method public-instance' id='method-M000097'>
|
136
|
+
<a name='M000097'></a>
|
137
|
+
<div class='synopsis'>
|
138
|
+
<span class='name'>deserialize</span>
|
139
|
+
<span class='arguments'>(tag, o = new_plain_object(tag))</span>
|
140
|
+
</div>
|
141
|
+
<div class='source'>
|
142
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000097-source'); return false">
|
143
|
+
[show source]
|
144
|
+
</a>
|
145
|
+
<pre id='M000097-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 363</span>
363: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deserialize</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">new_plain_object</span>(<span class="ruby-identifier">tag</span>))
364: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:from_sdl</span>
365: <span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">from_sdl</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-keyword kw">self</span>)
366: 
367: <span class="ruby-keyword kw">else</span>
368: <span class="ruby-identifier">o</span> = <span class="ruby-identifier">deserialize_object</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
369: <span class="ruby-keyword kw">end</span>
370: 
371: <span class="ruby-identifier">o</span>
372: <span class="ruby-keyword kw">end</span></pre>
|
146
|
+
</div>
|
147
|
+
</div>
|
148
|
+
<div class='method public-instance' id='method-M000100'>
|
149
|
+
<a name='M000100'></a>
|
150
|
+
<div class='synopsis'>
|
151
|
+
<span class='name'>deserialize_from_attributes</span>
|
152
|
+
<span class='arguments'>(tag, o)</span>
|
153
|
+
</div>
|
154
|
+
<div class='source'>
|
155
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000100-source'); return false">
|
156
|
+
[show source]
|
157
|
+
</a>
|
158
|
+
<pre id='M000100-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 412</span>
412: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deserialize_from_attributes</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
413: <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">attributes</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute_namespace</span>, <span class="ruby-identifier">attribute_name</span>, <span class="ruby-identifier">attribute_value</span><span class="ruby-operator">|</span>
414: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attribute_namespace</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">attribute_name</span> <span class="ruby-operator">==</span> <span class="ruby-constant">OBJECT_REF_ATTR_NAME</span>
415: <span class="ruby-comment cmt"># ignore this technical attribute</span>
416: 
417: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">attribute_namespace</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">attribute_name</span> <span class="ruby-operator">==</span> <span class="ruby-constant">OBJECT_ID_ATTR_NAME</span>
418: <span class="ruby-comment cmt"># reference and make no impact on 'o'</span>
419: <span class="ruby-identifier">ref</span> = <span class="ruby-identifier">reference_object</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">attribute_value</span>)
420: <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">inc</span>
421: 
422: <span class="ruby-keyword kw">else</span>
423: <span class="ruby-identifier">set_serializable_property</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">attribute_name</span>, <span class="ruby-identifier">attribute_value</span>)
424: <span class="ruby-keyword kw">end</span>
425: <span class="ruby-keyword kw">end</span>
426: <span class="ruby-keyword kw">end</span></pre>
|
159
|
+
</div>
|
160
|
+
</div>
|
161
|
+
<div class='method public-instance' id='method-M000102'>
|
162
|
+
<a name='M000102'></a>
|
163
|
+
<div class='synopsis'>
|
164
|
+
<span class='name'>deserialize_from_child_tags</span>
|
165
|
+
<span class='arguments'>(tag, o, handle_anonymous)</span>
|
166
|
+
</div>
|
167
|
+
<div class='description'>
|
168
|
+
<table>
|
169
|
+
<tr><td valign="top"><em>handle_anonymous</em>:</td><td>if true, this method only handles anonymous child tags, if false, it only
|
170
|
+
handles named child tags
|
171
|
+
|
172
|
+
</td></tr>
|
173
|
+
</table>
|
174
|
+
</div>
|
175
|
+
<div class='source'>
|
176
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000102-source'); return false">
|
177
|
+
[show source]
|
178
|
+
</a>
|
179
|
+
<pre id='M000102-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 440</span>
440: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deserialize_from_child_tags</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>, <span class="ruby-identifier">handle_anonymous</span>)
441: <span class="ruby-comment cmt"># Group the homonym tags together</span>
442: <span class="ruby-identifier">child_tags_by_name</span> = {}
443: <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">children</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
444: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">handle_anonymous</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">child</span>.<span class="ruby-identifier">namespace</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">ANONYMOUS_TAG_NAME</span>)
445: <span class="ruby-identifier">property_name</span> = <span class="ruby-identifier">get_deserialized_property_name</span>(<span class="ruby-identifier">child</span>, <span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
446: <span class="ruby-identifier">homonymous_children</span> = (<span class="ruby-identifier">child_tags_by_name</span>[<span class="ruby-identifier">property_name</span>] <span class="ruby-operator">||=</span> [])
447: <span class="ruby-identifier">homonymous_children</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">child</span>
448: <span class="ruby-keyword kw">end</span>
449: <span class="ruby-keyword kw">end</span>
450: 
451: <span class="ruby-identifier">child_tags_by_name</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">property_name</span>, <span class="ruby-identifier">homonymous_children</span><span class="ruby-operator">|</span>
452: <span class="ruby-comment cmt"># Check wether this variable is assignable</span>
453: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">serializable_property?</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>)
454: <span class="ruby-identifier">property_values</span> = []
455: 
456: <span class="ruby-identifier">homonymous_children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
457: <span class="ruby-identifier">property_value</span> = <span class="ruby-keyword kw">nil</span>
458: 
459: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">has_attribute?</span>(<span class="ruby-constant">OBJECT_REF_ATTR_NAME</span>)
460: <span class="ruby-comment cmt"># Object reference</span>
461: <span class="ruby-identifier">ref</span> = <span class="ruby-ivar">@ref_by_oid</span>[<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-constant">OBJECT_REF_ATTR_NAME</span>)]
462: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">deserialize</span>(<span class="ruby-identifier">child</span>, <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">o</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ref</span>
463: 
464: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">has_values?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">has_children?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">has_attributes?</span>
465: <span class="ruby-comment cmt"># If the object only has values (no children, no atttributes):</span>
466: <span class="ruby-comment cmt"># then the values are the variable value</span>
467: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">child</span>.<span class="ruby-identifier">values</span>
468: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">property_value</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">property_value</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
469: 
470: <span class="ruby-keyword kw">else</span>
471: <span class="ruby-comment cmt"># Consider this tag as a plain object</span>
472: <span class="ruby-identifier">variable_name</span> = <span class="ruby-node">"@#{property_name}"</span>
473: <span class="ruby-identifier">previous_value</span> =
474: (<span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_defined?</span> <span class="ruby-identifier">variable_name</span>) <span class="ruby-operator">?</span>
475: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">variable_name</span>) <span class="ruby-operator">:</span>
476: <span class="ruby-keyword kw">nil</span>
477: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">previous_value</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">is_coercible?</span>(<span class="ruby-identifier">previous_value</span>)
478: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">deserialize</span>(<span class="ruby-identifier">child</span>, <span class="ruby-identifier">new_plain_object</span>(<span class="ruby-identifier">child</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">o</span>))
479: <span class="ruby-keyword kw">else</span>
480: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">deserialize</span>(<span class="ruby-identifier">child</span>, <span class="ruby-identifier">new_plain_object</span>(<span class="ruby-identifier">child</span>, <span class="ruby-identifier">previous_value</span>, <span class="ruby-identifier">o</span>))
481: <span class="ruby-keyword kw">end</span>
482: <span class="ruby-keyword kw">end</span>
483: 
484: <span class="ruby-identifier">property_values</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">property_value</span>
485: <span class="ruby-keyword kw">end</span>
486: 
487: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
488: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">property_values</span>)
489: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">property_values</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
490: <span class="ruby-identifier">set_serializable_property</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>, <span class="ruby-identifier">property_values</span>[<span class="ruby-value">0</span>])
491: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">property_values</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">1</span>
492: <span class="ruby-identifier">set_serializable_property</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>, <span class="ruby-identifier">property_values</span>)
493: <span class="ruby-keyword kw">end</span>
494: <span class="ruby-keyword kw">end</span>
495: <span class="ruby-keyword kw">end</span>
496: <span class="ruby-keyword kw">end</span></pre>
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
<div class='method public-instance' id='method-M000099'>
|
183
|
+
<a name='M000099'></a>
|
184
|
+
<div class='synopsis'>
|
185
|
+
<span class='name'>deserialize_from_values</span>
|
186
|
+
<span class='arguments'>(tag, o)</span>
|
187
|
+
</div>
|
188
|
+
<div class='source'>
|
189
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000099-source'); return false">
|
190
|
+
[show source]
|
191
|
+
</a>
|
192
|
+
<pre id='M000099-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 388</span>
388: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deserialize_from_values</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
389: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">has_values?</span>
390: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">has_children?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">has_attributes?</span>
391: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">values</span>
392: 
393: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value str">"@value"</span>) <span class="ruby-keyword kw">or</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value str">"@values"</span>)
394: <span class="ruby-comment cmt"># value is preferred</span>
395: <span class="ruby-identifier">property_name</span> = <span class="ruby-value str">"value"</span>
396: <span class="ruby-identifier">property_value</span> = <span class="ruby-identifier">property_value</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">property_value</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
397: <span class="ruby-keyword kw">else</span>
398: <span class="ruby-identifier">property_name</span> = <span class="ruby-value str">"values"</span>
399: <span class="ruby-keyword kw">end</span>
400: 
401: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">serializable_property?</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>)
402: <span class="ruby-identifier">set_serializable_property</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>, <span class="ruby-identifier">property_value</span>)
403: <span class="ruby-keyword kw">end</span>
404: 
405: <span class="ruby-keyword kw">else</span>
406: <span class="ruby-comment cmt"># the tag only has values</span>
407: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">property_value</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">property_value</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">property_value</span>
408: <span class="ruby-keyword kw">end</span>
409: <span class="ruby-keyword kw">end</span>
410: <span class="ruby-keyword kw">end</span></pre>
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
<div class='method public-instance' id='method-M000098'>
|
196
|
+
<a name='M000098'></a>
|
197
|
+
<div class='synopsis'>
|
198
|
+
<span class='name'>deserialize_object</span>
|
199
|
+
<span class='arguments'>(tag, o = new_plain_object(tag))</span>
|
200
|
+
</div>
|
201
|
+
<div class='description'>
|
202
|
+
<p>
|
203
|
+
Called by <a href="Serializer.html#M000097">deserialize</a> when not using
|
204
|
+
+from_sdl()+. Deserializes the specified tag into an object using values,
|
205
|
+
attributes, child tags, etc.
|
206
|
+
</p>
|
207
|
+
</div>
|
208
|
+
<div class='source'>
|
209
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000098-source'); return false">
|
210
|
+
[show source]
|
211
|
+
</a>
|
212
|
+
<pre id='M000098-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 377</span>
377: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deserialize_object</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">new_plain_object</span>(<span class="ruby-identifier">tag</span>))
378: <span class="ruby-identifier">deserialize_from_child_tags</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>, <span class="ruby-keyword kw">true</span>)
379: <span class="ruby-identifier">deserialize_from_values</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
380: <span class="ruby-identifier">deserialize_from_attributes</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
381: <span class="ruby-identifier">deserialize_from_child_tags</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>, <span class="ruby-keyword kw">false</span>)
382: 
383: <span class="ruby-identifier">o</span> = <span class="ruby-identifier">apply_anonymous_tag_list_idiom</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span>)
384: 
385: <span class="ruby-identifier">o</span>
386: <span class="ruby-keyword kw">end</span></pre>
|
213
|
+
</div>
|
214
|
+
</div>
|
215
|
+
<div class='method public-instance' id='method-M000101'>
|
216
|
+
<a name='M000101'></a>
|
217
|
+
<div class='synopsis'>
|
218
|
+
<span class='name'>get_deserialized_property_name</span>
|
219
|
+
<span class='arguments'>(tag, parent_tag, parent_object)</span>
|
220
|
+
</div>
|
221
|
+
<div class='description'>
|
222
|
+
<p>
|
223
|
+
Returns the name of the property to which the specified <a
|
224
|
+
href="Tag.html">Tag</a> is supposed to be assigned in the parent object.
|
225
|
+
Default behavior: this implementation returns the tag’s name
|
226
|
+
(ignoring the namespace).
|
227
|
+
</p>
|
228
|
+
</div>
|
229
|
+
<div class='source'>
|
230
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000101-source'); return false">
|
231
|
+
[show source]
|
232
|
+
</a>
|
233
|
+
<pre id='M000101-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 432</span>
432: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_deserialized_property_name</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">parent_tag</span>, <span class="ruby-identifier">parent_object</span>)
433: <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">name</span>
434: <span class="ruby-keyword kw">end</span></pre>
|
234
|
+
</div>
|
235
|
+
</div>
|
236
|
+
<div class='method public-instance' id='method-M000090'>
|
237
|
+
<a name='M000090'></a>
|
238
|
+
<div class='synopsis'>
|
239
|
+
<span class='name'>get_method</span>
|
240
|
+
<span class='arguments'>(o, method_name, arity)</span>
|
241
|
+
</div>
|
242
|
+
<div class='description'>
|
243
|
+
<p>
|
244
|
+
Returns the method of object ‘o’, which has the specified name
|
245
|
+
and arity (with or without default parameters). Returns nil if no such
|
246
|
+
method corresponds.
|
247
|
+
</p>
|
248
|
+
</div>
|
249
|
+
<div class='source'>
|
250
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000090-source'); return false">
|
251
|
+
[show source]
|
252
|
+
</a>
|
253
|
+
<pre id='M000090-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 254</span>
254: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_method</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">method_name</span>, <span class="ruby-identifier">arity</span>)
255: <span class="ruby-keyword kw">begin</span>
256: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">method</span>(<span class="ruby-identifier">method_name</span>)
257: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span>
258: <span class="ruby-identifier">m</span> = <span class="ruby-keyword kw">nil</span>
259: <span class="ruby-keyword kw">end</span>
260: 
261: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arity</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">==</span> (<span class="ruby-operator">-</span><span class="ruby-identifier">arity</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
262: <span class="ruby-identifier">m</span> = <span class="ruby-keyword kw">nil</span>
263: <span class="ruby-keyword kw">end</span>
264: 
265: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">m</span>
266: <span class="ruby-keyword kw">end</span></pre>
|
254
|
+
</div>
|
255
|
+
</div>
|
256
|
+
<div class='method public-instance' id='method-M000096'>
|
257
|
+
<a name='M000096'></a>
|
258
|
+
<div class='synopsis'>
|
259
|
+
<span class='name'>new_plain_object</span>
|
260
|
+
<span class='arguments'>(tag, o = nil, parent_object = nil)</span>
|
261
|
+
</div>
|
262
|
+
<div class='description'>
|
263
|
+
<p>
|
264
|
+
Provides deserialized new plain object instances (i.e. “plain
|
265
|
+
object” as opposed to special cases like SDL values). By default,
|
266
|
+
returns ‘o’ or a new instance of OpenStruct if ‘o’
|
267
|
+
is <tt>nil</tt>.
|
268
|
+
</p>
|
269
|
+
<table>
|
270
|
+
<tr><td valign="top"><em>tag</em>:</td><td>the deserialized <a href="Tag.html">Tag</a>
|
271
|
+
|
272
|
+
</td></tr>
|
273
|
+
<tr><td valign="top"><em>o</em>:</td><td>the currently used object or nil if there is none yet
|
274
|
+
|
275
|
+
</td></tr>
|
276
|
+
<tr><td valign="top"><em>parent_object</em>:</td><td>the parent object or <tt>nil</tt> if root
|
277
|
+
|
278
|
+
</td></tr>
|
279
|
+
</table>
|
280
|
+
</div>
|
281
|
+
<div class='source'>
|
282
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000096-source'); return false">
|
283
|
+
[show source]
|
284
|
+
</a>
|
285
|
+
<pre id='M000096-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 355</span>
355: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_plain_object</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">o</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">parent_object</span> = <span class="ruby-keyword kw">nil</span>)
356: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">nil?</span>
357: <span class="ruby-constant">OpenStruct</span>.<span class="ruby-identifier">new</span>
358: <span class="ruby-keyword kw">else</span>
359: <span class="ruby-identifier">o</span>
360: <span class="ruby-keyword kw">end</span>
361: <span class="ruby-keyword kw">end</span></pre>
|
286
|
+
</div>
|
287
|
+
</div>
|
288
|
+
<div class='method public-instance' id='method-M000086'>
|
289
|
+
<a name='M000086'></a>
|
290
|
+
<div class='synopsis'>
|
291
|
+
<span class='name'>new_ref_tag</span>
|
292
|
+
<span class='arguments'>(name, ref, parent_tag)</span>
|
293
|
+
</div>
|
294
|
+
<div class='description'>
|
295
|
+
<p>
|
296
|
+
Returns a <a href="Tag.html">Tag</a> representing the provided <a
|
297
|
+
href="Serializer/Ref.html">Ref</a>.
|
298
|
+
</p>
|
299
|
+
<table>
|
300
|
+
<tr><td valign="top"><em>name</em>:</td><td>name of the created <a href="Tag.html">Tag</a> (if <tt>nil</tt>, the
|
301
|
+
definition <a href="Tag.html">Tag</a> name - i.e. the name of the
|
302
|
+
|
303
|
+
</td></tr>
|
304
|
+
</table>
|
305
|
+
<pre>first Tag representing the referenced object - is used)</pre>
|
306
|
+
<table>
|
307
|
+
<tr><td valign="top"><em>ref</em>:</td><td>represented reference (<a href="Serializer/Ref.html">Ref</a>)
|
308
|
+
|
309
|
+
</td></tr>
|
310
|
+
<tr><td valign="top"><em>parent_tag</em>:</td><td>parent <a href="Tag.html">Tag</a> of the created <a href="Tag.html">Tag</a>
|
311
|
+
|
312
|
+
</td></tr>
|
313
|
+
</table>
|
314
|
+
</div>
|
315
|
+
<div class='source'>
|
316
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000086-source'); return false">
|
317
|
+
[show source]
|
318
|
+
</a>
|
319
|
+
<pre id='M000086-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 153</span>
153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_ref_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">ref</span>, <span class="ruby-identifier">parent_tag</span>)
154: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">tag</span>.<span class="ruby-identifier">name</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
155: 
156: <span class="ruby-identifier">ref_tag</span> = <span class="ruby-identifier">parent_tag</span>.<span class="ruby-identifier">new_child</span>(<span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:default_namespace</span>], <span class="ruby-identifier">name</span>)
157: <span class="ruby-identifier">ref_tag</span>.<span class="ruby-identifier">set_attribute</span>(<span class="ruby-value str">''</span>, <span class="ruby-constant">OBJECT_REF_ATTR_NAME</span>, <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">oid</span>)
158: <span class="ruby-identifier">ref_tag</span>
159: <span class="ruby-keyword kw">end</span></pre>
|
320
|
+
</div>
|
321
|
+
</div>
|
322
|
+
<div class='method public-instance' id='method-M000085'>
|
323
|
+
<a name='M000085'></a>
|
324
|
+
<div class='synopsis'>
|
325
|
+
<span class='name'>new_tag</span>
|
326
|
+
<span class='arguments'>(name, o, parent_tag = nil)</span>
|
327
|
+
</div>
|
328
|
+
<div class='description'>
|
329
|
+
<p>
|
330
|
+
Returns a new <a href="Tag.html">Tag</a> to be used for serializing
|
331
|
+
‘o’.
|
332
|
+
</p>
|
333
|
+
<table>
|
334
|
+
<tr><td valign="top"><em>name</em>:</td><td>name of the <a href="Tag.html">Tag</a> to create (can be <tt>nil</tt> for a
|
335
|
+
root <a href="Tag.html">Tag</a>)
|
336
|
+
|
337
|
+
</td></tr>
|
338
|
+
</table>
|
339
|
+
<pre>_o_:: object/value that the new tag will represent</pre>
|
340
|
+
<table>
|
341
|
+
<tr><td valign="top"><em>parent_tag</em>:</td><td>parent <a href="Tag.html">Tag</a> of the new tag
|
342
|
+
|
343
|
+
</td></tr>
|
344
|
+
</table>
|
345
|
+
</div>
|
346
|
+
<div class='source'>
|
347
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000085-source'); return false">
|
348
|
+
[show source]
|
349
|
+
</a>
|
350
|
+
<pre id='M000085-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 131</span>
131: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">o</span>, <span class="ruby-identifier">parent_tag</span> = <span class="ruby-keyword kw">nil</span>)
132: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>
133: <span class="ruby-identifier">namespace</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:default_namespace</span>]
134: <span class="ruby-keyword kw">else</span>
135: <span class="ruby-identifier">namespace</span> = <span class="ruby-value str">''</span>
136: <span class="ruby-identifier">name</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">ROOT_TAG_NAME</span>
137: <span class="ruby-keyword kw">end</span>
138: 
139: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent_tag</span>.<span class="ruby-identifier">nil?</span>
140: <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span>)
141: <span class="ruby-keyword kw">else</span>
142: <span class="ruby-identifier">parent_tag</span>.<span class="ruby-identifier">new_child</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span>)
143: <span class="ruby-keyword kw">end</span>
144: <span class="ruby-keyword kw">end</span></pre>
|
351
|
+
</div>
|
352
|
+
</div>
|
353
|
+
<div class='method public-instance' id='method-M000084'>
|
354
|
+
<a name='M000084'></a>
|
355
|
+
<div class='synopsis'>
|
356
|
+
<span class='name'>reference_object</span>
|
357
|
+
<span class='arguments'>(o, oid = nil)</span>
|
358
|
+
</div>
|
359
|
+
<div class='description'>
|
360
|
+
<p>
|
361
|
+
References the provided object if it is not already referenced. If the
|
362
|
+
object is referenced already, returns the corresponding <a
|
363
|
+
href="Serializer/Ref.html">Ref</a>. The reference counter is not
|
364
|
+
incremented by this method.
|
365
|
+
</p>
|
366
|
+
<table>
|
367
|
+
<tr><td valign="top"><em>oid</em>:</td><td>the Object ID (ignore if serializing, provide if deserializing).
|
368
|
+
|
369
|
+
</td></tr>
|
370
|
+
</table>
|
371
|
+
</div>
|
372
|
+
<div class='source'>
|
373
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000084-source'); return false">
|
374
|
+
[show source]
|
375
|
+
</a>
|
376
|
+
<pre id='M000084-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 109</span>
109: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reference_object</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">oid</span> = <span class="ruby-keyword kw">nil</span>)
110: <span class="ruby-identifier">ref</span> = <span class="ruby-ivar">@ref_by_object</span>[<span class="ruby-identifier">o</span>]
111: 
112: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">ref</span>
113: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">oid</span>
114: <span class="ruby-identifier">oid</span> = <span class="ruby-ivar">@next_oid</span>
115: <span class="ruby-ivar">@next_oid</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
116: <span class="ruby-keyword kw">end</span>
117: 
118: <span class="ruby-identifier">ref</span> = <span class="ruby-constant">Ref</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">oid</span>)
119: <span class="ruby-ivar">@ref_by_oid</span>[<span class="ruby-identifier">oid</span>] = <span class="ruby-ivar">@ref_by_object</span>[<span class="ruby-identifier">o</span>] = <span class="ruby-identifier">ref</span>
120: <span class="ruby-keyword kw">end</span>
121: 
122: <span class="ruby-identifier">ref</span>
123: <span class="ruby-keyword kw">end</span></pre>
|
377
|
+
</div>
|
378
|
+
</div>
|
379
|
+
<div class='method public-instance' id='method-M000091'>
|
380
|
+
<a name='M000091'></a>
|
381
|
+
<div class='synopsis'>
|
382
|
+
<span class='name'>serializable_property?</span>
|
383
|
+
<span class='arguments'>(o, property_name)</span>
|
384
|
+
</div>
|
385
|
+
<div class='description'>
|
386
|
+
<p>
|
387
|
+
Indicates whether the specified property is a serializable property for the
|
388
|
+
given object.
|
389
|
+
</p>
|
390
|
+
</div>
|
391
|
+
<div class='source'>
|
392
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000091-source'); return false">
|
393
|
+
[show source]
|
394
|
+
</a>
|
395
|
+
<pre id='M000091-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 270</span>
270: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serializable_property?</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>)
271: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">OpenStruct</span>) <span class="ruby-operator">||</span>
272: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-operator">||</span>
273: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-node">"@#{property_name}"</span>) <span class="ruby-operator">||</span>
274: (<span class="ruby-identifier">get_method</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">property_name</span>, <span class="ruby-value">0</span>) <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">get_method</span>(<span class="ruby-identifier">o</span>, <span class="ruby-node">"#{property_name}="</span>, <span class="ruby-value">1</span>))
275: <span class="ruby-keyword kw">end</span></pre>
|
396
|
+
</div>
|
397
|
+
</div>
|
398
|
+
<div class='method public-instance' id='method-M000087'>
|
399
|
+
<a name='M000087'></a>
|
400
|
+
<div class='synopsis'>
|
401
|
+
<span class='name'>serialize</span>
|
402
|
+
<span class='arguments'>(o, tag = nil, parent_tag = nil)</span>
|
403
|
+
</div>
|
404
|
+
<div class='description'>
|
405
|
+
<p>
|
406
|
+
Serializes the given object into a returned <a href="Tag.html">Tag</a>.
|
407
|
+
</p>
|
408
|
+
<table>
|
409
|
+
<tr><td valign="top"><em>tag</em>:</td><td>a <a href="Tag.html">Tag</a> representing ‘o’ (if not provided,
|
410
|
+
one will be created).
|
411
|
+
|
412
|
+
</td></tr>
|
413
|
+
</table>
|
414
|
+
</div>
|
415
|
+
<div class='source'>
|
416
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000087-source'); return false">
|
417
|
+
[show source]
|
418
|
+
</a>
|
419
|
+
<pre id='M000087-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 165</span>
165: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">parent_tag</span> = <span class="ruby-keyword kw">nil</span>)
166: <span class="ruby-identifier">root</span> = <span class="ruby-identifier">serialize_impl</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">tag</span>, <span class="ruby-identifier">parent_tag</span>)
167: 
168: <span class="ruby-comment cmt"># Assign an OID attribute to tags of objects referenced more than once</span>
169: <span class="ruby-ivar">@ref_by_object</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">ref</span><span class="ruby-operator">|</span>
170: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">1</span>
171: <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">tag</span>.<span class="ruby-identifier">set_attribute</span>(<span class="ruby-value str">''</span>, <span class="ruby-constant">OBJECT_ID_ATTR_NAME</span>, <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">oid</span>)
172: <span class="ruby-keyword kw">end</span>
173: }
174: 
175: <span class="ruby-identifier">root</span>
176: <span class="ruby-keyword kw">end</span></pre>
|
420
|
+
</div>
|
421
|
+
</div>
|
422
|
+
<div class='method public-instance' id='method-M000093'>
|
423
|
+
<a name='M000093'></a>
|
424
|
+
<div class='synopsis'>
|
425
|
+
<span class='name'>serialize_array</span>
|
426
|
+
<span class='arguments'>(name, array, parent_tag)</span>
|
427
|
+
</div>
|
428
|
+
<div class='source'>
|
429
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000093-source'); return false">
|
430
|
+
[show source]
|
431
|
+
</a>
|
432
|
+
<pre id='M000093-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 305</span>
305: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_array</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">array</span>, <span class="ruby-identifier">parent_tag</span>)
306: <span class="ruby-identifier">not_literal_values</span> = <span class="ruby-identifier">array</span>.<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">is_coercible?</span>(<span class="ruby-identifier">item</span>) }
307: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">not_literal_values</span>.<span class="ruby-identifier">empty?</span>
308: <span class="ruby-comment cmt"># If it is an array of SDL-compatible values, we use SDL values.</span>
309: <span class="ruby-identifier">array_tag</span> = <span class="ruby-identifier">new_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">array</span>, <span class="ruby-identifier">parent_tag</span>)
310: <span class="ruby-identifier">array_tag</span>.<span class="ruby-identifier">values</span> = <span class="ruby-identifier">array</span>
311: 
312: <span class="ruby-keyword kw">else</span>
313: <span class="ruby-comment cmt"># Otherwise, we use separate child tags.</span>
314: <span class="ruby-identifier">serialize_array_as_child_tags</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">array</span>, <span class="ruby-identifier">parent_tag</span>)
315: <span class="ruby-keyword kw">end</span>
316: <span class="ruby-keyword kw">end</span></pre>
|
433
|
+
</div>
|
434
|
+
</div>
|
435
|
+
<div class='method public-instance' id='method-M000094'>
|
436
|
+
<a name='M000094'></a>
|
437
|
+
<div class='synopsis'>
|
438
|
+
<span class='name'>serialize_array_as_child_tags</span>
|
439
|
+
<span class='arguments'>(name, array, parent_tag)</span>
|
440
|
+
</div>
|
441
|
+
<div class='source'>
|
442
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000094-source'); return false">
|
443
|
+
[show source]
|
444
|
+
</a>
|
445
|
+
<pre id='M000094-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 318</span>
318: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_array_as_child_tags</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">array</span>, <span class="ruby-identifier">parent_tag</span>)
319: <span class="ruby-identifier">array</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
320: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">is_coercible?</span>(<span class="ruby-identifier">item</span>)
321: <span class="ruby-identifier">value_tag</span> = <span class="ruby-identifier">new_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">item</span>, <span class="ruby-identifier">parent_tag</span>)
322: <span class="ruby-identifier">value_tag</span>.<span class="ruby-identifier">values</span> = [<span class="ruby-identifier">item</span>]
323: <span class="ruby-keyword kw">else</span>
324: <span class="ruby-identifier">serialize_object_or_ref</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">item</span>, <span class="ruby-identifier">parent_tag</span>)
325: <span class="ruby-keyword kw">end</span>
326: }
327: <span class="ruby-keyword kw">end</span></pre>
|
446
|
+
</div>
|
447
|
+
</div>
|
448
|
+
<div class='method public-instance' id='method-M000088'>
|
449
|
+
<a name='M000088'></a>
|
450
|
+
<div class='synopsis'>
|
451
|
+
<span class='name'>serialize_hash</span>
|
452
|
+
<span class='arguments'>(hash, tag)</span>
|
453
|
+
</div>
|
454
|
+
<div class='source'>
|
455
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000088-source'); return false">
|
456
|
+
[show source]
|
457
|
+
</a>
|
458
|
+
<pre id='M000088-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 211</span>
211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_hash</span>(<span class="ruby-identifier">hash</span>, <span class="ruby-identifier">tag</span>)
212: <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">each_pair</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
213: <span class="ruby-identifier">serialize_property</span>(<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">tag</span>)
214: }
215: <span class="ruby-identifier">tag</span>
216: <span class="ruby-keyword kw">end</span></pre>
|
459
|
+
</div>
|
460
|
+
</div>
|
461
|
+
<div class='method public-instance' id='method-M000095'>
|
462
|
+
<a name='M000095'></a>
|
463
|
+
<div class='synopsis'>
|
464
|
+
<span class='name'>serialize_object_or_ref</span>
|
465
|
+
<span class='arguments'>(name, value, parent_tag)</span>
|
466
|
+
</div>
|
467
|
+
<div class='description'>
|
468
|
+
<p>
|
469
|
+
Serializes an object (possibly using a reference).
|
470
|
+
</p>
|
471
|
+
<table>
|
472
|
+
<tr><td valign="top"><em>name</em>:</td><td>name used for the object in the parent <a href="Tag.html">Tag</a>
|
473
|
+
|
474
|
+
</td></tr>
|
475
|
+
</table>
|
476
|
+
</div>
|
477
|
+
<div class='source'>
|
478
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000095-source'); return false">
|
479
|
+
[show source]
|
480
|
+
</a>
|
481
|
+
<pre id='M000095-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 333</span>
333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_object_or_ref</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
334: <span class="ruby-identifier">ref</span> = <span class="ruby-identifier">reference_object</span>(<span class="ruby-identifier">value</span>)
335: <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">inc</span>
336: 
337: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
338: <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">tag</span> = <span class="ruby-identifier">new_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
339: <span class="ruby-identifier">serialize_impl</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">tag</span>)
340: <span class="ruby-keyword kw">else</span>
341: <span class="ruby-identifier">new_ref_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">ref</span>, <span class="ruby-identifier">parent_tag</span>)
342: <span class="ruby-keyword kw">end</span>
343: <span class="ruby-keyword kw">end</span></pre>
|
482
|
+
</div>
|
483
|
+
</div>
|
484
|
+
<div class='method public-instance' id='method-M000089'>
|
485
|
+
<a name='M000089'></a>
|
486
|
+
<div class='synopsis'>
|
487
|
+
<span class='name'>serialize_plain_object</span>
|
488
|
+
<span class='arguments'>(o, tag)</span>
|
489
|
+
</div>
|
490
|
+
<div class='source'>
|
491
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000089-source'); return false">
|
492
|
+
[show source]
|
493
|
+
</a>
|
494
|
+
<pre id='M000089-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 218</span>
218: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_plain_object</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">tag</span>)
219: <span class="ruby-identifier">processed_properties</span> = {}
220: 
221: <span class="ruby-comment cmt"># Read+write attributes are used rather than variables</span>
222: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">methods</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
223: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/\w/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-comment cmt"># check this is not an operator</span>
224: <span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^([^=]+)=$/</span> <span class="ruby-comment cmt"># check setter name pattern</span>
225: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">get_method</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">name</span>, <span class="ruby-value">1</span>)
226: <span class="ruby-identifier">getter_name</span> = <span class="ruby-identifier">$1</span>
227: <span class="ruby-identifier">getter</span> = <span class="ruby-identifier">get_method</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">getter_name</span>, <span class="ruby-value">0</span>)
228: 
229: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">getter</span>
230: <span class="ruby-comment cmt"># read and write accessors are defined</span>
231: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">getter</span>.<span class="ruby-identifier">call</span>
232: <span class="ruby-identifier">serialize_property</span>(<span class="ruby-identifier">getter_name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">tag</span>)
233: <span class="ruby-identifier">processed_properties</span>[<span class="ruby-identifier">getter_name</span>] = <span class="ruby-keyword kw">true</span>
234: <span class="ruby-keyword kw">end</span>
235: <span class="ruby-keyword kw">end</span>
236: <span class="ruby-keyword kw">end</span>
237: }
238: 
239: <span class="ruby-comment cmt"># Otherwise, we read instance variables</span>
240: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">variable_name</span><span class="ruby-operator">|</span>
241: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">variable_name</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">variable_name</span>.<span class="ruby-identifier">size</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">variable_name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^@/</span>
242: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">processed_properties</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
243: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">variable_name</span>)
244: <span class="ruby-identifier">serialize_property</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">tag</span>)
245: <span class="ruby-keyword kw">end</span>
246: }
247: 
248: <span class="ruby-identifier">tag</span>
249: <span class="ruby-keyword kw">end</span></pre>
|
495
|
+
</div>
|
496
|
+
</div>
|
497
|
+
<div class='method public-instance' id='method-M000092'>
|
498
|
+
<a name='M000092'></a>
|
499
|
+
<div class='synopsis'>
|
500
|
+
<span class='name'>serialize_property</span>
|
501
|
+
<span class='arguments'>(name, value, parent_tag)</span>
|
502
|
+
</div>
|
503
|
+
<div class='description'>
|
504
|
+
<p>
|
505
|
+
Serializes a property under a given <a href="Tag.html">Tag</a>. Ignores any
|
506
|
+
property whose name is not a valid SDL name.
|
507
|
+
</p>
|
508
|
+
<table>
|
509
|
+
<tr><td valign="top"><em>name</em>:</td><td>property name
|
510
|
+
|
511
|
+
</td></tr>
|
512
|
+
<tr><td valign="top"><em>value</em>:</td><td>property value (SDL value, plain object or Array)
|
513
|
+
|
514
|
+
</td></tr>
|
515
|
+
</table>
|
516
|
+
</div>
|
517
|
+
<div class='source'>
|
518
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000092-source'); return false">
|
519
|
+
[show source]
|
520
|
+
</a>
|
521
|
+
<pre id='M000092-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 283</span>
283: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serialize_property</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
284: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_identifier?</span>(<span class="ruby-identifier">name</span>)
285: 
286: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
287: <span class="ruby-identifier">serialize_array</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
288: 
289: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">is_coercible?</span>(<span class="ruby-identifier">value</span>)
290: <span class="ruby-comment cmt"># SDL literal type</span>
291: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:omit_nil_properties</span>]
292: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent_tag</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">ROOT_TAG_NAME</span>
293: <span class="ruby-identifier">value_tag</span> = <span class="ruby-identifier">new_tag</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
294: <span class="ruby-identifier">value_tag</span>.<span class="ruby-identifier">values</span> = [<span class="ruby-identifier">value</span>]
295: <span class="ruby-keyword kw">else</span>
296: <span class="ruby-identifier">parent_tag</span>.<span class="ruby-identifier">set_attribute</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
297: <span class="ruby-keyword kw">end</span>
298: <span class="ruby-keyword kw">end</span>
299: 
300: <span class="ruby-keyword kw">else</span>
301: <span class="ruby-identifier">serialize_object_or_ref</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">parent_tag</span>)
302: <span class="ruby-keyword kw">end</span>
303: <span class="ruby-keyword kw">end</span></pre>
|
522
|
+
</div>
|
523
|
+
</div>
|
524
|
+
<div class='method public-instance' id='method-M000103'>
|
525
|
+
<a name='M000103'></a>
|
526
|
+
<div class='synopsis'>
|
527
|
+
<span class='name'>set_serializable_property</span>
|
528
|
+
<span class='arguments'>(o, name, value)</span>
|
529
|
+
</div>
|
530
|
+
<div class='description'>
|
531
|
+
<p>
|
532
|
+
Sets the given property in the given object. Returns whether the property
|
533
|
+
has been assigned or not.
|
534
|
+
</p>
|
535
|
+
<p>
|
536
|
+
This method could be redefined in order to convert a value to a custom one,
|
537
|
+
for instance.
|
538
|
+
</p>
|
539
|
+
</div>
|
540
|
+
<div class='source'>
|
541
|
+
<a class='source-toggle' href='#' onclick="toggleCode('M000103-source'); return false">
|
542
|
+
[show source]
|
543
|
+
</a>
|
544
|
+
<pre id='M000103-source'> <span class="ruby-comment cmt"># File lib/sdl4r/serializer.rb, line 536</span>
536: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_serializable_property</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
537: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">o</span>
538: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Hash</span>
539: <span class="ruby-identifier">o</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
540: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
541: 
542: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">OpenStruct</span>
543: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">send</span> <span class="ruby-node">"#{name}="</span>, <span class="ruby-identifier">value</span>
544: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
545: 
546: <span class="ruby-keyword kw">else</span>
547: <span class="ruby-identifier">accessor_name</span> = <span class="ruby-node">"#{name}="</span>
548: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">accessor_name</span>)
549: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">send</span> <span class="ruby-identifier">accessor_name</span>, <span class="ruby-identifier">value</span>
550: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
551: 
552: <span class="ruby-keyword kw">else</span>
553: <span class="ruby-identifier">variable_name</span> = <span class="ruby-node">"@#{name}"</span>
554: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-identifier">variable_name</span>)
555: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">variable_name</span>, <span class="ruby-identifier">value</span>)
556: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
557: 
558: <span class="ruby-keyword kw">else</span>
559: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
560: <span class="ruby-keyword kw">end</span>
561: <span class="ruby-keyword kw">end</span>
562: <span class="ruby-keyword kw">end</span>
563: <span class="ruby-keyword kw">end</span></pre>
|
545
|
+
</div>
|
546
|
+
</div>
|
547
|
+
</div>
|
548
|
+
</div>
|
549
|
+
</div>
|
550
|
+
</div>
|
551
|
+
<div id='footer-push'></div>
|
552
|
+
</div>
|
553
|
+
<div id='footer'>
|
554
|
+
<a href="http://github.com/mislav/hanna/tree/master"><strong>Hanna</strong> RDoc template</a>
|
555
|
+
</div>
|
556
|
+
</body>
|
557
|
+
</html>
|