Generate docs and fix bug
Add examples in docs Fixed wrong words in the outputs
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Convert digit to text."><meta name="keywords" content="rust, rustlang, rust-lang, digit_to_text"><title>ntext::digit_to_text - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../ntext/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class="location"><a href="index.html">ntext</a></p><div id="sidebar-vars" data-name="digit_to_text" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Function <a href="index.html">ntext</a>::<wbr><a class="fn" href="">digit_to_text</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#3-17" title="goto source code">[src]</a></span></h1><pre class="rust fn">pub fn digit_to_text(digit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></pre><div class="docblock"><p>Convert digit to text.</p>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Function <a href="index.html">ntext</a>::<wbr><a class="fn" href="">digit_to_text</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#24-38" title="goto source code">[src]</a></span></h1><pre class="rust fn">pub fn digit_to_text(digit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></pre><div class="docblock"><p>Convert digit to text.</p>
|
||||
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="ntext"></div>
|
||||
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Convert u32 to words in a string."><meta name="keywords" content="rust, rustlang, rust-lang, to_text"><title>ntext::to_text - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../ntext/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class="location"><a href="index.html">ntext</a></p><div id="sidebar-vars" data-name="to_text" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Function <a href="index.html">ntext</a>::<wbr><a class="fn" href="">to_text</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#73-109" title="goto source code">[src]</a></span></h1><pre class="rust fn">pub fn to_text(number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></pre><div class="docblock"><p>Convert u32 to words in a string.</p>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Function <a href="index.html">ntext</a>::<wbr><a class="fn" href="">to_text</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#92-123" title="goto source code">[src]</a></span></h1><pre class="rust fn">pub fn to_text(number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></pre><div class="docblock"><p>Convert u32 to words in a string.</p>
|
||||
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="ntext"></div>
|
||||
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>
|
||||
+21
-2
@@ -1,7 +1,26 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `ntext` crate."><meta name="keywords" content="rust, rustlang, rust-lang, ntext"><title>ntext - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content=""><meta name="keywords" content="rust, rustlang, rust-lang, ntext"><title>ntext - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
|
||||
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../ntext/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate ntext</p><div class="block version"><p>Version 0.1.1</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all ntext's items</p></a><div class="block items"><ul><li><a href="#functions">Functions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="ntext" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="">ntext</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#1-109" title="goto source code">[src]</a></span></h1><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2>
|
||||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="">ntext</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/ntext/lib.rs.html#1-123" title="goto source code">[src]</a></span></h1><div class="docblock">
|
||||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||||
<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">ntext</span>;
|
||||
<span class="kw">use</span> <span class="ident">ntext</span>::<span class="ident">digit_to_text</span>;
|
||||
<span class="kw">fn</span> <span class="ident">main</span>() {
|
||||
<span class="macro">println</span><span class="macro">!</span>(<span class="string">"{}"</span>,<span class="ident">digit_to_text</span>(<span class="number">1</span>).<span class="ident">unwrap</span>());
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="string">"two"</span>,<span class="ident">digit_to_text</span>(<span class="number">2</span>).<span class="ident">unwrap</span>());
|
||||
<span class="macro">assert_ne</span><span class="macro">!</span>(<span class="string">"five"</span>,<span class="ident">digit_to_text</span>(<span class="number">8</span>).<span class="ident">unwrap</span>());
|
||||
}</pre></div>
|
||||
<p>However giving the program a zero will return an empty string.</p>
|
||||
|
||||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||||
<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">ntext</span>;
|
||||
<span class="kw">use</span> <span class="ident">ntext</span>::<span class="ident">to_text</span>;
|
||||
<span class="kw">fn</span> <span class="ident">main</span>() {
|
||||
<span class="macro">println</span><span class="macro">!</span>(<span class="string">"{}"</span>,<span class="ident">to_text</span>(<span class="number">1312</span>));
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">1312</span>),<span class="string">"onethousandthreehundredtwelve"</span>);
|
||||
}</pre></div>
|
||||
<p>This fucntion will also return an empty string on input zero</p>
|
||||
</div><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2>
|
||||
<table><tr class="module-item"><td><a class="fn" href="fn.digit_to_text.html" title="ntext::digit_to_text fn">digit_to_text</a></td><td class="docblock-short"><p>Convert digit to text.</p>
|
||||
</td></tr><tr class="module-item"><td><a class="fn" href="fn.to_text.html" title="ntext::to_text fn">to_text</a></td><td class="docblock-short"><p>Convert u32 to words in a string.</p>
|
||||
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="ntext"></div>
|
||||
|
||||
+67
-39
@@ -110,7 +110,42 @@
|
||||
<span id="107">107</span>
|
||||
<span id="108">108</span>
|
||||
<span id="109">109</span>
|
||||
<span id="110">110</span>
|
||||
<span id="111">111</span>
|
||||
<span id="112">112</span>
|
||||
<span id="113">113</span>
|
||||
<span id="114">114</span>
|
||||
<span id="115">115</span>
|
||||
<span id="116">116</span>
|
||||
<span id="117">117</span>
|
||||
<span id="118">118</span>
|
||||
<span id="119">119</span>
|
||||
<span id="120">120</span>
|
||||
<span id="121">121</span>
|
||||
<span id="122">122</span>
|
||||
<span id="123">123</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="doccomment">//!```rust</span>
|
||||
<span class="doccomment">//!extern crate ntext;</span>
|
||||
<span class="doccomment">//!use ntext::digit_to_text;</span>
|
||||
<span class="doccomment">//!fn main() {</span>
|
||||
<span class="doccomment">//! println!("{}",digit_to_text(1).unwrap());</span>
|
||||
<span class="doccomment">//! assert_eq!("two",digit_to_text(2).unwrap());</span>
|
||||
<span class="doccomment">//! assert_ne!("five",digit_to_text(8).unwrap());</span>
|
||||
<span class="doccomment">//!}</span>
|
||||
<span class="doccomment">//!```</span>
|
||||
<span class="doccomment">//! However giving the program a zero will return an empty string.</span>
|
||||
<span class="doccomment">//!</span>
|
||||
<span class="doccomment">//!```rust</span>
|
||||
<span class="doccomment">//!extern crate ntext;</span>
|
||||
<span class="doccomment">//!use ntext::to_text;</span>
|
||||
<span class="doccomment">//!fn main() {</span>
|
||||
<span class="doccomment">//! println!("{}",to_text(1312));</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text(1312),"onethousandthreehundredtwelve");</span>
|
||||
<span class="doccomment">//!}</span>
|
||||
<span class="doccomment">//!```</span>
|
||||
<span class="doccomment">//! This fucntion will also return an empty string on input zero</span>
|
||||
|
||||
<span class="kw">mod</span> <span class="ident">test</span>;
|
||||
<span class="doccomment">/// Convert digit to text.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">digit_to_text</span>(<span class="ident">digit</span>: <span class="ident">u8</span>) <span class="op">-</span><span class="op">></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
|
||||
@@ -167,56 +202,49 @@
|
||||
}
|
||||
}
|
||||
<span class="kw">fn</span> <span class="ident">place_value</span>(<span class="ident">number</span>: <span class="ident">u8</span>, <span class="ident">place</span>: <span class="ident">u8</span>) <span class="op">-</span><span class="op">></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">digit_to_text</span>(<span class="ident">number</span>).<span class="ident">unwrap</span>();
|
||||
<span class="kw">match</span> <span class="ident">place</span> {
|
||||
<span class="ident">p</span> @ <span class="number">3</span>..<span class="op">=</span><span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>({
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">value</span> <span class="op">=</span> <span class="ident">digit_to_text</span>(<span class="ident">number</span>).<span class="ident">unwrap</span>();
|
||||
<span class="kw">match</span> <span class="ident">p</span> {
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"hundred"</span>),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"thousand"</span>),
|
||||
<span class="comment">// 5 => value.push_str("placeholder"),</span>
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"million"</span>),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> (),
|
||||
}
|
||||
<span class="ident">value</span>
|
||||
}),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> (),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> (), <span class="comment">//This should never happen as 2 is included in the tens_place_holders</span>
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"hundred"</span>),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"thousand"</span>),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> (), <span class="comment">// Souldn't happen</span>
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="ident">value</span>.<span class="ident">push_str</span>(<span class="string">"million"</span>),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> (),
|
||||
};
|
||||
<span class="prelude-val">Some</span>(<span class="ident">value</span>)
|
||||
}
|
||||
|
||||
<span class="doccomment">/// Convert u32 to words in a string.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">to_text</span>(<span class="ident">number</span>: <span class="ident">u32</span>) <span class="op">-</span><span class="op">></span> <span class="ident">String</span> {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">numtext</span>: <span class="ident">String</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">new</span>();
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">last</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
<span class="kw">let</span> <span class="ident">tens_place_holders</span>: [<span class="ident">u8</span>; <span class="number">2</span>] <span class="op">=</span> [<span class="number">2</span>, <span class="number">5</span>];
|
||||
<span class="kw">let</span> <span class="ident">digits</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">number</span>
|
||||
.<span class="ident">to_string</span>()
|
||||
.<span class="ident">chars</span>()
|
||||
.<span class="ident">map</span>(<span class="op">|</span><span class="ident">d</span><span class="op">|</span> <span class="ident">d</span>.<span class="ident">to_digit</span>(<span class="number">10</span>).<span class="ident">unwrap</span>() <span class="kw">as</span> <span class="ident">u8</span>)
|
||||
.<span class="ident">collect</span>();
|
||||
<span class="kw">let</span> <span class="ident">second_digit_array</span>: [<span class="ident">usize</span>; <span class="number">2</span>] <span class="op">=</span> [<span class="number">0</span>, <span class="number">3</span>];
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">last</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
<span class="kw">if</span> <span class="ident">digits</span>.<span class="ident">len</span>() <span class="op">=</span><span class="op">=</span> <span class="number">1</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">digit_to_text</span>(<span class="kw-2">*</span><span class="ident">digits</span>.<span class="ident">last</span>().<span class="ident">unwrap</span>()).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
} <span class="kw">else</span> {
|
||||
<span class="kw">for</span> (<span class="ident">index</span>, <span class="ident">digit</span>) <span class="kw">in</span> <span class="ident">digits</span>.<span class="ident">iter</span>().<span class="ident">rev</span>().<span class="ident">enumerate</span>() {
|
||||
<span class="kw">if</span> <span class="ident">second_digit_array</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">index</span>) {
|
||||
<span class="ident">last</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">digit</span>.<span class="ident">clone</span>());
|
||||
<span class="kw">continue</span>;
|
||||
}
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">last_digit</span>) <span class="op">=</span> <span class="ident">last</span> {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">buffer</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">new</span>();
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">tens_place</span>(<span class="ident">digit</span>.<span class="ident">clone</span>(), <span class="ident">last_digit</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
<span class="kw">if</span> <span class="ident">index</span> <span class="op">></span> <span class="number">2</span> {
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">place_value</span>(<span class="number">0</span>, <span class="ident">index</span> <span class="kw">as</span> <span class="ident">u8</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
}
|
||||
<span class="ident">numtext</span>.<span class="ident">insert_str</span>(<span class="number">0</span>, <span class="ident">buffer</span>.<span class="ident">as_str</span>());
|
||||
<span class="ident">last</span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
} <span class="kw">else</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">insert_str</span>(
|
||||
<span class="number">0</span>,
|
||||
<span class="ident">place_value</span>(<span class="ident">digit</span>.<span class="ident">clone</span>(), <span class="ident">index</span> <span class="kw">as</span> <span class="ident">u8</span> <span class="op">+</span> <span class="number">1</span>)
|
||||
.<span class="ident">unwrap</span>()
|
||||
.<span class="ident">as_str</span>(),
|
||||
)
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">place</span>: <span class="ident">u8</span> <span class="op">=</span> <span class="ident">digits</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u8</span>;
|
||||
|
||||
<span class="kw">for</span> (<span class="ident">_index</span>, <span class="ident">digit</span>) <span class="kw">in</span> <span class="ident">digits</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
|
||||
<span class="kw">if</span> <span class="ident">tens_place_holders</span>.<span class="ident">contains</span>(<span class="kw-2">&</span><span class="ident">place</span>) {
|
||||
<span class="ident">last</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="kw-2">*</span><span class="ident">digit</span>);
|
||||
<span class="ident">place</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>;
|
||||
<span class="kw">continue</span>;
|
||||
}
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">last_digit</span>) <span class="op">=</span> <span class="ident">last</span> {
|
||||
<span class="macro">println</span><span class="macro">!</span>(<span class="string">"hello index {}"</span>, <span class="ident">place</span>);
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">tens_place</span>(<span class="ident">last_digit</span>, <span class="kw-2">*</span><span class="ident">digit</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
<span class="kw">if</span> <span class="ident">place</span> <span class="op">></span> <span class="number">2</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">place_value</span>(<span class="number">0</span>, <span class="ident">place</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
}
|
||||
<span class="ident">last</span> <span class="op">=</span> <span class="prelude-val">None</span>;
|
||||
} <span class="kw">else</span> <span class="kw">if</span> <span class="kw-2">*</span><span class="ident">digit</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">place_value</span>(<span class="kw-2">*</span><span class="ident">digit</span>, <span class="ident">place</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>())
|
||||
}
|
||||
<span class="ident">place</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>;
|
||||
}
|
||||
<span class="ident">numtext</span>
|
||||
}
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
<span id="27">27</span>
|
||||
<span id="28">28</span>
|
||||
<span id="29">29</span>
|
||||
<span id="30">30</span>
|
||||
<span id="31">31</span>
|
||||
<span id="32">32</span>
|
||||
<span id="33">33</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">mod</span> <span class="ident">tests</span> {
|
||||
@@ -44,10 +48,14 @@
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">numbers</span>() {
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">to_text</span>;
|
||||
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">1</span>), <span class="string">"one"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">10</span>), <span class="string">"ten"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">100</span>), <span class="string">"onehundred"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">1000</span>), <span class="string">"onethousand"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">12345</span>), <span class="string">"twelvethousandthreehundredfortyfive"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">81123</span>), <span class="string">"eightyonethousandonehundredtwentythree"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">12</span>), <span class="string">"twelve"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">2</span>), <span class="string">"two"</span>);
|
||||
}
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">tens</span>() {
|
||||
|
||||
+53
-39
@@ -1,3 +1,24 @@
|
||||
//!```rust
|
||||
//!extern crate ntext;
|
||||
//!use ntext::digit_to_text;
|
||||
//!fn main() {
|
||||
//! println!("{}",digit_to_text(1).unwrap());
|
||||
//! assert_eq!("two",digit_to_text(2).unwrap());
|
||||
//! assert_ne!("five",digit_to_text(8).unwrap());
|
||||
//!}
|
||||
//!```
|
||||
//! However giving the program a zero will return an empty string.
|
||||
//!
|
||||
//!```rust
|
||||
//!extern crate ntext;
|
||||
//!use ntext::to_text;
|
||||
//!fn main() {
|
||||
//! println!("{}",to_text(1312));
|
||||
//! assert_eq!(to_text(1312),"onethousandthreehundredtwelve");
|
||||
//!}
|
||||
//!```
|
||||
//! This fucntion will also return an empty string on input zero
|
||||
|
||||
mod test;
|
||||
/// Convert digit to text.
|
||||
pub fn digit_to_text(digit: u8) -> Option<String> {
|
||||
@@ -54,56 +75,49 @@ fn tens_place(tens: u8, ones: u8) -> Option<String> {
|
||||
}
|
||||
}
|
||||
fn place_value(number: u8, place: u8) -> Option<String> {
|
||||
let mut value = digit_to_text(number).unwrap();
|
||||
match place {
|
||||
p @ 3..=6 => Some({
|
||||
let mut value = digit_to_text(number).unwrap();
|
||||
match p {
|
||||
3 => value.push_str("hundred"),
|
||||
4 => value.push_str("thousand"),
|
||||
// 5 => value.push_str("placeholder"),
|
||||
6 => value.push_str("million"),
|
||||
_ => (),
|
||||
}
|
||||
value
|
||||
}),
|
||||
_ => None,
|
||||
}
|
||||
1 => (),
|
||||
2 => (), //This should never happen as 2 is included in the tens_place_holders
|
||||
3 => value.push_str("hundred"),
|
||||
4 => value.push_str("thousand"),
|
||||
5 => (), // Souldn't happen
|
||||
6 => value.push_str("million"),
|
||||
_ => (),
|
||||
};
|
||||
Some(value)
|
||||
}
|
||||
|
||||
/// Convert u32 to words in a string.
|
||||
pub fn to_text(number: u32) -> String {
|
||||
let mut numtext: String = String::new();
|
||||
let mut last: Option<u8> = None;
|
||||
let tens_place_holders: [u8; 2] = [2, 5];
|
||||
let digits: Vec<u8> = number
|
||||
.to_string()
|
||||
.chars()
|
||||
.map(|d| d.to_digit(10).unwrap() as u8)
|
||||
.collect();
|
||||
let second_digit_array: [usize; 2] = [0, 3];
|
||||
let mut last: Option<u8> = None;
|
||||
if digits.len() == 1 {
|
||||
numtext.push_str(digit_to_text(*digits.last().unwrap()).unwrap().as_str());
|
||||
} else {
|
||||
for (index, digit) in digits.iter().rev().enumerate() {
|
||||
if second_digit_array.contains(&index) {
|
||||
last = Some(digit.clone());
|
||||
continue;
|
||||
}
|
||||
if let Some(last_digit) = last {
|
||||
let mut buffer = String::new();
|
||||
buffer.push_str(tens_place(digit.clone(), last_digit).unwrap().as_str());
|
||||
if index > 2 {
|
||||
buffer.push_str(place_value(0, index as u8).unwrap().as_str());
|
||||
}
|
||||
numtext.insert_str(0, buffer.as_str());
|
||||
last = None;
|
||||
} else {
|
||||
numtext.insert_str(
|
||||
0,
|
||||
place_value(digit.clone(), index as u8 + 1)
|
||||
.unwrap()
|
||||
.as_str(),
|
||||
)
|
||||
}
|
||||
|
||||
let mut place: u8 = digits.len() as u8;
|
||||
|
||||
for (_index, digit) in digits.iter().enumerate() {
|
||||
if tens_place_holders.contains(&place) {
|
||||
last = Some(*digit);
|
||||
place -= 1;
|
||||
continue;
|
||||
}
|
||||
if let Some(last_digit) = last {
|
||||
println!("hello index {}", place);
|
||||
numtext.push_str(tens_place(last_digit, *digit).unwrap().as_str());
|
||||
if place > 2 {
|
||||
numtext.push_str(place_value(0, place).unwrap().as_str());
|
||||
}
|
||||
last = None;
|
||||
} else if *digit != 0 {
|
||||
numtext.push_str(place_value(*digit, place).unwrap().as_str())
|
||||
}
|
||||
place -= 1;
|
||||
}
|
||||
numtext
|
||||
}
|
||||
|
||||
+5
-1
@@ -11,10 +11,14 @@ mod tests {
|
||||
#[test]
|
||||
fn numbers() {
|
||||
use crate::to_text;
|
||||
|
||||
assert_eq!(to_text(1), "one");
|
||||
assert_eq!(to_text(10), "ten");
|
||||
assert_eq!(to_text(100), "onehundred");
|
||||
assert_eq!(to_text(1000), "onethousand");
|
||||
assert_eq!(to_text(12345), "twelvethousandthreehundredfortyfive");
|
||||
assert_eq!(to_text(81123), "eightyonethousandonehundredtwentythree");
|
||||
assert_eq!(to_text(12), "twelve");
|
||||
assert_eq!(to_text(2), "two");
|
||||
}
|
||||
#[test]
|
||||
fn tens() {
|
||||
|
||||
Reference in New Issue
Block a user