<!DOCTYPE html>

<html> <head> <meta content=“text/html; charset=UTF-8” http-equiv=“Content-Type”>

<title>class UUID - review-1.7.2 Documentation</title>

<link type=“text/css” media=“screen” href=“./rdoc.css” rel=“stylesheet”>

<script type=“text/javascript”>

var rdoc_rel_prefix = "./";

</script>

<script type=“text/javascript” charset=“utf-8” src=“./js/jquery.js”></script> <script type=“text/javascript” charset=“utf-8” src=“./js/navigation.js”></script> <script type=“text/javascript” charset=“utf-8” src=“./js/search_index.js”></script> <script type=“text/javascript” charset=“utf-8” src=“./js/search.js”></script> <script type=“text/javascript” charset=“utf-8” src=“./js/searcher.js”></script> <script type=“text/javascript” charset=“utf-8” src=“./js/darkfish.js”></script>

<body id=“top” class=“class”> <nav id=“metadata”>

<nav id="home-section" class="section">
<h3 class="section-header">
  <a href="./index.html">Home</a>
  <a href="./table_of_contents.html#classes">Classes</a>
  <a href="./table_of_contents.html#methods">Methods</a>
</h3>

</nav>

<nav id="search-section" class="section project-section" class="initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
  <h3 class="section-header">
    <input type="text" name="search" placeholder="Search" id="search-field"
           title="Type to search, Up and Down to navigate, Enter to load">
  </h3>
</form>

<ul id="search-results" class="initially-hidden"></ul>

</nav>

<div id="file-metadata">
  <nav id="file-list-section" class="section">
<h3 class="section-header">Defined In</h3>
<ul>
  <li>lib/uuid.rb
</ul>

</nav>

</div>

<div id="class-metadata">

  <nav id="parent-class-section" class="section">
<h3 class="section-header">Parent</h3>

<p class="link"><a href="Object.html">Object</a>

</nav>

<!-- Included Modules -->

<nav id=“includes-section” class=“section”>

<h3 class="section-header">Included Modules</h3>

<ul class="link-list">

  <li><span class="include">Comparable</span>

</ul>

</nav>

<!-- Method Quickref -->

<nav id=“method-list-section” class=“section”>

<h3 class="section-header">Methods</h3>

<ul class="link-list">

  <li ><a href="#method-c-create">::create</a>

  <li ><a href="#method-c-create_md5">::create_md5</a>

  <li ><a href="#method-c-create_random">::create_random</a>

  <li ><a href="#method-c-create_sha1">::create_sha1</a>

  <li ><a href="#method-c-new">::new</a>

  <li ><a href="#method-c-pack">::pack</a>

  <li ><a href="#method-c-parse">::parse</a>

  <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>

  <li ><a href="#method-i-3D-3D">#==</a>

  <li ><a href="#method-i-clock">#clock</a>

  <li ><a href="#method-i-eql-3F">#eql?</a>

  <li ><a href="#method-i-guid">#guid</a>

  <li ><a href="#method-i-hash">#hash</a>

  <li ><a href="#method-i-ieee802">#ieee802</a>

  <li ><a href="#method-i-inspect">#inspect</a>

  <li ><a href="#method-i-mac_address">#mac_address</a>

  <li ><a href="#method-i-node">#node</a>

  <li ><a href="#method-i-raw_bytes">#raw_bytes</a>

  <li ><a href="#method-i-time">#time</a>

  <li ><a href="#method-i-to_i">#to_i</a>

  <li ><a href="#method-i-to_int">#to_int</a>

  <li ><a href="#method-i-to_s">#to_s</a>

  <li ><a href="#method-i-to_uri">#to_uri</a>

  <li ><a href="#method-i-unpack">#unpack</a>

  <li ><a href="#method-i-urn">#urn</a>

  <li ><a href="#method-i-version">#version</a>

</ul>

</nav>

</div>

<div id="project-metadata">
  <nav id="fileindex-section" class="section project-section">
<h3 class="section-header">Pages</h3>

<ul>

  <li class="file"><a href="./ChangeLog.html">ChangeLog</a>

  <li class="file"><a href="./README_rdoc.html">README</a>

</ul>

</nav>

  <nav id="classindex-section" class="section project-section">
<h3 class="section-header">Class and Module Index</h3>

