<?xml version="1.0" encoding="utf-8"?> <!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>Rumai::Node</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" /> <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" /> <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="banner"> <h1> <span class="type">Class</span> Rumai::Node <span class="parent">< <a href="../Object.html">Object</a> </span> </h1> <ul class="files"> <li><a href="../../files/lib/rumai/fs_rb.html">lib/rumai/fs.rb</a></li> </ul> </div> <div id="bodyContent"> <div id="content"> <div class="description"> <p> An entry in the <a href="IXP.html">IXP</a> file system. </p> </div> <div class="sectiontitle">Methods</div> <dl class="methods"> <dt>#</dt> <dd> <ul> <li><a href="#M000013">[]</a></li> </ul> </dd> <dt>C</dt> <dd> <ul> <li><a href="#M000017">children</a>,</li> <li><a href="#M000019">clear</a>,</li> <li><a href="#M000009">create</a></li> </ul> </dd> <dt>D</dt> <dd> <ul> <li><a href="#M000003">directory?</a></li> </ul> </dd> <dt>E</dt> <dd> <ul> <li><a href="#M000018">each</a>,</li> <li><a href="#M000007">each_line</a>,</li> <li><a href="#M000004">entries</a>,</li> <li><a href="#M000002">exist?</a></li> </ul> </dd> <dt>M</dt> <dd> <ul> <li><a href="#M000020">method_missing</a></li> </ul> </dd> <dt>N</dt> <dd> <ul> <li><a href="#M000000">new</a></li> </ul> </dd> <dt>O</dt> <dd> <ul> <li><a href="#M000005">open</a></li> </ul> </dd> <dt>P</dt> <dd> <ul> <li><a href="#M000016">parent</a></li> </ul> </dd> <dt>R</dt> <dd> <ul> <li><a href="#M000006">read</a>,</li> <li><a href="#M000012">remove</a></li> </ul> </dd> <dt>S</dt> <dd> <ul> <li><a href="#M000001">stat</a></li> </ul> </dd> <dt>W</dt> <dd> <ul> <li><a href="#M000008">write</a></li> </ul> </dd> </dl> <div class="sectiontitle">Included Modules</div> <ul> <li> <span>Enumerable</span> START:includes </li> </ul> <div class="sectiontitle">Attributes</div> <table border='0' cellpadding='5'> <tr valign='top'> <td class='attr-rw'> [R] </td> <td class='attr-name'>path</td> <td class='attr-desc'></td> </tr> </table> <div class="sectiontitle">Class Public methods</div> <div class="method"> <div class="title" id="M000000"> <a name="M000000"></a><b>new</b>(path) </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000000_source')" id="l_M000000_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L39" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000000_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 39</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">path</span> <span class="ruby-ivar">@path</span> = <span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">squeeze</span>(<span class="ruby-value str">'/'</span>) <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="sectiontitle">Instance Public methods</div> <div class="method"> <div class="title" id="M000013"> <a name="M000013"></a><b>[]</b>(sub_path) </div> <div class="description"> <p> Returns the given sub-path as a <a href="Node.html">Node</a> object. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000013_source')" id="l_M000013_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L132" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000013_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 132</span> <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span> <span class="ruby-identifier">sub_path</span> <span class="ruby-ivar">@@cache</span>[ <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@path</span>, <span class="ruby-identifier">sub_path</span>.<span class="ruby-identifier">to_s</span>) ] <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000017"> <a name="M000017"></a><b>children</b>() </div> <div class="description"> <p> Returns all child nodes of this node. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000017_source')" id="l_M000017_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L146" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000017_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 146</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">children</span> <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">map!</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">c</span>] } <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000019"> <a name="M000019"></a><b>clear</b>() </div> <div class="description"> <p> Deletes all child nodes. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000019_source')" id="l_M000019_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L162" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000019_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 162</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear</span> <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">remove</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000009"> <a name="M000009"></a><b>create</b>(*args) </div> <div class="description"> <p> Creates a file corresponding to this node on the <a href="IXP.html">IXP</a> server. </p> <p> See Rumai::IXP::Client#create for details. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000009_source')" id="l_M000009_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L118" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000009_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 118</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span> <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">create</span> <span class="ruby-ivar">@path</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000003"> <a name="M000003"></a><b>directory?</b>() </div> <div class="description"> <p> Tests if this node is a directory. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L66" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000003_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 66</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">directory?</span> <span class="ruby-identifier">exist?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">directory?</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000018"> <a name="M000018"></a><b>each</b>(&block) </div> <div class="description"> <p> Iterates through each child of this directory. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000018_source')" id="l_M000018_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L155" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000018_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 155</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>) <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000007"> <a name="M000007"></a><b>each_line</b>(&block) </div> <div class="description"> <p> Invokes the given block for every line in the content of this node. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L98" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000007_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 98</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_line</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-comment cmt">#:yields: line</span> <span class="ruby-identifier">open</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">chunk</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">read</span>(<span class="ruby-keyword kw">true</span>)).<span class="ruby-identifier">empty?</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">each_line</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000004"> <a name="M000004"></a><b>entries</b>() </div> <div class="description"> <p> Returns the names of all files in this directory. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L73" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000004_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 73</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">entries</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">entries</span> <span class="ruby-ivar">@path</span> <span class="ruby-keyword kw">rescue</span> [] <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000002"> <a name="M000002"></a><b>exist?</b>() </div> <div class="description"> <p> Tests if this node exists on the <a href="IXP.html">IXP</a> server. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000002_source')" id="l_M000002_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L55" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000002_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 55</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">exist?</span> <span class="ruby-keyword kw">begin</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stat</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">IXP</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000020"> <a name="M000020"></a><b> node.child → Node </b> </div> <div class="description"> <p> Provides access to child nodes through method calls. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000020_source')" id="l_M000020_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L173" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000020_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 173</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span> <span class="ruby-identifier">meth</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-identifier">child</span> = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">meth</span>] <span class="ruby-comment cmt"># speed up future accesses</span> (<span class="ruby-keyword kw">class</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">self</span>; <span class="ruby-keyword kw">self</span>; <span class="ruby-keyword kw">end</span>).<span class="ruby-identifier">instance_eval</span> <span class="ruby-keyword kw">do</span> <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">meth</span> <span class="ruby-keyword kw">do</span> <span class="ruby-identifier">child</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-identifier">child</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000005"> <a name="M000005"></a><b>open</b>(mode = 'r', &block) </div> <div class="description"> <p> Opens this node for I/O access. </p> <p> See Rumai::IXP::Client#open for details. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L82" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000005_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 82</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span> <span class="ruby-identifier">mode</span> = <span class="ruby-value str">'r'</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">open</span> <span class="ruby-ivar">@path</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000016"> <a name="M000016"></a><b>parent</b>() </div> <div class="description"> <p> Returns the parent node of this node. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000016_source')" id="l_M000016_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L139" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000016_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 139</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parent</span> <span class="ruby-ivar">@@cache</span>[ <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-ivar">@path</span>) ] <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000006"> <a name="M000006"></a><b>read</b>(*args) </div> <div class="description"> <p> Returns the entire content of this node. </p> <p> See Rumai::IXP::Client#read for details. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L91" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000006_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 91</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span> <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">read</span> <span class="ruby-ivar">@path</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000012"> <a name="M000012"></a><b>remove</b>() </div> <div class="description"> <p> Deletes the file corresponding to this node on the <a href="IXP.html">IXP</a> server. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000012_source')" id="l_M000012_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L125" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000012_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 125</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">remove</span> <span class="ruby-ivar">@path</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000001"> <a name="M000001"></a><b>stat</b>() </div> <div class="description"> <p> Returns file statistics about this node. </p> <p> See Rumai::IXP::Client#stat for details. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L48" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000001_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 48</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">stat</span> <span class="ruby-ivar">@path</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div class="method"> <div class="title" id="M000008"> <a name="M000008"></a><b>write</b>(content) </div> <div class="description"> <p> Writes the given content to this node. </p> </div> <div class="sourcecode"> <p class="source-link"> Source: <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show</a> | <a href="http://github.com/sunaku/rumai/blob/5fcf09b89976a53dd9346e335a1803b337e0c447/lib/rumai/fs.rb#L109" target="_blank" class="github_url">on GitHub</a> </p> <div id="M000008_source" class="dyn-source"> <pre><span class="ruby-comment cmt"># File lib/rumai/fs.rb, line 109</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">write</span> <span class="ruby-identifier">content</span> <span class="ruby-constant">IXP_AGENT</span>.<span class="ruby-identifier">write</span> <span class="ruby-ivar">@path</span>, <span class="ruby-identifier">content</span> <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> </div> </div> </body> </html>