doc/api/classes/ActionWebService/Struct.html
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Class: ActionWebService::Struct</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
<script type="text/javascript">
// <![CDATA[
function popupCode( url ) {
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
}
function toggleCode( id ) {
if ( document.getElementById )
elem = document.getElementById( id );
else if ( document.all )
elem = eval( "document.all." + id );
else
return false;
elemStyle = elem.style;
if ( elemStyle.display != "block" ) {
elemStyle.display = "block"
} else {
elemStyle.display = "none"
}
return true;
}
// Make codeblocks hidden by default
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
// ]]>
</script>
</head>
<body>
<div id="classHeader">
<table class="header-table">
<tr class="top-aligned-row">
<td><strong>Class</strong></td>
<td class="class-name-in-header">ActionWebService::Struct</td>
</tr>
<tr class="top-aligned-row">
<td><strong>In:</strong></td>
<td>
<a href="../../files/vendor/rails/actionwebservice/lib/action_web_service/struct_rb.html">
vendor/rails/actionwebservice/lib/action_web_service/struct.rb
</a>
<br />
</td>
</tr>
<tr class="top-aligned-row">
<td><strong>Parent:</strong></td>
<td>
Object
</td>
</tr>
</table>
</div>
<!-- banner header -->
<div id="bodyContent">
<div id="contextContent">
<div id="description">
<p>
To send structured types across the wire, derive from <a
href="Struct.html">ActionWebService::Struct</a>, and use <tt><a
href="Struct.html#M000489">member</a></tt> to declare structure members.
</p>
<p>
<a href="Struct.html">ActionWebService::Struct</a> should be used in method
signatures when you want to accept or return structured types that have no
Active Record model class representations, or you don‘t want to
expose your entire Active Record model to remote callers.
</p>
<h3>Example</h3>
<pre>
class Person < ActionWebService::Struct
member :id, :int
member :firstnames, [:string]
member :lastname, :string
member :email, :string
end
person = Person.new(:id => 5, :firstname => 'john', :lastname => 'doe')
</pre>
<p>
Active Record model classes are already implicitly supported in method
signatures.
</p>
</div>
</div>
<div id="method-list">
<h3 class="section-bar">Methods</h3>
<div class="name-list">
<a href="#M000487">[]</a>
<a href="#M000488">each_pair</a>
<a href="#M000489">member</a>
<a href="#M000486">new</a>
</div>
</div>
</div>
<!-- if includes -->
<div id="includes">
<h3 class="section-bar">Included Modules</h3>
<div id="includes-list">
<span class="include-name">Reloadable::Deprecated</span>
</div>
</div>
<div id="section">
<!-- if method_list -->
<div id="methods">
<h3 class="section-bar">Public Class methods</h3>
<div id="method-M000489" class="method-detail">
<a name="M000489"></a>
<div class="method-heading">
<a href="#M000489" class="method-signature">
<span class="method-name">member</span><span class="method-args">(name, type)</span>
</a>
</div>
<div class="method-description">
<p>
Creates a structure <a href="Struct.html#M000489">member</a> with the
specified <tt>name</tt> and <tt>type</tt>. Generates accessor methods for
reading and writing the <a href="Struct.html#M000489">member</a> value.
</p>
<p><a class="source-toggle" href="#"
onclick="toggleCode('M000489-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000489-source">
<pre>
<span class="ruby-comment cmt"># File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 49</span>
49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">member</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span>)
50: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>
51: <span class="ruby-identifier">type</span> = <span class="ruby-constant">ActionWebService</span><span class="ruby-operator">::</span><span class="ruby-constant">SignatureTypes</span>.<span class="ruby-identifier">canonical_signature_entry</span>({ <span class="ruby-identifier">name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">type</span> }, <span class="ruby-value">0</span>)
52: <span class="ruby-identifier">write_inheritable_hash</span>(<span class="ruby-value str">"struct_members"</span>, <span class="ruby-identifier">name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">type</span>)
53: <span class="ruby-identifier">class_eval</span> <span class="ruby-value str">"def \#{name}; @\#{name}; end\ndef \#{name}=(value); @\#{name} = value; end\n"</span>
54: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<div id="method-M000486" class="method-detail">
<a name="M000486"></a>
<div class="method-heading">
<a href="#M000486" class="method-signature">
<span class="method-name">new</span><span class="method-args">(values={})</span>
</a>
</div>
<div class="method-description">
<p>
If a Hash is given as argument to an <a
href="Struct.html">ActionWebService::Struct</a> constructor, it can contain
initial values for the structure <a href="Struct.html#M000489">member</a>.
</p>
<p><a class="source-toggle" href="#"
onclick="toggleCode('M000486-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000486-source">
<pre>
<span class="ruby-comment cmt"># File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 28</span>
28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">values</span>={})
29: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">values</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
30: <span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">__send__</span>(<span class="ruby-value str">'%s='</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">v</span>)}
31: <span class="ruby-keyword kw">end</span>
32: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<h3 class="section-bar">Public Instance methods</h3>
<div id="method-M000487" class="method-detail">
<a name="M000487"></a>
<div class="method-heading">
<a href="#M000487" class="method-signature">
<span class="method-name">[]</span><span class="method-args">(name)</span>
</a>
</div>
<div class="method-description">
<p>
The <a href="Struct.html#M000489">member</a> with the given name
</p>
<p><a class="source-toggle" href="#"
onclick="toggleCode('M000487-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000487-source">
<pre>
<span class="ruby-comment cmt"># File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 35</span>
35: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
36: <span class="ruby-identifier">send</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>)
37: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<div id="method-M000488" class="method-detail">
<a name="M000488"></a>
<div class="method-heading">
<a href="#M000488" class="method-signature">
<span class="method-name">each_pair</span><span class="method-args">() {|name, self.__send__(name)| ...}</span>
</a>
</div>
<div class="method-description">
<p>
Iterates through each <a href="Struct.html#M000489">member</a>
</p>
<p><a class="source-toggle" href="#"
onclick="toggleCode('M000488-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000488-source">
<pre>
<span class="ruby-comment cmt"># File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 40</span>
40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_pair</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
41: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">members</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span><span class="ruby-operator">|</span>
42: <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">name</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">name</span>)
43: <span class="ruby-keyword kw">end</span>
44: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div id="validator-badges">
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
</div>
</body>
</html>