<ul class="link-list">

  <li><a href="./EPUBMaker.html">EPUBMaker</a>

  <li><a href="./EPUBMaker/Content.html">EPUBMaker::Content</a>

  <li><a href="./EPUBMaker/EPUBCommon.html">EPUBMaker::EPUBCommon</a>

  <li><a href="./EPUBMaker/EPUBv2.html">EPUBMaker::EPUBv2</a>

  <li><a href="./EPUBMaker/EPUBv3.html">EPUBMaker::EPUBv3</a>

  <li><a href="./EPUBMaker/Producer.html">EPUBMaker::Producer</a>

  <li><a href="./HTMLLayout.html">HTMLLayout</a>

  <li><a href="./LineInput.html">LineInput</a>

  <li><a href="./Object.html">Object</a>

  <li><a href="./ReVIEW.html">ReVIEW</a>

  <li><a href="./ReVIEW/ApplicationError.html">ReVIEW::ApplicationError</a>

  <li><a href="./ReVIEW/Book.html">ReVIEW::Book</a>

  <li><a href="./ReVIEW/Book/Base.html">ReVIEW::Book::Base</a>

  <li><a href="./ReVIEW/Book/BibpaperIndex.html">ReVIEW::Book::BibpaperIndex</a>

  <li><a href="./ReVIEW/Book/Chapter.html">ReVIEW::Book::Chapter</a>

  <li><a href="./ReVIEW/Book/ChapterIndex.html">ReVIEW::Book::ChapterIndex</a>

  <li><a href="./ReVIEW/Book/ChapterSet.html">ReVIEW::Book::ChapterSet</a>

  <li><a href="./ReVIEW/Book/ColumnIndex.html">ReVIEW::Book::ColumnIndex</a>

  <li><a href="./ReVIEW/Book/Compilable.html">ReVIEW::Book::Compilable</a>

  <li><a href="./ReVIEW/Book/FootnoteIndex.html">ReVIEW::Book::FootnoteIndex</a>

  <li><a href="./ReVIEW/Book/FormatRef.html">ReVIEW::Book::FormatRef</a>

  <li><a href="./ReVIEW/Book/HeadlineIndex.html">ReVIEW::Book::HeadlineIndex</a>

  <li><a href="./ReVIEW/Book/IconIndex.html">ReVIEW::Book::IconIndex</a>

  <li><a href="./ReVIEW/Book/ImageFinder.html">ReVIEW::Book::ImageFinder</a>

  <li><a href="./ReVIEW/Book/ImageIndex.html">ReVIEW::Book::ImageIndex</a>

  <li><a href="./ReVIEW/Book/ImageIndex/Item.html">ReVIEW::Book::ImageIndex::Item</a>

  <li><a href="./ReVIEW/Book/IndepImageIndex.html">ReVIEW::Book::IndepImageIndex</a>

  <li><a href="./ReVIEW/Book/IndepImageIndex/Item.html">ReVIEW::Book::IndepImageIndex::Item</a>

  <li><a href="./ReVIEW/Book/Index.html">ReVIEW::Book::Index</a>

  <li><a href="./ReVIEW/Book/ListIndex.html">ReVIEW::Book::ListIndex</a>

  <li><a href="./ReVIEW/Book/NumberlessImageIndex.html">ReVIEW::Book::NumberlessImageIndex</a>

  <li><a href="./ReVIEW/Book/NumberlessImageIndex/Item.html">ReVIEW::Book::NumberlessImageIndex::Item</a>

  <li><a href="./ReVIEW/Book/PageMetric.html">ReVIEW::Book::PageMetric</a>

  <li><a href="./ReVIEW/Book/Part.html">ReVIEW::Book::Part</a>

  <li><a href="./ReVIEW/Book/TableIndex.html">ReVIEW::Book::TableIndex</a>

  <li><a href="./ReVIEW/Book/Volume.html">ReVIEW::Book::Volume</a>

  <li><a href="./ReVIEW/Builder.html">ReVIEW::Builder</a>

  <li><a href="./ReVIEW/Catalog.html">ReVIEW::Catalog</a>

  <li><a href="./ReVIEW/CompileError.html">ReVIEW::CompileError</a>

  <li><a href="./ReVIEW/Compiler.html">ReVIEW::Compiler</a>

  <li><a href="./ReVIEW/Compiler/InlineSyntaxElement.html">ReVIEW::Compiler::InlineSyntaxElement</a>

  <li><a href="./ReVIEW/Compiler/SyntaxElement.html">ReVIEW::Compiler::SyntaxElement</a>

  <li><a href="./ReVIEW/ConfigError.html">ReVIEW::ConfigError</a>

  <li><a href="./ReVIEW/Configure.html">ReVIEW::Configure</a>

  <li><a href="./ReVIEW/EPUBBuilder.html">ReVIEW::EPUBBuilder</a>

  <li><a href="./ReVIEW/EPUBMaker.html">ReVIEW::EPUBMaker</a>

  <li><a href="./ReVIEW/EPUBMaker/ReVIEWHeaderListener.html">ReVIEW::EPUBMaker::ReVIEWHeaderListener</a>

  <li><a href="./ReVIEW/EWBBuilder.html">ReVIEW::EWBBuilder</a>

  <li><a href="./ReVIEW/Error.html">ReVIEW::Error</a>

  <li><a href="./ReVIEW/ErrorUtils.html">ReVIEW::ErrorUtils</a>

  <li><a href="./ReVIEW/FileNotFound.html">ReVIEW::FileNotFound</a>

  <li><a href="./ReVIEW/HTMLBuilder.html">ReVIEW::HTMLBuilder</a>

  <li><a href="./ReVIEW/HTMLTOCPrinter.html">ReVIEW::HTMLTOCPrinter</a>

  <li><a href="./ReVIEW/HTMLToc.html">ReVIEW::HTMLToc</a>

  <li><a href="./ReVIEW/HTMLUtils.html">ReVIEW::HTMLUtils</a>

  <li><a href="./ReVIEW/I18n.html">ReVIEW::I18n</a>

  <li><a href="./ReVIEW/IDGTOCPrinter.html">ReVIEW::IDGTOCPrinter</a>

  <li><a href="./ReVIEW/IDGXMLBuilder.html">ReVIEW::IDGXMLBuilder</a>

  <li><a href="./ReVIEW/INAOBuilder.html">ReVIEW::INAOBuilder</a>

  <li><a href="./ReVIEW/KeyError.html">ReVIEW::KeyError</a>

  <li><a href="./ReVIEW/LATEXBuilder.html">ReVIEW::LATEXBuilder</a>

  <li><a href="./ReVIEW/LaTeXIndex.html">ReVIEW::LaTeXIndex</a>

  <li><a href="./ReVIEW/LaTeXUtils.html">ReVIEW::LaTeXUtils</a>

  <li><a href="./ReVIEW/LaTeXUtils/NKF.html">ReVIEW::LaTeXUtils::NKF</a>

  <li><a href="./ReVIEW/Line.html">ReVIEW::Line</a>

  <li><a href="./ReVIEW/LineInput.html">ReVIEW::LineInput</a>

  <li><a href="./ReVIEW/Location.html">ReVIEW::Location</a>

  <li><a href="./ReVIEW/MARKDOWNBuilder.html">ReVIEW::MARKDOWNBuilder</a>

  <li><a href="./ReVIEW/MakerHelper.html">ReVIEW::MakerHelper</a>

  <li><a href="./ReVIEW/PDFMaker.html">ReVIEW::PDFMaker</a>

  <li><a href="./ReVIEW/Preprocessor.html">ReVIEW::Preprocessor</a>

  <li><a href="./ReVIEW/Preprocessor/Directive.html">ReVIEW::Preprocessor::Directive</a>

  <li><a href="./ReVIEW/Preprocessor/Strip.html">ReVIEW::Preprocessor::Strip</a>

  <li><a href="./ReVIEW/Repository.html">ReVIEW::Repository</a>

  <li><a href="./ReVIEW/SecCounter.html">ReVIEW::SecCounter</a>

  <li><a href="./ReVIEW/SyntaxError.html">ReVIEW::SyntaxError</a>

  <li><a href="./ReVIEW/TEXTBuilder.html">ReVIEW::TEXTBuilder</a>

  <li><a href="./ReVIEW/TOCParser.html">ReVIEW::TOCParser</a>

  <li><a href="./ReVIEW/TOCParser/Chapter.html">ReVIEW::TOCParser::Chapter</a>

  <li><a href="./ReVIEW/TOCParser/List.html">ReVIEW::TOCParser::List</a>

  <li><a href="./ReVIEW/TOCParser/Node.html">ReVIEW::TOCParser::Node</a>

  <li><a href="./ReVIEW/TOCParser/Paragraph.html">ReVIEW::TOCParser::Paragraph</a>

  <li><a href="./ReVIEW/TOCParser/Section.html">ReVIEW::TOCParser::Section</a>

  <li><a href="./ReVIEW/TOCPrinter.html">ReVIEW::TOCPrinter</a>

  <li><a href="./ReVIEW/TOCRoot.html">ReVIEW::TOCRoot</a>

  <li><a href="./ReVIEW/TOPBuilder.html">ReVIEW::TOPBuilder</a>

  <li><a href="./ReVIEW/Template.html">ReVIEW::Template</a>

  <li><a href="./ReVIEW/TextTOCPrinter.html">ReVIEW::TextTOCPrinter</a>

  <li><a href="./ReVIEW/TextUtils.html">ReVIEW::TextUtils</a>

  <li><a href="./ReVIEW/Unfold.html">ReVIEW::Unfold</a>

  <li><a href="./ReVIEW/WrongInput.html">ReVIEW::WrongInput</a>

  <li><a href="./String.html">String</a>

  <li><a href="./UUID.html">UUID</a>

