Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > ca2dcd2ff03748711a5ce8dddb302591 > files > 82

ruby-sqlite3-1.2.2-3mdv2010.0.i586.rpm

<?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>
  <head>
    <title>Class: SQLite3::Translator</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />

    <script language="JavaScript" type="text/javascript">
    // <![CDATA[

        function toggleSource( id )
        {
          var elem
          var link

          if( document.getElementById )
          {
            elem = document.getElementById( id )
            link = document.getElementById( "l_" + id )
          }
          else if ( document.all )
          {
            elem = eval( "document.all." + id )
            link = eval( "document.all.l_" + id )
          }
          else
            return false;

          if( elem.style.display == "block" )
          {
            elem.style.display = "none"
            link.innerHTML = "show source"
          }
          else
          {
            elem.style.display = "block"
            link.innerHTML = "hide source"
          }
        }

        function openCode( url )
        {
          window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
        }
      // ]]>
    </script>
  </head>

  <body>
  <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
  <td class="file-title"><span class="file-title-prefix">Class</span><br />SQLite3::Translator</td>
  <td align="right">
    <table cellspacing=0 cellpadding=2>
      <tr valign="top">
        <td>In:</td>
        <td>
<a href="../../files/lib/sqlite3/translator_rb.html">lib/sqlite3/translator.rb</a>
        </td>
      </tr>
    <tr>
      <td>Parent:</td>
      <td>
Object
     </td>
   </tr>
         </table>
        </td>
        </tr>
      </table>
 <!-- banner header -->

  <div id="bodyContent">
      <div id="content">

  <div class="description"><p>
The <a href="Translator.html">Translator</a> class encapsulates the logic
and callbacks necessary for converting string data to a value of some
specified type. Every <a href="Database.html">Database</a> instance may
have a <a href="Translator.html">Translator</a> instance, in order to
assist in type translation (Database#type_translation).
</p>
<p>
Further, applications may define their own custom type translation logic by
registering translator blocks with the corresponding database&#8216;s
translator instance (<a
href="Database.html#M000099">Database#translator</a>).
</p>
</div>



  <div class="sectiontitle">Methods</div>
  <ul>
  <li><a href="#M000072">add_translator</a></li>
  <li><a href="#M000071">new</a></li>
  <li><a href="#M000073">translate</a></li>
  </ul>






<div class="sectiontitle">Public Class methods</div>
<div class="method">
  <div class="title">
    <a name="M000071"></a><b>new</b>()
  </div>
  <div class="description">
  <p>
Create a <a href="Translator.html#M000071">new</a> <a
href="Translator.html">Translator</a> instance. It will be preinitialized
with default translators for most SQL data types.
</p>
  </div>
<div class="sourcecode">
  <p class="source-link">[ <a href="javascript:toggleSource('M000071_source')" id="l_M000071_source">show source</a> ]</p>
  <div id="M000071_source" class="dyn-source">
<pre>
    <span class="ruby-comment cmt"># File lib/sqlite3/translator.rb, line 18</span>
18:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
19:       <span class="ruby-ivar">@translators</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">proc</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>,<span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">value</span> } )
20:       <span class="ruby-ivar">@type_name_cache</span> = {}
21:       <span class="ruby-identifier">register_default_translators</span>
22:     <span class="ruby-keyword kw">end</span>
</pre>
  </div>
</div>
</div>
<div class="sectiontitle">Public Instance methods</div>
<div class="method">
  <div class="title">
    <a name="M000072"></a><b>add_translator</b>( type ) {|type, value| ...}
  </div>
  <div class="description">
  <p>
Add a <a href="Translator.html#M000071">new</a> translator block, which
will be invoked to process type translations to the given type. The type
should be an SQL datatype, and may include parentheses (i.e.,
&quot;VARCHAR(30)&quot;). However, any parenthetical information is
stripped off and discarded, so type translation decisions are made solely
on the &quot;base&quot; type name.
</p>
<p>
The translator block itself should accept two parameters, &quot;type&quot;
and &quot;value&quot;. In this case, the &quot;type&quot; is the full type
name (including parentheses), so the block itself may include logic for
changing how a type is translated based on the additional data. The
&quot;value&quot; parameter is the (string) data to convert.
</p>
<p>
The block should return the translated value.
</p>
  </div>
<div class="sourcecode">
  <p class="source-link">[ <a href="javascript:toggleSource('M000072_source')" id="l_M000072_source">show source</a> ]</p>
  <div id="M000072_source" class="dyn-source">
<pre>
    <span class="ruby-comment cmt"># File lib/sqlite3/translator.rb, line 37</span>
37:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_translator</span>( <span class="ruby-identifier">type</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> ) <span class="ruby-comment cmt"># :yields: type, value</span>
38:       <span class="ruby-ivar">@translators</span>[ <span class="ruby-identifier">type_name</span>( <span class="ruby-identifier">type</span> ) ] = <span class="ruby-identifier">block</span>
39:     <span class="ruby-keyword kw">end</span>
</pre>
  </div>
</div>
</div>
<div class="method">
  <div class="title">
    <a name="M000073"></a><b>translate</b>( type, value )
  </div>
  <div class="description">
  <p>
Translate the given string value to a value of the given type. In the
absense of an installed translator block for the given type, the value
itself is always returned. Further, <tt>nil</tt> values are never
translated, and are always passed straight through regardless of the type
parameter.
</p>
  </div>
<div class="sourcecode">
  <p class="source-link">[ <a href="javascript:toggleSource('M000073_source')" id="l_M000073_source">show source</a> ]</p>
  <div id="M000073_source" class="dyn-source">
<pre>
    <span class="ruby-comment cmt"># File lib/sqlite3/translator.rb, line 45</span>
45:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate</span>( <span class="ruby-identifier">type</span>, <span class="ruby-identifier">value</span> )
46:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">nil?</span>
47:         <span class="ruby-ivar">@translators</span>[ <span class="ruby-identifier">type_name</span>( <span class="ruby-identifier">type</span> ) ].<span class="ruby-identifier">call</span>( <span class="ruby-identifier">type</span>, <span class="ruby-identifier">value</span> )
48:       <span class="ruby-keyword kw">end</span>
49:     <span class="ruby-keyword kw">end</span>
</pre>
  </div>
</div>
</div>
</div>

  </div>

    </body>
</html>