Update 2.0
Changes to formatting system Create a formatting struct and then pass it to the to_text macro or the to_text_fmt function to format the strings accordingly Updated docs for the new version
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
index.html
|
||||
|
||||
+1
-3
@@ -1,9 +1,7 @@
|
||||
[package]
|
||||
name = "ntext"
|
||||
version = "0.1.2"
|
||||
version = "0.2.0"
|
||||
authors = ["Uttarayan Mondal <uttarayan21@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Documentation of [ntext-rs](https://uttarayan21.github.io/ntext-rs) generated by cargo doc.
|
||||
|
||||
A rust library to get numbers (u32) as words
|
||||
A rust library to get numbers (usize) as words
|
||||
|
||||
`12345 ` -> `twelvethousandthreehundredfortyfive`
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":false,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":false,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> Freeze for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html\" title=\"trait std::panic::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
@@ -0,0 +1,3 @@
|
||||
(function() {var implementors = {};
|
||||
implementors["ntext"] = [{"text":"impl<'format> <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html\" title=\"trait std::panic::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"ntext/struct.Formatting.html\" title=\"struct ntext::Formatting\">Formatting</a><'format>","synthetic":true,"types":["ntext::formatting::Formatting"]}];
|
||||
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
<!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="List of all items in this crate"><meta name="keywords" content="rust, rustlang, rust-lang"><title>List of all items in this crate</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.2</p></div><a id="all-types" href="index.html"><p>Back to index</p></a></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>
|
||||
<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.2.0</p></div><a id="all-types" href="index.html"><p>Back to index</p></a></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">List of all items</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>
|
||||
</span>
|
||||
<span class="in-band">List of all items</span></h1><h3 id="Macros">Macros</h3><ul class="macros docblock"><li><a href="macro.to_text.html">to_text</a></li></ul><h3 id="Functions">Functions</h3><ul class="functions docblock"><li><a href="fn.digit_to_text.html">digit_to_text</a></li><li><a href="fn.to_text_no_seperator.html">to_text_no_seperator</a></li><li><a href="fn.to_text_with_seperator.html">to_text_with_seperator</a></li></ul></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="ntext"></div>
|
||||
<span class="in-band">List of all items</span></h1><h3 id="Structs">Structs</h3><ul class="structs docblock"><li><a href="struct.Formatting.html">Formatting</a></li></ul><h3 id="Macros">Macros</h3><ul class="macros docblock"><li><a href="macro.to_text.html">to_text</a></li></ul><h3 id="Functions">Functions</h3><ul class="functions docblock"><li><a href="fn.digit_to_text.html">digit_to_text</a></li><li><a href="fn.to_text_fmt.html">to_text_fmt</a></li></ul></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 digit to words in a string."><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#31-45" 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 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="">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/numtext.rs.html#4-34" 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>, capitalize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</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 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>
|
||||
@@ -0,0 +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 usize to words in a string seperated by a seperator."><meta name="keywords" content="rust, rustlang, rust-lang, to_text_fmt"><title>ntext::to_text_fmt - 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_fmt" 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_fmt</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/numtext.rs.html#139-177" title="goto source code">[src]</a></span></h1><pre class="rust fn">pub fn to_text_fmt(number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, fmt: &<a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</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 usize to words in a string seperated by a seperator.</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>
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../ntext/struct.Formatting.html">
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../ntext/struct.Formatting.html">../../ntext/struct.Formatting.html</a>...</p>
|
||||
<script>location.replace("../../ntext/struct.Formatting.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
||||
+19
-19
@@ -1,32 +1,32 @@
|
||||
<!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">
|
||||
<!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="Example program with default formatting"><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.2</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="#macros">Macros</a></li><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-74" 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>
|
||||
<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.2.0</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="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><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-39" title="goto source code">[src]</a></span></h1><div class="docblock"><p>Example program with default formatting</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="macro">to_text</span><span class="macro">!</span>(<span class="number">1312</span>));
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">1312</span>),<span class="string">"onethousandthreehundredtwelve"</span>);
|
||||
<span class="macro">println</span><span class="macro">!</span>(<span class="string">"{}"</span>,<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">7123</span>));
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">7123</span>,<span class="string">" "</span>),<span class="string">"seven thousand one hundred twenty three"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">7123</span>),<span class="string">"Seven Thousand,One Hundred,Twenty-Three"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">1000</span>),<span class="string">"One Thousand"</span>);
|
||||
}</pre></div>
|
||||
<p>This macro will also return an empty string on input zero</p>
|
||||
<p>Example program with custom formatting</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">Formatting</span>,<span class="ident">to_text</span>};
|
||||
<span class="kw">fn</span> <span class="ident">main</span>() {
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">1000</span>, <span class="kw-2">&</span><span class="ident">Formatting</span>::<span class="ident">none</span>().<span class="ident">capitalize</span>()),<span class="string">"OneThousand"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="macro">to_text</span><span class="macro">!</span>(<span class="number">34123</span>, <span class="kw-2">&</span><span class="ident">Formatting</span>::<span class="ident">with_seperator</span>(<span class="string">"#"</span>).<span class="ident">capitalize</span>()),<span class="string">"Thirty#Four#Thousand#One#Hundred#Twenty#Three"</span>);
|
||||
}</pre></div>
|
||||
<p>This macro will also return an empty string on input zero
|
||||
You can also create the Formatting struct manually</p>
|
||||
</div><h2 id="macros" class="section-header"><a href="#macros">Macros</a></h2>
|
||||
<table><tr class="module-item"><td><a class="macro" href="macro.to_text.html" title="ntext::to_text macro">to_text</a></td><td class="docblock-short"><p>Macro which supports both seperator and without it</p>
|
||||
</td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
|
||||
<table><tr class="module-item"><td><a class="struct" href="struct.Formatting.html" title="ntext::Formatting struct">Formatting</a></td><td class="docblock-short"><p>Set the formatting of the output </p>
|
||||
</td></tr></table><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 words in a string.</p>
|
||||
</td></tr><tr class="module-item"><td><a class="fn" href="fn.to_text_no_seperator.html" title="ntext::to_text_no_seperator fn">to_text_no_seperator</a></td><td class="docblock-short"><p>Convert u32 to words in a string.</p>
|
||||
</td></tr><tr class="module-item"><td><a class="fn" href="fn.to_text_with_seperator.html" title="ntext::to_text_with_seperator fn">to_text_with_seperator</a></td><td class="docblock-short"><p>Convert u32 to words in a string seperated by a seperator.</p>
|
||||
</td></tr><tr class="module-item"><td><a class="fn" href="fn.to_text_fmt.html" title="ntext::to_text_fmt fn">to_text_fmt</a></td><td class="docblock-short"><p>Convert usize to words in a string seperated by a seperator.</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>
|
||||
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!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="Macro which supports both seperator and without it"><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 macro"><!--[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="macro" 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">Macro <a href="index.html">ntext</a>::<wbr><a class="macro" 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#67-74" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><div class="example-wrap"><pre class="rust macro">
|
||||
<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">Macro <a href="index.html">ntext</a>::<wbr><a class="macro" 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#32-39" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><div class="example-wrap"><pre class="rust macro">
|
||||
<span class="macro">macro_rules</span><span class="macro">!</span> <span class="ident">to_text</span> {
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> { ... };
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">seperator</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> { ... };
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">formatting</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> { ... };
|
||||
}</pre></div>
|
||||
</div><div class="docblock"><p>Macro which supports both seperator and without it</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>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../ntext/fn.digit_to_text.html">
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../ntext/fn.digit_to_text.html">../../ntext/fn.digit_to_text.html</a>...</p>
|
||||
<script>location.replace("../../ntext/fn.digit_to_text.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../ntext/fn.to_text_fmt.html">
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../ntext/fn.to_text_fmt.html">../../ntext/fn.to_text_fmt.html</a>...</p>
|
||||
<script>location.replace("../../ntext/fn.to_text_fmt.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +1 @@
|
||||
initSidebarItems({"fn":[["digit_to_text","Convert digit to words in a string."],["to_text_no_seperator","Convert u32 to words in a string."],["to_text_with_seperator","Convert u32 to words in a string seperated by a seperator."]],"macro":[["to_text","Macro which supports both seperator and without it"]]});
|
||||
initSidebarItems({"fn":[["digit_to_text","Convert digit to words in a string."],["to_text_fmt","Convert usize to words in a string seperated by a seperator."]],"macro":[["to_text","Macro which supports both seperator and without it"]],"struct":[["Formatting","Set the formatting of the output "]]});
|
||||
@@ -0,0 +1,36 @@
|
||||
<!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="Set the formatting of the output "><meta name="keywords" content="rust, rustlang, rust-lang, Formatting"><title>ntext::Formatting - 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 struct"><!--[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">Struct Formatting</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#fields">Fields</a><div class="sidebar-links"><a href="#structfield.capitalize">capitalize</a><a href="#structfield.digit_seperator">digit_seperator</a><a href="#structfield.place_seperator">place_seperator</a><a href="#structfield.tens_seperator">tens_seperator</a></div><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.capitalize">capitalize</a><a href="#method.decapitalize">decapitalize</a><a href="#method.default">default</a><a href="#method.none">none</a><a href="#method.with_seperator">with_seperator</a></div><a class="sidebar-title" href="#trait-implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow<T></a><a href="#impl-BorrowMut%3CT%3E">BorrowMut<T></a><a href="#impl-From%3CT%3E">From<T></a><a href="#impl-Into%3CU%3E">Into<U></a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom<U></a><a href="#impl-TryInto%3CU%3E">TryInto<U></a></div></div><p class="location"><a href="index.html">ntext</a></p><div id="sidebar-vars" data-name="Formatting" data-ty="struct" 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">Struct <a href="index.html">ntext</a>::<wbr><a class="struct" href="">Formatting</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/formatting.rs.html#3-12" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust struct">pub struct Formatting<'format> {
|
||||
pub capitalize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
|
||||
pub digit_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>,
|
||||
pub place_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>,
|
||||
pub tens_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>>,
|
||||
}</pre></div><div class="docblock"><p>Set the formatting of the output </p>
|
||||
</div><h2 id="fields" class="fields small-section-header">
|
||||
Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.capitalize" class="structfield small-section-header"><a href="#structfield.capitalize" class="anchor field"></a><code>capitalize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>capitalize the start of the word.</p>
|
||||
</div><span id="structfield.digit_seperator" class="structfield small-section-header"><a href="#structfield.digit_seperator" class="anchor field"></a><code>digit_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>></code></span><div class="docblock"><p>Set the seperator in between digits like “threehundred,twentytwo”.</p>
|
||||
</div><span id="structfield.place_seperator" class="structfield small-section-header"><a href="#structfield.place_seperator" class="anchor field"></a><code>place_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>></code></span><div class="docblock"><p>Set the seperator in between words like “three/hundred”.</p>
|
||||
</div><span id="structfield.tens_seperator" class="structfield small-section-header"><a href="#structfield.tens_seperator" class="anchor field"></a><code>tens_seperator: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>></code></span><div class="docblock"><p>Set the seperator between tens place digits like “twenty-two”.</p>
|
||||
</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl<'format> <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl" class="anchor"></a><a class="srclink" href="../src/ntext/formatting.rs.html#14-62" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.default" class="method"><code>pub fn <a href="#method.default" class="fnname">default</a>() -> Self</code><a class="srclink" href="../src/ntext/formatting.rs.html#16-23" title="goto source code">[src]</a></h4><div class="docblock"><p>Get the default formatting.</p>
|
||||
</div><h4 id="method.none" class="method"><code>pub fn <a href="#method.none" class="fnname">none</a>() -> Self</code><a class="srclink" href="../src/ntext/formatting.rs.html#25-32" title="goto source code">[src]</a></h4><div class="docblock"><p>No formatting at all</p>
|
||||
</div><h4 id="method.with_seperator" class="method"><code>pub fn <a href="#method.with_seperator" class="fnname">with_seperator</a>(seperator: &'format <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> Self</code><a class="srclink" href="../src/ntext/formatting.rs.html#34-41" title="goto source code">[src]</a></h4><div class="docblock"><p>With same formatting for all</p>
|
||||
</div><h4 id="method.capitalize" class="method"><code>pub fn <a href="#method.capitalize" class="fnname">capitalize</a>(&mut self) -> Self</code><a class="srclink" href="../src/ntext/formatting.rs.html#43-51" title="goto source code">[src]</a></h4><div class="docblock"><p>Capitalize the formatting</p>
|
||||
</div><h4 id="method.decapitalize" class="method"><code>pub fn <a href="#method.decapitalize" class="fnname">decapitalize</a>(&mut self) -> Self</code><a class="srclink" href="../src/ntext/formatting.rs.html#53-61" title="goto source code">[src]</a></h4><div class="docblock"><p>Lower case the formatting struct</p>
|
||||
</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><h3 id="impl-Clone" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-Clone" class="anchor"></a><a class="srclink" href="../src/ntext/formatting.rs.html#2" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.clone" class="method hidden"><code>fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&self) -> <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a class="srclink" href="../src/ntext/formatting.rs.html#2" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
|
||||
</div><h4 id="method.clone_from" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>Self)</code><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#128" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
|
||||
</div></div><h3 id="impl-Copy" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-Copy" class="anchor"></a><a class="srclink" href="../src/ntext/formatting.rs.html#2" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-RefUnwindSafe" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-Send" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-Sync" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-Unpin" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl<'format> <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="struct" href="../ntext/struct.Formatting.html" title="struct ntext::Formatting">Formatting</a><'format></code><a href="#impl-UnwindSafe" class="anchor"></a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
|
||||
</div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
|
||||
</div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T <span class="where fmt-newline">where<br> T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
|
||||
</div></div><h3 id="impl-From%3CT%3E" class="impl"><code class="in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</code><a href="#impl-From%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#545-549" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.from" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -> T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#546" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
|
||||
</div></div><h3 id="impl-Into%3CU%3E" class="impl"><code class="in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>, </span></code><a href="#impl-Into%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#534-541" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.into" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -> U</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#538" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
|
||||
</div></div><h3 id="impl-ToOwned" class="impl"><code class="in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T <span class="where fmt-newline">where<br> T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>, </span></code><a href="#impl-ToOwned" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81-93" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="associatedtype.Owned" class="type"><code>type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="type">Owned</a> = T</code></h4><div class='docblock'><p>The resulting type after obtaining ownership.</p>
|
||||
</div><h4 id="method.to_owned" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&self) -> T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#86" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
|
||||
</div><h4 id="method.clone_into" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut </a>T)</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#90" title="goto source code">[src]</a></h4><div class="item-info hidden"><div class="stab unstable"><details><summary><span class="emoji">🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</summary><p>recently added</p>
|
||||
</details></div></div><div class='docblock hidden'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
|
||||
</div></div><h3 id="impl-TryFrom%3CU%3E" class="impl"><code class="in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>, </span></code><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#582-591" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="associatedtype.Error" class="type"><code>type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="type">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
|
||||
</div><h4 id="method.try_from" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#588" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
|
||||
</div></div><h3 id="impl-TryInto%3CU%3E" class="impl"><code class="in-band">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T <span class="where fmt-newline">where<br> U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>, </span></code><a href="#impl-TryInto%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#568-577" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="associatedtype.Error-1" class="type"><code>type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="type">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
|
||||
</div><h4 id="method.try_into" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
|
||||
</div></div></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,4 +1,4 @@
|
||||
var searchIndex = JSON.parse('{\
|
||||
"ntext":{"doc":"","i":[[5,"to_text_no_seperator","ntext","Convert u32 to words in a string.",null,[[["u32",15]],["string",3]]],[5,"to_text_with_seperator","","Convert u32 to words in a string seperated by a seperator.",null,[[["u32",15],["str",15]],["string",3]]],[5,"digit_to_text","","Convert digit to words in a string.",null,[[["u8",15]],[["option",4],["string",3]]]],[14,"to_text","","Macro which supports both seperator and without it",null,null]],"p":[]}\
|
||||
"ntext":{"doc":"Example program with default formatting","i":[[3,"Formatting","ntext","Set the formatting of the output ",null,null],[12,"capitalize","","capitalize the start of the word.",0,null],[12,"digit_seperator","","Set the seperator in between digits like “…",0,null],[12,"place_seperator","","Set the seperator in between words like “three/hundred…",0,null],[12,"tens_seperator","","Set the seperator between tens place digits like “…",0,null],[5,"digit_to_text","","Convert digit to words in a string.",null,[[["bool",15],["u8",15]],[["string",3],["option",4]]]],[5,"to_text_fmt","","Convert usize to words in a string seperated by a …",null,[[["usize",15],["formatting",3]],["string",3]]],[14,"to_text","","Macro which supports both seperator and without it",null,null],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"to_owned","","",0,[[]]],[11,"clone_into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"clone","","",0,[[],["formatting",3]]],[11,"default","","Get the default formatting.",0,[[]]],[11,"none","","No formatting at all",0,[[]]],[11,"with_seperator","","With same formatting for all",0,[[["str",15]]]],[11,"capitalize","","Capitalize the formatting",0,[[]]],[11,"decapitalize","","Lower case the formatting struct",0,[[]]]],"p":[[3,"Formatting"]]}\
|
||||
}');
|
||||
addSearchOptions(searchIndex);initSearch(searchIndex);
|
||||
@@ -1,3 +1,3 @@
|
||||
var N = null;var sourcesIndex = {};
|
||||
sourcesIndex["ntext"] = {"name":"","files":["lib.rs","no_seperator.rs","seperator.rs","test.rs"]};
|
||||
sourcesIndex["ntext"] = {"name":"","files":["formatting.rs","lib.rs","numtext.rs","test.rs"]};
|
||||
createSourceSidebar();
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
<!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="Source of the Rust file `src/formatting.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>formatting.rs - source</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 source"><!--[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></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"><pre class="line-numbers"><span id="1"> 1</span>
|
||||
<span id="2"> 2</span>
|
||||
<span id="3"> 3</span>
|
||||
<span id="4"> 4</span>
|
||||
<span id="5"> 5</span>
|
||||
<span id="6"> 6</span>
|
||||
<span id="7"> 7</span>
|
||||
<span id="8"> 8</span>
|
||||
<span id="9"> 9</span>
|
||||
<span id="10">10</span>
|
||||
<span id="11">11</span>
|
||||
<span id="12">12</span>
|
||||
<span id="13">13</span>
|
||||
<span id="14">14</span>
|
||||
<span id="15">15</span>
|
||||
<span id="16">16</span>
|
||||
<span id="17">17</span>
|
||||
<span id="18">18</span>
|
||||
<span id="19">19</span>
|
||||
<span id="20">20</span>
|
||||
<span id="21">21</span>
|
||||
<span id="22">22</span>
|
||||
<span id="23">23</span>
|
||||
<span id="24">24</span>
|
||||
<span id="25">25</span>
|
||||
<span id="26">26</span>
|
||||
<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>
|
||||
<span id="34">34</span>
|
||||
<span id="35">35</span>
|
||||
<span id="36">36</span>
|
||||
<span id="37">37</span>
|
||||
<span id="38">38</span>
|
||||
<span id="39">39</span>
|
||||
<span id="40">40</span>
|
||||
<span id="41">41</span>
|
||||
<span id="42">42</span>
|
||||
<span id="43">43</span>
|
||||
<span id="44">44</span>
|
||||
<span id="45">45</span>
|
||||
<span id="46">46</span>
|
||||
<span id="47">47</span>
|
||||
<span id="48">48</span>
|
||||
<span id="49">49</span>
|
||||
<span id="50">50</span>
|
||||
<span id="51">51</span>
|
||||
<span id="52">52</span>
|
||||
<span id="53">53</span>
|
||||
<span id="54">54</span>
|
||||
<span id="55">55</span>
|
||||
<span id="56">56</span>
|
||||
<span id="57">57</span>
|
||||
<span id="58">58</span>
|
||||
<span id="59">59</span>
|
||||
<span id="60">60</span>
|
||||
<span id="61">61</span>
|
||||
<span id="62">62</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="doccomment">/// Set the formatting of the output </span>
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Formatting</span><span class="op"><</span><span class="lifetime">'format</span><span class="op">></span> {
|
||||
<span class="doccomment">/// capitalize the start of the word.</span>
|
||||
<span class="kw">pub</span> <span class="ident">capitalize</span>: <span class="ident">bool</span>,
|
||||
<span class="doccomment">/// Set the seperator in between digits like "threehundred,twentytwo".</span>
|
||||
<span class="kw">pub</span> <span class="ident">digit_seperator</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'format</span> <span class="ident">str</span><span class="op">></span>,
|
||||
<span class="doccomment">/// Set the seperator in between words like "three/hundred".</span>
|
||||
<span class="kw">pub</span> <span class="ident">place_seperator</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'format</span> <span class="ident">str</span><span class="op">></span>,
|
||||
<span class="doccomment">/// Set the seperator between tens place digits like "twenty-two".</span>
|
||||
<span class="kw">pub</span> <span class="ident">tens_seperator</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="lifetime">'format</span> <span class="ident">str</span><span class="op">></span>,
|
||||
}
|
||||
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="lifetime">'format</span><span class="op">></span> <span class="ident">Formatting</span><span class="op"><</span><span class="lifetime">'format</span><span class="op">></span> {
|
||||
<span class="doccomment">/// Get the default formatting.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">default</span>() <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">capitalize</span>: <span class="bool-val">true</span>,
|
||||
<span class="ident">digit_seperator</span>: <span class="prelude-val">Some</span>(<span class="string">","</span>),
|
||||
<span class="ident">place_seperator</span>: <span class="prelude-val">Some</span>(<span class="string">" "</span>),
|
||||
<span class="ident">tens_seperator</span>: <span class="prelude-val">Some</span>(<span class="string">"-"</span>),
|
||||
}
|
||||
}
|
||||
<span class="doccomment">/// No formatting at all</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">none</span>() <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">capitalize</span>: <span class="bool-val">false</span>,
|
||||
<span class="ident">digit_seperator</span>: <span class="prelude-val">None</span>,
|
||||
<span class="ident">place_seperator</span>: <span class="prelude-val">None</span>,
|
||||
<span class="ident">tens_seperator</span>: <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
<span class="doccomment">/// With same formatting for all</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">with_seperator</span>(<span class="ident">seperator</span>: <span class="kw-2">&</span><span class="lifetime">'format</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">capitalize</span>: <span class="bool-val">false</span>,
|
||||
<span class="ident">digit_seperator</span>: <span class="prelude-val">Some</span>(<span class="ident">seperator</span>),
|
||||
<span class="ident">place_seperator</span>: <span class="prelude-val">Some</span>(<span class="ident">seperator</span>),
|
||||
<span class="ident">tens_seperator</span>: <span class="prelude-val">Some</span>(<span class="ident">seperator</span>),
|
||||
}
|
||||
}
|
||||
<span class="doccomment">/// Capitalize the formatting</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">capitalize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">self</span>.<span class="ident">capitalize</span> <span class="op">=</span> <span class="bool-val">true</span>;
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">capitalize</span>: <span class="self">self</span>.<span class="ident">capitalize</span>,
|
||||
<span class="ident">digit_seperator</span>: <span class="self">self</span>.<span class="ident">digit_seperator</span>,
|
||||
<span class="ident">place_seperator</span>: <span class="self">self</span>.<span class="ident">place_seperator</span>,
|
||||
<span class="ident">tens_seperator</span>: <span class="self">self</span>.<span class="ident">tens_seperator</span>,
|
||||
}
|
||||
}
|
||||
<span class="doccomment">/// Lower case the formatting struct</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">decapitalize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">self</span>.<span class="ident">capitalize</span> <span class="op">=</span> <span class="bool-val">false</span>;
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">capitalize</span>: <span class="self">self</span>.<span class="ident">capitalize</span>,
|
||||
<span class="ident">digit_seperator</span>: <span class="self">self</span>.<span class="ident">digit_seperator</span>,
|
||||
<span class="ident">place_seperator</span>: <span class="self">self</span>.<span class="ident">place_seperator</span>,
|
||||
<span class="ident">tens_seperator</span>: <span class="self">self</span>.<span class="ident">tens_seperator</span>,
|
||||
}
|
||||
}
|
||||
}
|
||||
</pre></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 src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>
|
||||
+21
-91
@@ -40,114 +40,44 @@
|
||||
<span id="37">37</span>
|
||||
<span id="38">38</span>
|
||||
<span id="39">39</span>
|
||||
<span id="40">40</span>
|
||||
<span id="41">41</span>
|
||||
<span id="42">42</span>
|
||||
<span id="43">43</span>
|
||||
<span id="44">44</span>
|
||||
<span id="45">45</span>
|
||||
<span id="46">46</span>
|
||||
<span id="47">47</span>
|
||||
<span id="48">48</span>
|
||||
<span id="49">49</span>
|
||||
<span id="50">50</span>
|
||||
<span id="51">51</span>
|
||||
<span id="52">52</span>
|
||||
<span id="53">53</span>
|
||||
<span id="54">54</span>
|
||||
<span id="55">55</span>
|
||||
<span id="56">56</span>
|
||||
<span id="57">57</span>
|
||||
<span id="58">58</span>
|
||||
<span id="59">59</span>
|
||||
<span id="60">60</span>
|
||||
<span id="61">61</span>
|
||||
<span id="62">62</span>
|
||||
<span id="63">63</span>
|
||||
<span id="64">64</span>
|
||||
<span id="65">65</span>
|
||||
<span id="66">66</span>
|
||||
<span id="67">67</span>
|
||||
<span id="68">68</span>
|
||||
<span id="69">69</span>
|
||||
<span id="70">70</span>
|
||||
<span id="71">71</span>
|
||||
<span id="72">72</span>
|
||||
<span id="73">73</span>
|
||||
<span id="74">74</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">//! Example program with default formatting</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">//! println!("{}",to_text!(7123));</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text!(7123," "),"seven thousand one hundred twenty three");</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text!(7123),"Seven Thousand,One Hundred,Twenty-Three");</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text!(1000),"One Thousand");</span>
|
||||
<span class="doccomment">//!}</span>
|
||||
<span class="doccomment">//!```</span>
|
||||
<span class="doccomment">//! Example program with custom formatting</span>
|
||||
<span class="doccomment">//!</span>
|
||||
<span class="doccomment">//!```rust</span>
|
||||
<span class="doccomment">//!extern crate ntext;</span>
|
||||
<span class="doccomment">//!use ntext::{Formatting,to_text};</span>
|
||||
<span class="doccomment">//!fn main() {</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text!(1000, &Formatting::none().capitalize()),"OneThousand");</span>
|
||||
<span class="doccomment">//! assert_eq!(to_text!(34123, &Formatting::with_seperator("#").capitalize()),"Thirty#Four#Thousand#One#Hundred#Twenty#Three");</span>
|
||||
<span class="doccomment">//!}</span>
|
||||
<span class="doccomment">//!```</span>
|
||||
<span class="doccomment">//! This macro will also return an empty string on input zero</span>
|
||||
<span class="doccomment">//! You can also create the Formatting struct manually</span>
|
||||
|
||||
<span class="kw">mod</span> <span class="ident">no_seperator</span>;
|
||||
<span class="kw">mod</span> <span class="ident">seperator</span>;
|
||||
<span class="kw">mod</span> <span class="ident">formatting</span>;
|
||||
<span class="kw">mod</span> <span class="ident">numtext</span>;
|
||||
<span class="kw">mod</span> <span class="ident">test</span>;
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">no_seperator</span>::<span class="ident">to_text_no_seperator</span>;
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">seperator</span>::<span class="ident">to_text_with_seperator</span>;
|
||||
|
||||
<span class="doccomment">/// Convert digit to words in a string.</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> {
|
||||
<span class="kw">match</span> <span class="ident">digit</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">""</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"one"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"two"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"three"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"four"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"five"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"six"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">7</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"seven"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"eight"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">9</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"nine"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
<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="ident">seperator</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">str</span><span class="op">></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">buffer</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">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">seperator</span> {
|
||||
<span class="kw">if</span> <span class="ident">number</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span> {
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">sep</span>)
|
||||
}
|
||||
}
|
||||
<span class="kw">match</span> <span class="ident">place</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">buffer</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">buffer</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">buffer</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">buffer</span>)
|
||||
}
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">formatting</span>::<span class="ident">Formatting</span>;
|
||||
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">numtext</span>::{<span class="ident">digit_to_text</span>, <span class="ident">to_text_fmt</span>};
|
||||
|
||||
<span class="doccomment">/// Macro which supports both seperator and without it</span>
|
||||
<span class="attribute">#[<span class="ident">macro_export</span>]</span>
|
||||
<span class="macro">macro_rules</span><span class="macro">!</span> <span class="ident">to_text</span> {
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="ident">ntext</span>::<span class="ident">to_text_no_seperator</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>);
|
||||
<span class="ident">ntext</span>::<span class="ident">to_text_fmt</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>, <span class="kw-2">&</span><span class="ident">ntext</span>::<span class="ident">Formatting</span>::<span class="ident">default</span>());
|
||||
};
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">seperator</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="ident">ntext</span>::<span class="ident">to_text_with_seperator</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">seperator</span>);
|
||||
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>:<span class="ident">expr</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">formatting</span>:<span class="ident">expr</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="ident">ntext</span>::<span class="ident">to_text_fmt</span>(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">number</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">formatting</span>);
|
||||
};
|
||||
}
|
||||
</pre></div>
|
||||
|
||||
@@ -0,0 +1,361 @@
|
||||
<!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="Source of the Rust file `src/numtext.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>numtext.rs - source</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 source"><!--[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></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"><pre class="line-numbers"><span id="1"> 1</span>
|
||||
<span id="2"> 2</span>
|
||||
<span id="3"> 3</span>
|
||||
<span id="4"> 4</span>
|
||||
<span id="5"> 5</span>
|
||||
<span id="6"> 6</span>
|
||||
<span id="7"> 7</span>
|
||||
<span id="8"> 8</span>
|
||||
<span id="9"> 9</span>
|
||||
<span id="10"> 10</span>
|
||||
<span id="11"> 11</span>
|
||||
<span id="12"> 12</span>
|
||||
<span id="13"> 13</span>
|
||||
<span id="14"> 14</span>
|
||||
<span id="15"> 15</span>
|
||||
<span id="16"> 16</span>
|
||||
<span id="17"> 17</span>
|
||||
<span id="18"> 18</span>
|
||||
<span id="19"> 19</span>
|
||||
<span id="20"> 20</span>
|
||||
<span id="21"> 21</span>
|
||||
<span id="22"> 22</span>
|
||||
<span id="23"> 23</span>
|
||||
<span id="24"> 24</span>
|
||||
<span id="25"> 25</span>
|
||||
<span id="26"> 26</span>
|
||||
<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>
|
||||
<span id="34"> 34</span>
|
||||
<span id="35"> 35</span>
|
||||
<span id="36"> 36</span>
|
||||
<span id="37"> 37</span>
|
||||
<span id="38"> 38</span>
|
||||
<span id="39"> 39</span>
|
||||
<span id="40"> 40</span>
|
||||
<span id="41"> 41</span>
|
||||
<span id="42"> 42</span>
|
||||
<span id="43"> 43</span>
|
||||
<span id="44"> 44</span>
|
||||
<span id="45"> 45</span>
|
||||
<span id="46"> 46</span>
|
||||
<span id="47"> 47</span>
|
||||
<span id="48"> 48</span>
|
||||
<span id="49"> 49</span>
|
||||
<span id="50"> 50</span>
|
||||
<span id="51"> 51</span>
|
||||
<span id="52"> 52</span>
|
||||
<span id="53"> 53</span>
|
||||
<span id="54"> 54</span>
|
||||
<span id="55"> 55</span>
|
||||
<span id="56"> 56</span>
|
||||
<span id="57"> 57</span>
|
||||
<span id="58"> 58</span>
|
||||
<span id="59"> 59</span>
|
||||
<span id="60"> 60</span>
|
||||
<span id="61"> 61</span>
|
||||
<span id="62"> 62</span>
|
||||
<span id="63"> 63</span>
|
||||
<span id="64"> 64</span>
|
||||
<span id="65"> 65</span>
|
||||
<span id="66"> 66</span>
|
||||
<span id="67"> 67</span>
|
||||
<span id="68"> 68</span>
|
||||
<span id="69"> 69</span>
|
||||
<span id="70"> 70</span>
|
||||
<span id="71"> 71</span>
|
||||
<span id="72"> 72</span>
|
||||
<span id="73"> 73</span>
|
||||
<span id="74"> 74</span>
|
||||
<span id="75"> 75</span>
|
||||
<span id="76"> 76</span>
|
||||
<span id="77"> 77</span>
|
||||
<span id="78"> 78</span>
|
||||
<span id="79"> 79</span>
|
||||
<span id="80"> 80</span>
|
||||
<span id="81"> 81</span>
|
||||
<span id="82"> 82</span>
|
||||
<span id="83"> 83</span>
|
||||
<span id="84"> 84</span>
|
||||
<span id="85"> 85</span>
|
||||
<span id="86"> 86</span>
|
||||
<span id="87"> 87</span>
|
||||
<span id="88"> 88</span>
|
||||
<span id="89"> 89</span>
|
||||
<span id="90"> 90</span>
|
||||
<span id="91"> 91</span>
|
||||
<span id="92"> 92</span>
|
||||
<span id="93"> 93</span>
|
||||
<span id="94"> 94</span>
|
||||
<span id="95"> 95</span>
|
||||
<span id="96"> 96</span>
|
||||
<span id="97"> 97</span>
|
||||
<span id="98"> 98</span>
|
||||
<span id="99"> 99</span>
|
||||
<span id="100">100</span>
|
||||
<span id="101">101</span>
|
||||
<span id="102">102</span>
|
||||
<span id="103">103</span>
|
||||
<span id="104">104</span>
|
||||
<span id="105">105</span>
|
||||
<span id="106">106</span>
|
||||
<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>
|
||||
<span id="124">124</span>
|
||||
<span id="125">125</span>
|
||||
<span id="126">126</span>
|
||||
<span id="127">127</span>
|
||||
<span id="128">128</span>
|
||||
<span id="129">129</span>
|
||||
<span id="130">130</span>
|
||||
<span id="131">131</span>
|
||||
<span id="132">132</span>
|
||||
<span id="133">133</span>
|
||||
<span id="134">134</span>
|
||||
<span id="135">135</span>
|
||||
<span id="136">136</span>
|
||||
<span id="137">137</span>
|
||||
<span id="138">138</span>
|
||||
<span id="139">139</span>
|
||||
<span id="140">140</span>
|
||||
<span id="141">141</span>
|
||||
<span id="142">142</span>
|
||||
<span id="143">143</span>
|
||||
<span id="144">144</span>
|
||||
<span id="145">145</span>
|
||||
<span id="146">146</span>
|
||||
<span id="147">147</span>
|
||||
<span id="148">148</span>
|
||||
<span id="149">149</span>
|
||||
<span id="150">150</span>
|
||||
<span id="151">151</span>
|
||||
<span id="152">152</span>
|
||||
<span id="153">153</span>
|
||||
<span id="154">154</span>
|
||||
<span id="155">155</span>
|
||||
<span id="156">156</span>
|
||||
<span id="157">157</span>
|
||||
<span id="158">158</span>
|
||||
<span id="159">159</span>
|
||||
<span id="160">160</span>
|
||||
<span id="161">161</span>
|
||||
<span id="162">162</span>
|
||||
<span id="163">163</span>
|
||||
<span id="164">164</span>
|
||||
<span id="165">165</span>
|
||||
<span id="166">166</span>
|
||||
<span id="167">167</span>
|
||||
<span id="168">168</span>
|
||||
<span id="169">169</span>
|
||||
<span id="170">170</span>
|
||||
<span id="171">171</span>
|
||||
<span id="172">172</span>
|
||||
<span id="173">173</span>
|
||||
<span id="174">174</span>
|
||||
<span id="175">175</span>
|
||||
<span id="176">176</span>
|
||||
<span id="177">177</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">Formatting</span>;
|
||||
|
||||
<span class="doccomment">/// Convert digit to words in a string.</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="ident">capitalize</span>: <span class="ident">bool</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">if</span> <span class="ident">capitalize</span> {
|
||||
<span class="kw">match</span> <span class="ident">digit</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">""</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"One"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Two"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Three"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Four"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Five"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Six"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">7</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Seven"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Eight"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">9</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Nine"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
} <span class="kw">else</span> {
|
||||
<span class="kw">match</span> <span class="ident">digit</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">""</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"one"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"two"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"three"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"four"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"five"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"six"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">7</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"seven"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"eight"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">9</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"nine"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
}
|
||||
<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="ident">fmt</span>: <span class="kw-2">&</span><span class="ident">Formatting</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">buffer</span> <span class="op">=</span> <span class="ident">digit_to_text</span>(<span class="ident">number</span>, <span class="ident">fmt</span>.<span class="ident">capitalize</span>).<span class="ident">unwrap</span>();
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">place_seperator</span> {
|
||||
<span class="kw">if</span> <span class="ident">number</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span> <span class="op">&&</span> <span class="ident">place</span> <span class="op">!</span><span class="op">=</span> <span class="number">1</span> {
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">sep</span>)
|
||||
}
|
||||
}
|
||||
<span class="kw">if</span> <span class="ident">fmt</span>.<span class="ident">capitalize</span> {
|
||||
<span class="kw">match</span> <span class="ident">place</span> {
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> (), <span class="comment">//Can happen but should return the same digit</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">buffer</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">buffer</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">buffer</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="kw">else</span> {
|
||||
<span class="kw">match</span> <span class="ident">place</span> {
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> (), <span class="comment">//Can happen but should return the same digit</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">buffer</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">buffer</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">buffer</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">buffer</span>)
|
||||
}
|
||||
<span class="kw">fn</span> <span class="ident">tens_place</span>(<span class="ident">tens</span>: <span class="ident">u8</span>, <span class="ident">ones</span>: <span class="ident">u8</span>, <span class="ident">fmt</span>: <span class="kw-2">&</span><span class="ident">Formatting</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">match</span> <span class="ident">tens</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="ident">digit_to_text</span>(<span class="ident">ones</span>, <span class="ident">fmt</span>.<span class="ident">capitalize</span>),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> {
|
||||
<span class="kw">if</span> <span class="ident">fmt</span>.<span class="ident">capitalize</span> {
|
||||
<span class="kw">match</span> <span class="ident">ones</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Ten"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Eleven"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Twelve"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Thirteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Fourteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Fifteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Sixteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">7</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Seventeen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Eighteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">9</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"Nineteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
} <span class="kw">else</span> {
|
||||
<span class="kw">match</span> <span class="ident">ones</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"ten"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"eleven"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"twelve"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"thirteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"fourteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"fifteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">6</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"sixteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">7</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"seventeen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"eighteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="number">9</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">Some</span>(<span class="string">"nineteen"</span>.<span class="ident">to_string</span>()),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
}
|
||||
<span class="ident">d</span> @ <span class="number">2</span>..<span class="op">=</span><span class="number">5</span> <span class="op">|</span> <span class="ident">d</span> @ <span class="number">8</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">buffer</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">new</span>();
|
||||
<span class="kw">if</span> <span class="ident">fmt</span>.<span class="ident">capitalize</span> {
|
||||
<span class="kw">match</span> <span class="ident">d</span> {
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"Twenty"</span>),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"Thirty"</span>),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"Forty"</span>),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"Fifty"</span>),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"Eighty"</span>),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> (),
|
||||
}
|
||||
} <span class="kw">else</span> {
|
||||
<span class="kw">match</span> <span class="ident">d</span> {
|
||||
<span class="number">2</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"twenty"</span>),
|
||||
<span class="number">3</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"thirty"</span>),
|
||||
<span class="number">4</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"forty"</span>),
|
||||
<span class="number">5</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"fifty"</span>),
|
||||
<span class="number">8</span> <span class="op">=</span><span class="op">></span> <span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="string">"eighty"</span>),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> (),
|
||||
}
|
||||
}
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">tens_seperator</span> {
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">sep</span>);
|
||||
}
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">digit_to_text</span>(<span class="ident">ones</span>, <span class="ident">fmt</span>.<span class="ident">capitalize</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
<span class="ident">buffer</span>
|
||||
}),
|
||||
<span class="ident">d</span> @ <span class="number">6</span>..<span class="op">=</span><span class="number">9</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">buffer</span> <span class="op">=</span> <span class="ident">digit_to_text</span>(<span class="ident">d</span>, <span class="ident">fmt</span>.<span class="ident">capitalize</span>).<span class="ident">unwrap</span>() <span class="op">+</span> <span class="string">"ty"</span>;
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">tens_seperator</span> {
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">sep</span>);
|
||||
}
|
||||
<span class="ident">buffer</span>.<span class="ident">push_str</span>(<span class="ident">digit_to_text</span>(<span class="ident">ones</span>, <span class="ident">fmt</span>.<span class="ident">capitalize</span>).<span class="ident">unwrap</span>().<span class="ident">as_str</span>());
|
||||
<span class="ident">buffer</span>
|
||||
}),
|
||||
<span class="kw">_</span> <span class="op">=</span><span class="op">></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
|
||||
<span class="doccomment">/// Convert usize to words in a string seperated by a seperator.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">to_text_fmt</span>(<span class="ident">number</span>: <span class="ident">usize</span>, <span class="ident">fmt</span>: <span class="kw-2">&</span><span class="ident">Formatting</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="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-2">*</span><span class="ident">digit</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span> <span class="op">&&</span> <span class="ident">place</span> <span class="op">!</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="op">&&</span> <span class="ident">numtext</span> <span class="op">!</span><span class="op">=</span> <span class="string">""</span> {
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">digit_seperator</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">sep</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="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">fmt</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="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">sep</span>) <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">digit_seperator</span> {
|
||||
<span class="ident">numtext</span>.<span class="ident">push_str</span>(<span class="ident">sep</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">fmt</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">fmt</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>
|
||||
}
|
||||
</pre></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 src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>
|
||||
@@ -90,7 +90,7 @@
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">digit_to_text</span>, <span class="ident">place_value</span>};
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">tens_place_seperator</span>(<span class="ident">tens</span>: <span class="ident">u8</span>, <span class="ident">ones</span>: <span class="ident">u8</span>, <span class="ident">seperator</span>: <span class="kw-2">&</span><span class="ident">str</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">fn</span> <span class="ident">tens_place</span>(<span class="ident">tens</span>: <span class="ident">u8</span>, <span class="ident">ones</span>: <span class="ident">u8</span>, <span class="ident">seperator</span>: <span class="kw-2">&</span><span class="ident">str</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">match</span> <span class="ident">tens</span> {
|
||||
<span class="number">0</span> <span class="op">=</span><span class="op">></span> <span class="ident">digit_to_text</span>(<span class="ident">ones</span>),
|
||||
<span class="number">1</span> <span class="op">=</span><span class="op">></span> <span class="kw">match</span> <span class="ident">ones</span> {
|
||||
|
||||
+16
-32
@@ -29,49 +29,33 @@
|
||||
<span id="26">26</span>
|
||||
<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>
|
||||
<span id="34">34</span>
|
||||
<span id="35">35</span>
|
||||
<span id="36">36</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> {
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">digits</span>() {
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">digit_to_text</span>;
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">9</span>).<span class="ident">unwrap</span>(), <span class="string">"nine"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">3</span>).<span class="ident">unwrap</span>(), <span class="string">"three"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">7</span>).<span class="ident">unwrap</span>(), <span class="string">"seven"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">5</span>).<span class="ident">unwrap</span>(), <span class="string">"five"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">9</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>(), <span class="string">"nine"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">3</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>(), <span class="string">"three"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">7</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>(), <span class="string">"seven"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">5</span>, <span class="bool-val">false</span>).<span class="ident">unwrap</span>(), <span class="string">"five"</span>);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">digit_to_text</span>(<span class="number">5</span>, <span class="bool-val">true</span>).<span class="ident">unwrap</span>(), <span class="string">"Five"</span>);
|
||||
}
|
||||
<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_no_seperator</span> <span class="kw">as</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="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">numbers_seperator</span>() {
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">to_text_with_seperator</span> <span class="kw">as</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">103</span>, <span class="string">"/"</span>), <span class="string">"one/hundred/three"</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">"/"</span>), <span class="string">"one/thousand"</span>);
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">to_text_fmt</span> <span class="kw">as</span> <span class="ident">to_text</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">Formatting</span>;
|
||||
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">Formatting</span>::<span class="ident">none</span>();
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">to_text</span>(<span class="number">1</span>, <span class="ident">fmt</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="ident">fmt</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="ident">fmt</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="ident">fmt</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="ident">fmt</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">12345</span>, <span class="string">"/"</span>),
|
||||
<span class="string">"twelve/thousand/three/hundred/forty/five"</span>
|
||||
);
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||||
<span class="ident">to_text</span>(<span class="number">651243</span>, <span class="string">"/"</span>),
|
||||
<span class="string">"six/million/fifty/one/thousand/two/hundred/forty/three"</span>
|
||||
<span class="ident">to_text</span>(<span class="number">81123</span>, <span class="ident">fmt</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="ident">fmt</span>), <span class="string">"twelve"</span>);
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/// Set the formatting of the output
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct Formatting<'format> {
|
||||
/// capitalize the start of the word.
|
||||
pub capitalize: bool,
|
||||
/// Set the seperator in between digits like "threehundred,twentytwo".
|
||||
pub digit_seperator: Option<&'format str>,
|
||||
/// Set the seperator in between words like "three/hundred".
|
||||
pub place_seperator: Option<&'format str>,
|
||||
/// Set the seperator between tens place digits like "twenty-two".
|
||||
pub tens_seperator: Option<&'format str>,
|
||||
}
|
||||
|
||||
impl<'format> Formatting<'format> {
|
||||
/// Get the default formatting.
|
||||
pub fn default() -> Self {
|
||||
Self {
|
||||
capitalize: true,
|
||||
digit_seperator: Some(","),
|
||||
place_seperator: Some(" "),
|
||||
tens_seperator: Some("-"),
|
||||
}
|
||||
}
|
||||
/// No formatting at all
|
||||
pub fn none() -> Self {
|
||||
Self {
|
||||
capitalize: false,
|
||||
digit_seperator: None,
|
||||
place_seperator: None,
|
||||
tens_seperator: None,
|
||||
}
|
||||
}
|
||||
/// With same formatting for all
|
||||
pub fn with_seperator(seperator: &'format str) -> Self {
|
||||
Self {
|
||||
capitalize: false,
|
||||
digit_seperator: Some(seperator),
|
||||
place_seperator: Some(seperator),
|
||||
tens_seperator: Some(seperator),
|
||||
}
|
||||
}
|
||||
/// Capitalize the formatting
|
||||
pub fn capitalize(&mut self) -> Self {
|
||||
self.capitalize = true;
|
||||
Self {
|
||||
capitalize: self.capitalize,
|
||||
digit_seperator: self.digit_seperator,
|
||||
place_seperator: self.place_seperator,
|
||||
tens_seperator: self.tens_seperator,
|
||||
}
|
||||
}
|
||||
/// Lower case the formatting struct
|
||||
pub fn decapitalize(&mut self) -> Self {
|
||||
self.capitalize = false;
|
||||
Self {
|
||||
capitalize: self.capitalize,
|
||||
digit_seperator: self.digit_seperator,
|
||||
place_seperator: self.place_seperator,
|
||||
tens_seperator: self.tens_seperator,
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
-56
@@ -1,74 +1,39 @@
|
||||
//!```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.
|
||||
//!
|
||||
//! Example program with default formatting
|
||||
//!```rust
|
||||
//!extern crate ntext;
|
||||
//!use ntext::to_text;
|
||||
//!fn main() {
|
||||
//! println!("{}",to_text!(1312));
|
||||
//! assert_eq!(to_text!(1312),"onethousandthreehundredtwelve");
|
||||
//! println!("{}",to_text!(7123));
|
||||
//! assert_eq!(to_text!(7123," "),"seven thousand one hundred twenty three");
|
||||
//! assert_eq!(to_text!(7123),"Seven Thousand,One Hundred,Twenty-Three");
|
||||
//! assert_eq!(to_text!(1000),"One Thousand");
|
||||
//!}
|
||||
//!```
|
||||
//! Example program with custom formatting
|
||||
//!
|
||||
//!```rust
|
||||
//!extern crate ntext;
|
||||
//!use ntext::{Formatting,to_text};
|
||||
//!fn main() {
|
||||
//! assert_eq!(to_text!(1000, &Formatting::none().capitalize()),"OneThousand");
|
||||
//! assert_eq!(to_text!(34123, &Formatting::with_seperator("#").capitalize()),"Thirty#Four#Thousand#One#Hundred#Twenty#Three");
|
||||
//!}
|
||||
//!```
|
||||
//! This macro will also return an empty string on input zero
|
||||
//! You can also create the Formatting struct manually
|
||||
|
||||
mod no_seperator;
|
||||
mod seperator;
|
||||
mod formatting;
|
||||
mod numtext;
|
||||
mod test;
|
||||
pub use no_seperator::to_text_no_seperator;
|
||||
pub use seperator::to_text_with_seperator;
|
||||
|
||||
/// Convert digit to words in a string.
|
||||
pub fn digit_to_text(digit: u8) -> Option<String> {
|
||||
match digit {
|
||||
0 => Some("".to_string()),
|
||||
1 => Some("one".to_string()),
|
||||
2 => Some("two".to_string()),
|
||||
3 => Some("three".to_string()),
|
||||
4 => Some("four".to_string()),
|
||||
5 => Some("five".to_string()),
|
||||
6 => Some("six".to_string()),
|
||||
7 => Some("seven".to_string()),
|
||||
8 => Some("eight".to_string()),
|
||||
9 => Some("nine".to_string()),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
fn place_value(number: u8, place: u8, seperator: Option<&str>) -> Option<String> {
|
||||
let mut buffer = digit_to_text(number).unwrap();
|
||||
if let Some(sep) = seperator {
|
||||
if number != 0 {
|
||||
buffer.push_str(sep)
|
||||
}
|
||||
}
|
||||
match place {
|
||||
1 => (),
|
||||
2 => (), //This should never happen as 2 is included in the tens_place_holders
|
||||
3 => buffer.push_str("hundred"),
|
||||
4 => buffer.push_str("thousand"),
|
||||
5 => (), // Souldn't happen
|
||||
6 => buffer.push_str("million"),
|
||||
_ => (),
|
||||
};
|
||||
Some(buffer)
|
||||
}
|
||||
pub use formatting::Formatting;
|
||||
pub use numtext::{digit_to_text, to_text_fmt};
|
||||
|
||||
/// Macro which supports both seperator and without it
|
||||
#[macro_export]
|
||||
macro_rules! to_text {
|
||||
($number:expr) => {
|
||||
ntext::to_text_no_seperator($number);
|
||||
ntext::to_text_fmt($number, &ntext::Formatting::default());
|
||||
};
|
||||
($number:expr, $seperator:expr) => {
|
||||
ntext::to_text_with_seperator($number, $seperator);
|
||||
($number:expr, $formatting:expr) => {
|
||||
ntext::to_text_fmt($number, $formatting);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
use crate::{digit_to_text, place_value};
|
||||
fn tens_place(tens: u8, ones: u8) -> Option<String> {
|
||||
match tens {
|
||||
0 => digit_to_text(ones),
|
||||
1 => match ones {
|
||||
0 => Some("ten".to_string()),
|
||||
1 => Some("eleven".to_string()),
|
||||
2 => Some("twelve".to_string()),
|
||||
3 => Some("thirteen".to_string()),
|
||||
4 => Some("fourteen".to_string()),
|
||||
5 => Some("fifteen".to_string()),
|
||||
6 => Some("sixteen".to_string()),
|
||||
7 => Some("seventeen".to_string()),
|
||||
8 => Some("eighteen".to_string()),
|
||||
9 => Some("nineteen".to_string()),
|
||||
_ => None,
|
||||
},
|
||||
d @ 2..=5 | d @ 8 => Some({
|
||||
let mut buffer = String::new();
|
||||
match d {
|
||||
2 => buffer.push_str("twenty"),
|
||||
3 => buffer.push_str("thirty"),
|
||||
4 => buffer.push_str("forty"),
|
||||
5 => buffer.push_str("fifty"),
|
||||
8 => buffer.push_str("eighty"),
|
||||
_ => (),
|
||||
}
|
||||
buffer.push_str(digit_to_text(ones).unwrap().as_str());
|
||||
buffer
|
||||
}),
|
||||
d @ 6..=9 => Some({
|
||||
let mut string = digit_to_text(d).unwrap() + "ty";
|
||||
string.push_str(digit_to_text(ones).unwrap().as_str());
|
||||
string
|
||||
}),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert u32 to words in a string.
|
||||
pub fn to_text_no_seperator(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 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 {
|
||||
numtext.push_str(tens_place(last_digit, *digit).unwrap().as_str());
|
||||
if place > 2 {
|
||||
numtext.push_str(place_value(0, place, None).unwrap().as_str());
|
||||
}
|
||||
last = None;
|
||||
} else if *digit != 0 {
|
||||
numtext.push_str(place_value(*digit, place, None).unwrap().as_str())
|
||||
}
|
||||
place -= 1;
|
||||
}
|
||||
numtext
|
||||
}
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
use crate::Formatting;
|
||||
|
||||
/// Convert digit to words in a string.
|
||||
pub fn digit_to_text(digit: u8, capitalize: bool) -> Option<String> {
|
||||
if capitalize {
|
||||
match digit {
|
||||
0 => Some("".to_string()),
|
||||
1 => Some("One".to_string()),
|
||||
2 => Some("Two".to_string()),
|
||||
3 => Some("Three".to_string()),
|
||||
4 => Some("Four".to_string()),
|
||||
5 => Some("Five".to_string()),
|
||||
6 => Some("Six".to_string()),
|
||||
7 => Some("Seven".to_string()),
|
||||
8 => Some("Eight".to_string()),
|
||||
9 => Some("Nine".to_string()),
|
||||
_ => None,
|
||||
}
|
||||
} else {
|
||||
match digit {
|
||||
0 => Some("".to_string()),
|
||||
1 => Some("one".to_string()),
|
||||
2 => Some("two".to_string()),
|
||||
3 => Some("three".to_string()),
|
||||
4 => Some("four".to_string()),
|
||||
5 => Some("five".to_string()),
|
||||
6 => Some("six".to_string()),
|
||||
7 => Some("seven".to_string()),
|
||||
8 => Some("eight".to_string()),
|
||||
9 => Some("nine".to_string()),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
fn place_value(number: u8, place: u8, fmt: &Formatting) -> Option<String> {
|
||||
let mut buffer = digit_to_text(number, fmt.capitalize).unwrap();
|
||||
if let Some(sep) = fmt.place_seperator {
|
||||
if number != 0 && place != 1 {
|
||||
buffer.push_str(sep)
|
||||
}
|
||||
}
|
||||
if fmt.capitalize {
|
||||
match place {
|
||||
1 => (), //Can happen but should return the same digit
|
||||
2 => (), //This should never happen as 2 is included in the tens_place_holders
|
||||
3 => buffer.push_str("Hundred"),
|
||||
4 => buffer.push_str("Thousand"),
|
||||
5 => (), // Souldn't happen
|
||||
6 => buffer.push_str("Million"),
|
||||
_ => (),
|
||||
};
|
||||
} else {
|
||||
match place {
|
||||
1 => (), //Can happen but should return the same digit
|
||||
2 => (), //This should never happen as 2 is included in the tens_place_holders
|
||||
3 => buffer.push_str("hundred"),
|
||||
4 => buffer.push_str("thousand"),
|
||||
5 => (), // Souldn't happen
|
||||
6 => buffer.push_str("million"),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
Some(buffer)
|
||||
}
|
||||
fn tens_place(tens: u8, ones: u8, fmt: &Formatting) -> Option<String> {
|
||||
match tens {
|
||||
0 => digit_to_text(ones, fmt.capitalize),
|
||||
1 => {
|
||||
if fmt.capitalize {
|
||||
match ones {
|
||||
0 => Some("Ten".to_string()),
|
||||
1 => Some("Eleven".to_string()),
|
||||
2 => Some("Twelve".to_string()),
|
||||
3 => Some("Thirteen".to_string()),
|
||||
4 => Some("Fourteen".to_string()),
|
||||
5 => Some("Fifteen".to_string()),
|
||||
6 => Some("Sixteen".to_string()),
|
||||
7 => Some("Seventeen".to_string()),
|
||||
8 => Some("Eighteen".to_string()),
|
||||
9 => Some("Nineteen".to_string()),
|
||||
_ => None,
|
||||
}
|
||||
} else {
|
||||
match ones {
|
||||
0 => Some("ten".to_string()),
|
||||
1 => Some("eleven".to_string()),
|
||||
2 => Some("twelve".to_string()),
|
||||
3 => Some("thirteen".to_string()),
|
||||
4 => Some("fourteen".to_string()),
|
||||
5 => Some("fifteen".to_string()),
|
||||
6 => Some("sixteen".to_string()),
|
||||
7 => Some("seventeen".to_string()),
|
||||
8 => Some("eighteen".to_string()),
|
||||
9 => Some("nineteen".to_string()),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
d @ 2..=5 | d @ 8 => Some({
|
||||
let mut buffer = String::new();
|
||||
if fmt.capitalize {
|
||||
match d {
|
||||
2 => buffer.push_str("Twenty"),
|
||||
3 => buffer.push_str("Thirty"),
|
||||
4 => buffer.push_str("Forty"),
|
||||
5 => buffer.push_str("Fifty"),
|
||||
8 => buffer.push_str("Eighty"),
|
||||
_ => (),
|
||||
}
|
||||
} else {
|
||||
match d {
|
||||
2 => buffer.push_str("twenty"),
|
||||
3 => buffer.push_str("thirty"),
|
||||
4 => buffer.push_str("forty"),
|
||||
5 => buffer.push_str("fifty"),
|
||||
8 => buffer.push_str("eighty"),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
if let Some(sep) = fmt.tens_seperator {
|
||||
buffer.push_str(sep);
|
||||
}
|
||||
buffer.push_str(digit_to_text(ones, fmt.capitalize).unwrap().as_str());
|
||||
buffer
|
||||
}),
|
||||
d @ 6..=9 => Some({
|
||||
let mut buffer = digit_to_text(d, fmt.capitalize).unwrap() + "ty";
|
||||
if let Some(sep) = fmt.tens_seperator {
|
||||
buffer.push_str(sep);
|
||||
}
|
||||
buffer.push_str(digit_to_text(ones, fmt.capitalize).unwrap().as_str());
|
||||
buffer
|
||||
}),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert usize to words in a string seperated by a seperator.
|
||||
pub fn to_text_fmt(number: usize, fmt: &Formatting) -> 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 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 *digit != 0 && place != digits.len() as u8 && numtext != "" {
|
||||
if let Some(sep) = fmt.digit_seperator {
|
||||
numtext.push_str(sep);
|
||||
}
|
||||
}
|
||||
if let Some(last_digit) = last {
|
||||
numtext.push_str(tens_place(last_digit, *digit, fmt).unwrap().as_str());
|
||||
if place > 2 {
|
||||
if let Some(sep) = fmt.digit_seperator {
|
||||
numtext.push_str(sep);
|
||||
}
|
||||
numtext.push_str(place_value(0, place, fmt).unwrap().as_str());
|
||||
}
|
||||
last = None;
|
||||
} else if *digit != 0 {
|
||||
numtext.push_str(place_value(*digit, place, fmt).unwrap().as_str());
|
||||
}
|
||||
place -= 1;
|
||||
}
|
||||
numtext
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
use crate::{digit_to_text, place_value};
|
||||
|
||||
fn tens_place_seperator(tens: u8, ones: u8, seperator: &str) -> Option<String> {
|
||||
match tens {
|
||||
0 => digit_to_text(ones),
|
||||
1 => match ones {
|
||||
0 => Some("ten".to_string()),
|
||||
1 => Some("eleven".to_string()),
|
||||
2 => Some("twelve".to_string()),
|
||||
3 => Some("thirteen".to_string()),
|
||||
4 => Some("fourteen".to_string()),
|
||||
5 => Some("fifteen".to_string()),
|
||||
6 => Some("sixteen".to_string()),
|
||||
7 => Some("seventeen".to_string()),
|
||||
8 => Some("eighteen".to_string()),
|
||||
9 => Some("nineteen".to_string()),
|
||||
_ => None,
|
||||
},
|
||||
d @ 2..=5 | d @ 8 => Some({
|
||||
let mut buffer = String::new();
|
||||
match d {
|
||||
2 => buffer.push_str("twenty"),
|
||||
3 => buffer.push_str("thirty"),
|
||||
4 => buffer.push_str("forty"),
|
||||
5 => buffer.push_str("fifty"),
|
||||
8 => buffer.push_str("eighty"),
|
||||
_ => (),
|
||||
}
|
||||
buffer.push_str(seperator);
|
||||
buffer.push_str(digit_to_text(ones).unwrap().as_str());
|
||||
buffer
|
||||
}),
|
||||
d @ 6..=9 => Some({
|
||||
let mut buffer = digit_to_text(d).unwrap() + "ty";
|
||||
buffer.push_str(seperator);
|
||||
buffer.push_str(digit_to_text(ones).unwrap().as_str());
|
||||
buffer
|
||||
}),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert u32 to words in a string seperated by a seperator.
|
||||
pub fn to_text_with_seperator(number: u32, seperator: &str) -> 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 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 *digit != 0 && place != digits.len() as u8 && numtext != "" {
|
||||
numtext.push_str(seperator);
|
||||
}
|
||||
if let Some(last_digit) = last {
|
||||
numtext.push_str(
|
||||
tens_place_seperator(last_digit, *digit, seperator)
|
||||
.unwrap()
|
||||
.as_str(),
|
||||
);
|
||||
if place > 2 {
|
||||
numtext.push_str(seperator);
|
||||
numtext.push_str(place_value(0, place, Some(seperator)).unwrap().as_str());
|
||||
}
|
||||
last = None;
|
||||
} else if *digit != 0 {
|
||||
numtext.push_str(
|
||||
place_value(*digit, place, Some(seperator))
|
||||
.unwrap()
|
||||
.as_str(),
|
||||
);
|
||||
}
|
||||
place -= 1;
|
||||
}
|
||||
numtext
|
||||
}
|
||||
+16
-24
@@ -3,34 +3,26 @@ mod tests {
|
||||
#[test]
|
||||
fn digits() {
|
||||
use crate::digit_to_text;
|
||||
assert_eq!(digit_to_text(9).unwrap(), "nine");
|
||||
assert_eq!(digit_to_text(3).unwrap(), "three");
|
||||
assert_eq!(digit_to_text(7).unwrap(), "seven");
|
||||
assert_eq!(digit_to_text(5).unwrap(), "five");
|
||||
assert_eq!(digit_to_text(9, false).unwrap(), "nine");
|
||||
assert_eq!(digit_to_text(3, false).unwrap(), "three");
|
||||
assert_eq!(digit_to_text(7, false).unwrap(), "seven");
|
||||
assert_eq!(digit_to_text(5, false).unwrap(), "five");
|
||||
assert_eq!(digit_to_text(5, true).unwrap(), "Five");
|
||||
}
|
||||
#[test]
|
||||
fn numbers() {
|
||||
use crate::to_text_no_seperator as 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");
|
||||
}
|
||||
#[test]
|
||||
fn numbers_seperator() {
|
||||
use crate::to_text_with_seperator as to_text;
|
||||
assert_eq!(to_text(103, "/"), "one/hundred/three");
|
||||
assert_eq!(to_text(1000, "/"), "one/thousand");
|
||||
use crate::to_text_fmt as to_text;
|
||||
use crate::Formatting;
|
||||
let fmt = &Formatting::none();
|
||||
assert_eq!(to_text(1, fmt), "one");
|
||||
assert_eq!(to_text(10, fmt), "ten");
|
||||
assert_eq!(to_text(100, fmt), "onehundred");
|
||||
assert_eq!(to_text(1000, fmt), "onethousand");
|
||||
assert_eq!(to_text(12345, fmt), "twelvethousandthreehundredfortyfive");
|
||||
assert_eq!(
|
||||
to_text(12345, "/"),
|
||||
"twelve/thousand/three/hundred/forty/five"
|
||||
);
|
||||
assert_eq!(
|
||||
to_text(651243, "/"),
|
||||
"six/million/fifty/one/thousand/two/hundred/forty/three"
|
||||
to_text(81123, fmt),
|
||||
"eightyonethousandonehundredtwentythree"
|
||||
);
|
||||
assert_eq!(to_text(12, fmt), "twelve");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user