</ul>

</nav>

</div>

</nav>

<div id=“documentation”>

<h1 class="class">class UUID</h1>

<div id="description" class="description">

<p>Pure ruby <a href=“UUID.html”>UUID</a> generator, which is compatible with RFC4122</p>

</div><!-- description -->

<section id="5Buntitled-5D" class="documentation-section">

  <!-- Constants -->
  <section id="constants-list" class="section">
    <h3 class="section-header">Constants</h3>
    <dl>

      <dt id="NameSpace_DNS">NameSpace_DNS

      <dd class="description"><p>Pre-defined <a href="UUID.html">UUID</a> Namespaces described in RFC4122

Appendix C.</p>

<dt id="NameSpace_OID">NameSpace_OID

<dd class="description">

<dt id="NameSpace_URL">NameSpace_URL

<dd class="description">

<dt id="NameSpace_X500">NameSpace_X500

<dd class="description">

<dt id="Nil">Nil

<dd class="description"><p>The <a href="UUID.html#Nil">Nil</a> <a href="UUID.html">UUID</a> in RFC4122

Section 4.1.7</p>

    <dt id="STATE_FILE">STATE_FILE

    <dd class="description">

    <dt id="UNIXEpoch">UNIXEpoch

    <dd class="description"><p><a href="UUID.html">UUID</a> epoch is 15th Oct. 1582</p>

  </dl>
