503 lines
20 KiB
HTML
503 lines
20 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>
|
||
Class: Rex::Transformer
|
||
|
||
— Documentation by YARD 0.9.37
|
||
|
||
</title>
|
||
|
||
<link rel="stylesheet" href="../css/style.css" type="text/css" />
|
||
|
||
<link rel="stylesheet" href="../css/common.css" type="text/css" />
|
||
|
||
<script type="text/javascript">
|
||
pathId = "Rex::Transformer";
|
||
relpath = '../';
|
||
</script>
|
||
|
||
|
||
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
||
|
||
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
||
|
||
|
||
</head>
|
||
<body>
|
||
<div class="nav_wrap">
|
||
<iframe id="nav" src="../class_list.html?1"></iframe>
|
||
<div id="resizer"></div>
|
||
</div>
|
||
|
||
<div id="main" tabindex="-1">
|
||
<div id="header">
|
||
<div id="menu">
|
||
|
||
<a href="../_index.html">Index (T)</a> »
|
||
<span class='title'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span>
|
||
»
|
||
<span class="title">Transformer</span>
|
||
|
||
</div>
|
||
|
||
<div id="search">
|
||
|
||
<a class="full_list_link" id="class_list_link"
|
||
href="../class_list.html">
|
||
|
||
<svg width="24" height="24">
|
||
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
||
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
||
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
||
</svg>
|
||
</a>
|
||
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
|
||
<div id="content"><h1>Class: Rex::Transformer
|
||
|
||
|
||
|
||
</h1>
|
||
<div class="box_info">
|
||
|
||
<dl>
|
||
<dt>Inherits:</dt>
|
||
<dd>
|
||
<span class="inheritName">Object</span>
|
||
|
||
<ul class="fullTree">
|
||
<li>Object</li>
|
||
|
||
<li class="next">Rex::Transformer</li>
|
||
|
||
</ul>
|
||
<a href="#" class="inheritanceTree">show all</a>
|
||
|
||
</dd>
|
||
</dl>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Defined in:</dt>
|
||
<dd>lib/rex/transformer.rb</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
<h2>Overview</h2><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Transformer - more than meets the eye!</p>
|
||
|
||
<p>This class, aside from having a kickass name, is responsible for translating object instances of one or more types into a single list instance of one or more types. This is useful for translating object instances that be can either strings or an array of strings into an array of strings, for instance. It lets you make things take a uniform structure in an abstract manner.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h2>
|
||
Class Method Summary
|
||
<small><a href="#" class="summary_toggle">collapse</a></small>
|
||
</h2>
|
||
|
||
<ul class="summary">
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#bomb_translation-class_method" title="bomb_translation (class method)">.<strong>bomb_translation</strong>(src_instance, target) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>:nodoc:.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#transform-class_method" title="transform (class method)">.<strong>transform</strong>(src_instance, dst_class, supported_classes, target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Translates the object instance supplied in src_instance to an instance of dst_class.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#transform_single-class_method" title="transform_single (class method)">.<strong>transform_single</strong>(src_instance, dst_instance, supported_classes, target) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Transform a single source instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<div id="class_method_details" class="method_details_list">
|
||
<h2>Class Method Details</h2>
|
||
|
||
|
||
<div class="method_details first">
|
||
<h3 class="signature first" id="bomb_translation-class_method">
|
||
|
||
.<strong>bomb_translation</strong>(src_instance, target) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>:nodoc:</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
103
|
||
104
|
||
105
|
||
106
|
||
107
|
||
108
|
||
109
|
||
110
|
||
111</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/rex/transformer.rb', line 103</span>
|
||
|
||
<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_bomb_translation'>bomb_translation</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span> <span class='comment'># :nodoc:
|
||
</span> <span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Invalid source class (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>"</span></span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>!=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_error'>error</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_target'>target</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='comma'>,</span> <span class='id identifier rubyid_caller'>caller</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="transform-class_method">
|
||
|
||
.<strong>transform</strong>(src_instance, dst_class, supported_classes, target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Translates the object instance supplied in src_instance to an instance of dst_class. The dst_class parameter’s instance must support the << operator. An example call to this method looks something like:</p>
|
||
|
||
<p>Transformer.transform(string, Array, [ String ], target)</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
25
|
||
26
|
||
27
|
||
28
|
||
29
|
||
30
|
||
31
|
||
32
|
||
33
|
||
34
|
||
35
|
||
36
|
||
37
|
||
38
|
||
39
|
||
40</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/rex/transformer.rb', line 25</span>
|
||
|
||
<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform'>transform</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_class'>dst_class</span><span class='comma'>,</span> <span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_target'>target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_dst_instance'>dst_instance</span> <span class='op'>=</span> <span class='id identifier rubyid_dst_class'>dst_class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_src_inst'>src_inst</span><span class='op'>|</span>
|
||
<span class='const'><span class='object_link'><a href="" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform_single'><span class='object_link'><a href="#transform_single-class_method" title="Rex::Transformer.transform_single (method)">transform_single</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_src_inst'>src_inst</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_instance'>dst_instance</span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>elsif</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>NilClass</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='const'><span class='object_link'><a href="" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform_single'><span class='object_link'><a href="#transform_single-class_method" title="Rex::Transformer.transform_single (method)">transform_single</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_instance'>dst_instance</span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_dst_instance'>dst_instance</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="transform_single-class_method">
|
||
|
||
.<strong>transform_single</strong>(src_instance, dst_instance, supported_classes, target) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Transform a single source instance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
47
|
||
48
|
||
49
|
||
50
|
||
51
|
||
52
|
||
53
|
||
54
|
||
55
|
||
56
|
||
57
|
||
58
|
||
59
|
||
60
|
||
61
|
||
62
|
||
63
|
||
64
|
||
65
|
||
66
|
||
67
|
||
68
|
||
69
|
||
70
|
||
71
|
||
72
|
||
73
|
||
74
|
||
75
|
||
76
|
||
77
|
||
78
|
||
79
|
||
80
|
||
81
|
||
82
|
||
83
|
||
84
|
||
85
|
||
86
|
||
87
|
||
88
|
||
89
|
||
90
|
||
91
|
||
92
|
||
93
|
||
94
|
||
95
|
||
96
|
||
97
|
||
98
|
||
99
|
||
100
|
||
101</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/rex/transformer.rb', line 47</span>
|
||
|
||
<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform_single'>transform_single</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_dst_instance'>dst_instance</span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='comment'># If the src instance's class is supported, just add it to the dst
|
||
</span> <span class='comment'># instance
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_dst_instance'>dst_instance</span> <span class='op'><<</span> <span class='id identifier rubyid_src_instance'>src_instance</span>
|
||
<span class='comment'># If the src instance's class is an array, then we should check to see
|
||
</span> <span class='comment'># if any of the supporting classes support from_a.
|
||
</span> <span class='kw'>elsif</span> <span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
|
||
<span class='comment'># Walk each supported class calling from_a if exported
|
||
</span> <span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_sup_class'>sup_class</span><span class='op'>|</span>
|
||
<span class='kw'>next</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_sup_class'>sup_class</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>from_a</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='op'>==</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>=</span> <span class='id identifier rubyid_sup_class'>sup_class</span><span class='period'>.</span><span class='id identifier rubyid_from_a'>from_a</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>!=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_dst_instance'>dst_instance</span> <span class='op'><<</span> <span class='id identifier rubyid_new_src_instance'>new_src_instance</span>
|
||
<span class='kw'>break</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='comment'># If we don't have a valid new src instance, then we suck
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_bomb_translation'>bomb_translation</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If the source instance is a string, query each of the supported
|
||
</span> <span class='comment'># classes to see if they can serialize it to their particular data
|
||
</span> <span class='comment'># type.
|
||
</span> <span class='kw'>elsif</span> <span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
|
||
<span class='comment'># Walk each supported class calling from_s if exported
|
||
</span> <span class='id identifier rubyid_supported_classes'>supported_classes</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_sup_class'>sup_class</span><span class='op'>|</span>
|
||
<span class='kw'>next</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_sup_class'>sup_class</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>from_s</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='op'>==</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>=</span> <span class='id identifier rubyid_sup_class'>sup_class</span><span class='period'>.</span><span class='id identifier rubyid_from_s'>from_s</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>!=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_dst_instance'>dst_instance</span> <span class='op'><<</span> <span class='id identifier rubyid_new_src_instance'>new_src_instance</span>
|
||
<span class='kw'>break</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='comment'># If we don't have a valid new src instance, then we suck
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_new_src_instance'>new_src_instance</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_bomb_translation'>bomb_translation</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='comment'># Otherwise, bomb translation
|
||
</span> <span class='kw'>else</span>
|
||
<span class='id identifier rubyid_bomb_translation'>bomb_translation</span><span class='lparen'>(</span><span class='id identifier rubyid_src_instance'>src_instance</span><span class='comma'>,</span> <span class='id identifier rubyid_target'>target</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="footer">
|
||
Generated on Fri May 8 17:04:05 2026 by
|
||
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||
0.9.37 (ruby-3.1.5).
|
||
</div>
|
||
|
||
</div>
|
||
</body>
|
||
</html> |