evennia/docs/3.x/Contribs/Contrib-Random-String-Generator.html
2023-12-21 00:12:31 +01:00

209 lines
No EOL
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Pseudo-random generator and registry &#8212; Evennia 3.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Easy menu selection tree" href="Contrib-Tree-Select.html" />
<link rel="prev" title="Random Name Generator" href="Contrib-Name-Generator.html" />
</head><body>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Contrib-Tree-Select.html" title="Easy menu selection tree"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Contrib-Name-Generator.html" title="Random Name Generator"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="Contribs-Overview.html" accesskey="U">Contribs</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Pseudo-random generator and registry</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Pseudo-random generator and registry</a><ul>
<li><a class="reference internal" href="#usage-example">Usage Example</a></li>
<li><a class="reference internal" href="#importing">Importing</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Contrib-Name-Generator.html"
title="previous chapter">Random Name Generator</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Contrib-Tree-Select.html"
title="next chapter">Easy menu selection tree</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/Contribs/Contrib-Random-String-Generator.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section class="tex2jax_ignore mathjax_ignore" id="pseudo-random-generator-and-registry">
<h1>Pseudo-random generator and registry<a class="headerlink" href="#pseudo-random-generator-and-registry" title="Permalink to this headline"></a></h1>
<p>Contribution by Vincent Le Goff (vlgeoff), 2017</p>
<p>This utility can be used to generate pseudo-random strings of information
with specific criteria. You could, for instance, use it to generate
phone numbers, license plate numbers, validation codes, in-game security
passwords and so on. The strings generated will be stored and wont be repeated.</p>
<section id="usage-example">
<h2>Usage Example<a class="headerlink" href="#usage-example" title="Permalink to this headline"></a></h2>
<p>Heres a very simple example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span>
<span class="kn">from</span> <span class="nn">evennia.contrib.utils.random_string_generator</span> <span class="kn">import</span> <span class="n">RandomStringGenerator</span>
<span class="c1"># Create a generator for phone numbers</span>
<span class="n">phone_generator</span> <span class="o">=</span> <span class="n">RandomStringGenerator</span><span class="p">(</span><span class="s2">&quot;phone number&quot;</span><span class="p">,</span> <span class="sa">r</span><span class="s2">&quot;555-[0-9]</span><span class="si">{3}</span><span class="s2">-[0-9]</span><span class="si">{4}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="c1"># Generate a phone number (555-XXX-XXXX with X as numbers)</span>
<span class="n">number</span> <span class="o">=</span> <span class="n">phone_generator</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
<span class="c1"># `number` will contain something like: &quot;555-981-2207&quot;</span>
<span class="c1"># If you call `phone_generator.get`, it won&#39;t give the same anymore.phone_generator.all()</span>
<span class="c1"># Will return a list of all currently-used phone numbers</span>
<span class="n">phone_generator</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;555-981-2207&quot;</span><span class="p">)</span>
<span class="c1"># The number can be generated again</span>
</pre></div>
</div>
</section>
<section id="importing">
<h2>Importing<a class="headerlink" href="#importing" title="Permalink to this headline"></a></h2>
<ol class="simple">
<li><p>Import the <code class="docutils literal notranslate"><span class="pre">RandomStringGenerator</span></code> class from the contrib.</p></li>
<li><p>Create an instance of this class taking two arguments:</p>
<ul class="simple">
<li><p>The name of the gemerator (like “phone number”, “license plate”…).</p></li>
<li><p>The regular expression representing the expected results.</p></li>
</ul>
</li>
<li><p>Use the generators <code class="docutils literal notranslate"><span class="pre">all</span></code>, <code class="docutils literal notranslate"><span class="pre">get</span></code> and <code class="docutils literal notranslate"><span class="pre">remove</span></code> methods as shown above.</p></li>
</ol>
<p>To understand how to read and create regular expressions, you can refer to
<a class="reference external" href="https://docs.python.org/2/library/re.html">the documentation on the re module</a>.
Some examples of regular expressions you could use:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">r&quot;555-\d{3}-\d{4}&quot;</span></code>: 555, a dash, 3 digits, another dash, 4 digits.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">r&quot;[0-9]{3}[A-Z][0-9]{3}&quot;</span></code>: 3 digits, a capital letter, 3 digits.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">r&quot;[A-Za-z0-9]{8,15}&quot;</span></code>: between 8 and 15 letters and digits.</p></li>
<li><p></p></li>
</ul>
<p>Behind the scenes, a script is created to store the generated information
for a single generator. The <code class="docutils literal notranslate"><span class="pre">RandomStringGenerator</span></code> object will also
read the regular expression you give to it to see what information is
required (letters, digits, a more restricted class, simple characters…)…
More complex regular expressions (with branches for instance) might not be
available.</p>
<hr class="docutils" />
<p><small>This document page is generated from <code class="docutils literal notranslate"><span class="pre">evennia/contrib/utils/random_string_generator/README.md</span></code>. Changes to this
file will be overwritten, so edit that file rather than this one.</small></p>
</section>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Contrib-Tree-Select.html" title="Easy menu selection tree"
>next</a> |</li>
<li class="right" >
<a href="Contrib-Name-Generator.html" title="Random Name Generator"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="Contribs-Overview.html" >Contribs</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Pseudo-random generator and registry</a></li>
</ul>
</div>
<div class="admonition important">
<p class="first admonition-title">Note</p>
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>