</section>

<!-- Methods -->

 <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
  <h3 class="section-header">Public Class Methods</h3>

  <div id="method-c-create" class="method-detail ">

    <div class="method-heading">
      <span class="method-name">create</span><span
        class="method-args">(clock=nil, time=Time.now, mac_addr=nil)</span>

      <span class="method-click-advice">click to toggle source</span>

    </div>

    <div class="method-description">

      <p>create  the “version  1” <a href="UUID.html">UUID</a>  with current  system

clock, current UTC timestamp, and the IEEE 802 address (so-called MAC address).</p>

<p>Speed notice: it&#39;s slow. It writes some data into hard drive on every invokation. If you want to speed this up, try remounting tmpdir with a memory based filesystem (such as tmpfs). STILL slow? then no way but rewrite it with c :)</p>

<div class="method-source-code" id="create-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 131</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>create</span> <span class=“ruby-identifier”>clock</span>=<span class=“ruby-keyword”>nil</span>, <span class=“ruby-identifier”>time</span>=<span class=“ruby-constant”>Time</span>.<span class=“ruby-identifier”>now</span>, <span class=“ruby-identifier”>mac_addr</span>=<span class=“ruby-keyword”>nil</span>

<span class="ruby-identifier">c</span> = <span class="ruby-identifier">t</span> = <span class="ruby-identifier">m</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">tmpdir</span> <span class="ruby-keyword">do</span>
        <span class="ruby-keyword">unless</span> <span class="ruby-constant">FileTest</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-constant">STATE_FILE</span> <span class="ruby-keyword">then</span>
                <span class="ruby-comment"># Generate a pseudo MAC address because we have no pure-ruby way</span>
                <span class="ruby-comment"># to know  the MAC  address of the  NIC this system  uses.  Note</span>
                <span class="ruby-comment"># that cheating  with pseudo arresses here  is completely legal:</span>
                <span class="ruby-comment"># see Section 4.5 of RFC4122 for details.</span>
                <span class="ruby-identifier">sha1</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">SHA1</span>.<span class="ruby-identifier">new</span>
                <span class="ruby-value">256</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
                        <span class="ruby-identifier">r</span> = [<span class="ruby-identifier">prand</span>].<span class="ruby-identifier">pack</span> <span class="ruby-string">&quot;N&quot;</span>
                        <span class="ruby-identifier">sha1</span>.<span class="ruby-identifier">update</span> <span class="ruby-identifier">r</span>
                <span class="ruby-keyword">end</span>
                <span class="ruby-identifier">ary</span> = <span class="ruby-identifier">sha1</span>.<span class="ruby-identifier">digest</span>.<span class="ruby-identifier">bytes</span>.<span class="ruby-identifier">to_a</span>
                <span class="ruby-identifier">node</span> = <span class="ruby-identifier">ary</span>.<span class="ruby-identifier">last</span> <span class="ruby-value">6</span>
                <span class="ruby-identifier">node</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">0x01</span> <span class="ruby-comment"># multicast bit</span>
                <span class="ruby-identifier">node</span> = <span class="ruby-identifier">node</span>.<span class="ruby-identifier">pack</span> <span class="ruby-string">&quot;C*&quot;</span>
                <span class="ruby-identifier">k</span> = <span class="ruby-identifier">rand</span> <span class="ruby-value">0x40000</span>
                <span class="ruby-identifier">open</span> <span class="ruby-constant">STATE_FILE</span>, <span class="ruby-string">&#39;w&#39;</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fp</span><span class="ruby-operator">|</span>
                        <span class="ruby-identifier">fp</span>.<span class="ruby-identifier">flock</span> <span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_EX</span>
                        <span class="ruby-identifier">write_state</span> <span class="ruby-identifier">fp</span>, <span class="ruby-identifier">k</span>, <span class="ruby-identifier">node</span>
                        <span class="ruby-identifier">fp</span>.<span class="ruby-identifier">chmod</span> <span class="ruby-value">0o777</span> <span class="ruby-comment"># must be world writable</span>
                <span class="ruby-keyword">end</span>
        <span class="ruby-keyword">end</span>
        <span class="ruby-identifier">open</span> <span class="ruby-constant">STATE_FILE</span>, <span class="ruby-string">&#39;r+&#39;</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">fp</span><span class="ruby-operator">|</span>
                <span class="ruby-identifier">fp</span>.<span class="ruby-identifier">flock</span> <span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">LOCK_EX</span>
                <span class="ruby-identifier">c</span>, <span class="ruby-identifier">m</span> = <span class="ruby-identifier">read_state</span> <span class="ruby-identifier">fp</span>
                <span class="ruby-identifier">c</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-comment"># important; increment here</span>
                <span class="ruby-identifier">write_state</span> <span class="ruby-identifier">fp</span>, <span class="ruby-identifier">c</span>, <span class="ruby-identifier">m</span>
        <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">clock</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b11_1111_1111_1111</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">clock</span>
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">mac_addr</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">mac_addr</span>
<span class="ruby-identifier">time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span> <span class="ruby-identifier">time</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Float</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">time</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Time</span>
        <span class="ruby-identifier">t</span> = <span class="ruby-identifier">time</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">10_000_000</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">tv_usec</span> <span class="ruby-operator">*</span> <span class="ruby-value">10</span> <span class="ruby-operator">+</span> <span class="ruby-constant">UNIXEpoch</span>
<span class="ruby-keyword">when</span> <span class="ruby-constant">Integer</span>
        <span class="ruby-identifier">t</span> = <span class="ruby-identifier">time</span> <span class="ruby-operator">+</span> <span class="ruby-constant">UNIXEpoch</span>
<span class="ruby-keyword">else</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;cannot convert ``#{time}&#39;&#39; into Time.&quot;</span>
<span class="ruby-keyword">end</span>

<span class="ruby-identifier">tl</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xFFFF_FFFF</span>
<span class="ruby-identifier">tm</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">32</span>
<span class="ruby-identifier">tm</span> = <span class="ruby-identifier">tm</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xFFFF</span>
<span class="ruby-identifier">th</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">48</span>
<span class="ruby-identifier">th</span> = <span class="ruby-identifier">th</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b0000_1111_1111_1111</span>
<span class="ruby-identifier">th</span> = <span class="ruby-identifier">th</span> <span class="ruby-operator">|</span> <span class="ruby-value">0b0001_0000_0000_0000</span>
<span class="ruby-identifier">cl</span> = <span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b0000_0000_1111_1111</span>
<span class="ruby-identifier">ch</span> = <span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b0011_1111_0000_0000</span>
<span class="ruby-identifier">ch</span> = <span class="ruby-identifier">ch</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>
<span class="ruby-identifier">ch</span> = <span class="ruby-identifier">ch</span> <span class="ruby-operator">|</span> <span class="ruby-value">0b1000_0000</span>
<span class="ruby-identifier">pack</span> <span class="ruby-identifier">tl</span>, <span class="ruby-identifier">tm</span>, <span class="ruby-identifier">th</span>, <span class="ruby-identifier">ch</span>, <span class="ruby-identifier">cl</span>, <span class="ruby-identifier">m</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- create-source -->

  </div>

</div><!-- create-method -->

<div id="method-c-create_md5" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">create_md5</span><span
      class="method-args">(str, namespace)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p><a href="UUID.html">UUID</a> generation using MD5 (for backward compat.)</p>

    <div class="method-source-code" id="create_md5-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 92</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>create_md5</span> <span class=“ruby-identifier”>str</span>, <span class=“ruby-identifier”>namespace</span>

<span class="ruby-identifier">md5</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">MD5</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">md5</span>.<span class="ruby-identifier">update</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">raw_bytes</span>
<span class="ruby-identifier">md5</span>.<span class="ruby-identifier">update</span> <span class="ruby-identifier">str</span>
<span class="ruby-identifier">sum</span> = <span class="ruby-identifier">md5</span>.<span class="ruby-identifier">digest</span>
<span class="ruby-identifier">raw</span> = <span class="ruby-identifier">mask</span> <span class="ruby-value">3</span>, <span class="ruby-identifier">sum</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">16</span>]
<span class="ruby-identifier">new</span> <span class="ruby-identifier">raw</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- create_md5-source -->

  </div>

</div><!-- create_md5-method -->

<div id="method-c-create_random" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">create_random</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p><a href="UUID.html">UUID</a>  generation  using  random-number  generator.

From it&#39;s random nature, there&#39;s no warranty that the created ID is really universaly unique.</p>

<div class="method-source-code" id="create_random-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 104</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>create_random</span>

<span class="ruby-identifier">rnd</span> = [<span class="ruby-identifier">prand</span>, <span class="ruby-identifier">prand</span>, <span class="ruby-identifier">prand</span>, <span class="ruby-identifier">prand</span>].<span class="ruby-identifier">pack</span> <span class="ruby-string">&quot;N4&quot;</span>
<span class="ruby-identifier">raw</span> = <span class="ruby-identifier">mask</span> <span class="ruby-value">4</span>, <span class="ruby-identifier">rnd</span>
<span class="ruby-identifier">new</span> <span class="ruby-identifier">raw</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- create_random-source -->

  </div>

</div><!-- create_random-method -->

<div id="method-c-create_sha1" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">create_sha1</span><span
      class="method-args">(str, namespace)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p><a href="UUID.html">UUID</a> generation using SHA1. Recommended over

create_md5. Namespace object is another <a href=“UUID.html”>UUID</a>, some of them are pre-defined below.</p>

<div class="method-source-code" id="create_sha1-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 82</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>create_sha1</span> <span class=“ruby-identifier”>str</span>, <span class=“ruby-identifier”>namespace</span>

<span class="ruby-identifier">sha1</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">SHA1</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">sha1</span>.<span class="ruby-identifier">update</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">raw_bytes</span>
<span class="ruby-identifier">sha1</span>.<span class="ruby-identifier">update</span> <span class="ruby-identifier">str</span>
<span class="ruby-identifier">sum</span> = <span class="ruby-identifier">sha1</span>.<span class="ruby-identifier">digest</span>
<span class="ruby-identifier">raw</span> = <span class="ruby-identifier">mask</span> <span class="ruby-value">5</span>, <span class="ruby-identifier">sum</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">15</span>]
<span class="ruby-identifier">new</span> <span class="ruby-identifier">raw</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- create_sha1-source -->

  </div>

</div><!-- create_sha1-method -->

<div id="method-c-new" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">new</span><span
      class="method-args">(str)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="new-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 37</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>initialize</span> <span class=“ruby-identifier”>str</span>

<span class="ruby-identifier">tmp</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">unpack</span> <span class="ruby-string">&quot;C*&quot;</span>
<span class="ruby-ivar">@num</span> = <span class="ruby-identifier">tmp</span>.<span class="ruby-identifier">inject</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
        <span class="ruby-identifier">r</span> <span class="ruby-operator">*</span> <span class="ruby-value">256</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">i</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@num</span>.<span class="ruby-identifier">freeze</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">freeze</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- new-source -->

  </div>

</div><!-- new-method -->

<div id="method-c-pack" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">pack</pan><span
      class="method-args">(tl, tm, th, ch, cl, n)</span>

    <span class="method-click-advice">click to toggle source</pan>

  </div>

  <div class="method-description">

    <p>The &#39;primitive constructor&#39; of this class Note <a

href=“UUID.html#method-c-pack”>::pack</a> == uuid</p>

<div class="method-source-code" id="pack-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 198</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>pack</span> <span class=“ruby-identifier”>tl</span>, <span class=“ruby-identifier”>tm</span>, <span class=“ruby-identifier”>th</span>, <span class=“ruby-identifier”>ch</span>, <span class=“ruby-identifier”>cl</span>, <span class=“ruby-identifier”>n</span>

<span class="ruby-identifier">raw</span> = [<span class="ruby-identifier">tl</span>, <span class="ruby-identifier">tm</span>, <span class="ruby-identifier">th</span>, <span class="ruby-identifier">ch</span>, <span class="ruby-identifier">cl</span>, <span class="ruby-identifier">n</span>].<span class="ruby-identifier">pack</span> <span class="ruby-string">&quot;NnnCCa6&quot;</span>
<span class="ruby-identifier">new</span> <span class="ruby-identifier">raw</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- pack-source -->

  </div>

</div><!-- pack-method -->

<div id="method-c-parse" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">parse</span><span
      class="method-args">(obj)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>A  simple GUID  parser:  just ignores  unknown  characters and  convert

hexadecimal dump into 16-octet object.</p>

<div class="method-source-code" id="parse-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 189</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>parse</span> <span class=“ruby-identifier”>obj</span>

<span class="ruby-identifier">str</span> = <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">sub</span> <span class="ruby-regexp">/\Aurn:uuid:/</span>, <span class="ruby-string">&#39;&#39;</span>
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub!</span> <span class="ruby-regexp">/[^0-9A-Fa-f]/</span>, <span class="ruby-string">&#39;&#39;</span>
<span class="ruby-identifier">raw</span> = [<span class="ruby-identifier">str</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">31</span>]].<span class="ruby-identifier">pack</span> <span class="ruby-string">&#39;H*&#39;</span>
<span class="ruby-identifier">new</span> <span class="ruby-identifier">raw</span>

<span class=“ruby-keyword”>end</span></pre>

      </div><!-- parse-source -->

    </div>

  </div><!-- parse-method -->

</section><!-- public-class-method-details -->

 <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
  <h3 class="section-header">Public Instance Methods</h3>

  <div id="method-i-3C-3D-3E" class="method-detail ">

    <div class="method-heading">
      <span class="method-name">&lt;=&gt;</span><span
        class="method-args">(other)</span>

      <span class="method-click-advice">click to toggle source</span>

    </div>

    <div class="method-description">

      <p>UUIDs are comparable (don&#39;t know what benefits are there, though).</p>

      <div class="method-source-code" id="3C-3D-3E-source">
        <pre><span class="ruby-comment"># File lib/uuid.rb, line 288</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-operator”>&lt;=&gt;</span> <span class=“ruby-identifier”>other</span>

<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">to_s</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- 3C-3D-3E-source -->

  </div>

</div><!-- 3C-3D-3E-method -->

<div id="method-i-3D-3D" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">==</span><span
      class="method-args">(other)</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>Two  UUIDs  are  said  to  be  equal if  and  only  if  their  (byte-order

canonicalized) integer representations are equivallent. Refer RFC4122 for details.</p>

<div class="method-source-code" id="3D-3D-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 276</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-operator”>==</span> <span class=“ruby-identifier”>other</span>

<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">to_i</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- 3D-3D-source -->

  </div>

  <div class="aliases">
    Also aliased as: <a href="UUID.html#method-i-eql-3F">eql?</a>
  </div>

</div><!-- 3D-3D-method -->

<div id="method-i-clock" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">clock</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>The clock sequence of this <a href="UUID.html">UUID</a></p>

    <div class="method-source-code" id="clock-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 234</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>clock</span>

<span class="ruby-identifier">a</span> = <span class="ruby-identifier">unpack</span>
<span class="ruby-identifier">ch</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">3</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b0001_1111</span>
<span class="ruby-identifier">cl</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">4</span>]
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">cl</span>
<span class="ruby-identifier">c</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">ch</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>
<span class="ruby-identifier">c</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- clock-source -->

  </div>

</div><!-- clock-method -->

<div id="method-i-eql-3F" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">eql?</span><span
      class="method-args">(other)</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-3D-3D">==</a>
  </div>

</div><!-- eql-3F-method -->

<div id="method-i-guid" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">guid</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-to_s">to_s</a>
  </div>

</div><!-- guid-method -->

<div id="method-i-hash" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">hash</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>Two identical UUIDs should have same hash</p>

    <div class="method-source-code" id="hash-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 282</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>hash</span>

<span class="ruby-identifier">to_i</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- hash-source -->

  </div>

</div><!-- hash-method -->

<div id="method-i-ieee802" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">ieee802</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-node">node</a>
  </div>

</div><!-- ieee802-method -->

<div id="method-i-inspect" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">inspect</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-to_uri">to_uri</a>
  </div>

</div><!-- inspect-method -->

<div id="method-i-mac_address" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">mac_address</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-node">node</a>
  </div>

</div><!-- mac_address-method -->

<div id="method-i-node" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">node</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>The IEEE 802 address in a hexadecimal format</p>

    <div class="method-source-code" id="node-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 244</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>node</span>

<span class="ruby-identifier">m</span> = <span class="ruby-identifier">unpack</span>[<span class="ruby-value">5</span>].<span class="ruby-identifier">unpack</span> <span class="ruby-string">&#39;C*&#39;</span>
<span class="ruby-string">&#39;%02x%02x%02x%02x%02x%02x&#39;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">m</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- node-source -->

  </div>

  <div class="aliases">
    Also aliased as: <a href="UUID.html#method-i-mac_address">mac_address</a>, <a href="UUID.html#method-i-ieee802">ieee802</a>
  </div>

</div><!-- node-method -->

<div id="method-i-raw_bytes" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">raw_bytes</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <div class="method-source-code" id="raw_bytes-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 48</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>raw_bytes</span>

<span class="ruby-identifier">ret</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">tmp</span> = <span class="ruby-ivar">@num</span>
<span class="ruby-value">16</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
        <span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span> = <span class="ruby-identifier">tmp</span>.<span class="ruby-identifier">divmod</span> <span class="ruby-value">256</span>
        <span class="ruby-identifier">ret</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">y</span>
        <span class="ruby-identifier">tmp</span> = <span class="ruby-identifier">x</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ret</span>.<span class="ruby-identifier">reverse!</span>
<span class="ruby-identifier">ret</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- raw_bytes-source -->

  </div>

</div><!-- raw_bytes-method -->

<div id="method-i-time" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">time</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>The timestamp of this <a href="UUID.html">UUID</a>. Throws RageError if

that time exceeds UNIX time range</p>

<div class="method-source-code" id="time-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 212</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>time</span>

<span class="ruby-identifier">a</span> = <span class="ruby-identifier">unpack</span>
<span class="ruby-identifier">tl</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
<span class="ruby-identifier">tm</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]
<span class="ruby-identifier">th</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x0FFF</span>
<span class="ruby-identifier">t</span> = <span class="ruby-identifier">tl</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">tm</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">32</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">th</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">48</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">-=</span> <span class="ruby-constant">UNIXEpoch</span>
<span class="ruby-identifier">tv_sec</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">/</span> <span class="ruby-value">10_000_000</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">tv_sec</span> <span class="ruby-operator">*</span> <span class="ruby-value">10_000_000</span>
<span class="ruby-identifier">tv_usec</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">/</span> <span class="ruby-value">10</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span> <span class="ruby-identifier">tv_sec</span>, <span class="ruby-identifier">tv_usec</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- time-source -->

  </div>

</div><!-- time-method -->

<div id="method-i-to_i" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">to_i</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-to_int">to_int</a>
  </div>

</div><!-- to_i-method -->

<div id="method-i-to_int" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">to_int</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>Convert into 128-bit unsigned integer Typically a Bignum instance, but can

be a Fixnum.</p>

<div class="method-source-code" id="to_int-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 268</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>to_int</span>

<span class="ruby-ivar">@num</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- to_int-source -->

  </div>

  <div class="aliases">
    Also aliased as: <a href="UUID.html#method-i-to_i">to_i</a>
  </div>

</div><!-- to_int-method -->

<div id="method-i-to_s" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">to_s</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>Generate the string representation (a.k.a GUID) of this <a

href=“UUID.html”>UUID</a></p>

<div class="method-source-code" id="to_s-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 252</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>to_s</span>

<span class="ruby-identifier">a</span> = <span class="ruby-identifier">unpack</span>
<span class="ruby-identifier">a</span>[<span class="ruby-value">-1</span>] = <span class="ruby-identifier">mac_address</span>
<span class="ruby-string">&quot;%08x-%04x-%04x-%02x%02x-%s&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">a</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- to_s-source -->

  </div>

  <div class="aliases">
    Also aliased as: <a href="UUID.html#method-i-guid">guid</a>
  </div>

</div><!-- to_s-method -->

<div id="method-i-to_uri" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">to_uri</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>Convert into a RFC4122-comforming URN representation</p>

    <div class="method-source-code" id="to_uri-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 260</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>to_uri</span>

<span class="ruby-string">&quot;urn:uuid:&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">to_s</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- to_uri-source -->

  </div>

  <div class="aliases">
    Also aliased as: <a href="UUID.html#method-i-urn">urn</a>, <a href="UUID.html#method-i-inspect">inspect</a>
  </div>

</div><!-- to_uri-method -->

<div id="method-i-unpack" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">unpack</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>The &#39;primitive deconstructor&#39;, or the dual to pack. Note <a

href=“UUID.html#method-c-pack”>::pack</a> == uuid</p>

<div class="method-source-code" id="unpack-source">
  <pre><span class="ruby-comment"># File lib/uuid.rb, line 206</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>unpack</span>

<span class="ruby-identifier">raw_bytes</span>.<span class="ruby-identifier">unpack</span> <span class="ruby-string">&quot;NnnCCa6&quot;</span>

<span class=“ruby-keyword”>end</span></pre>

    </div><!-- unpack-source -->

  </div>

</div><!-- unpack-method -->

<div id="method-i-urn" class="method-detail method-alias">

  <div class="method-heading">
    <span class="method-name">urn</span><span
      class="method-args">()</span>

  </div>

  <div class="method-description">

  </div>

  <div class="aliases">
    Alias for: <a href="UUID.html#method-i-to_uri">to_uri</a>
  </div>

</div><!-- urn-method -->

<div id="method-i-version" class="method-detail ">

  <div class="method-heading">
    <span class="method-name">version</span><span
      class="method-args">()</span>

    <span class="method-click-advice">click to toggle source</span>

  </div>

  <div class="method-description">

    <p>The version of this <a href="UUID.html">UUID</a></p>

    <div class="method-source-code" id="version-source">
      <pre><span class="ruby-comment"># File lib/uuid.rb, line 228</span>

<span class=“ruby-keyword”>def</span> <span class=“ruby-identifier”>version</span>

<span class="ruby-identifier">v</span> = <span class="ruby-identifier">unpack</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-value">0b1111_0000_0000_0000</span>
<span class="ruby-identifier">v</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">12</span>

<span class=“ruby-keyword”>end</span></pre>

        </div><!-- version-source -->

      </div>

    </div><!-- version-method -->

  </section><!-- public-instance-method-details -->

</section><!-- 5Buntitled-5D -->

</div><!– documentation –>

<footer id=“validator-badges”>

<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.0.
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.

</footer>