You've already forked uutils.github.io
mirror of
https://github.com/uutils/uutils.github.io.git
synced 2026-06-10 16:12:28 -07:00
deploy: b3ede5bce1
This commit is contained in:
+114
-6
@@ -316,6 +316,60 @@
|
||||
<span id="314">314</span>
|
||||
<span id="315">315</span>
|
||||
<span id="316">316</span>
|
||||
<span id="317">317</span>
|
||||
<span id="318">318</span>
|
||||
<span id="319">319</span>
|
||||
<span id="320">320</span>
|
||||
<span id="321">321</span>
|
||||
<span id="322">322</span>
|
||||
<span id="323">323</span>
|
||||
<span id="324">324</span>
|
||||
<span id="325">325</span>
|
||||
<span id="326">326</span>
|
||||
<span id="327">327</span>
|
||||
<span id="328">328</span>
|
||||
<span id="329">329</span>
|
||||
<span id="330">330</span>
|
||||
<span id="331">331</span>
|
||||
<span id="332">332</span>
|
||||
<span id="333">333</span>
|
||||
<span id="334">334</span>
|
||||
<span id="335">335</span>
|
||||
<span id="336">336</span>
|
||||
<span id="337">337</span>
|
||||
<span id="338">338</span>
|
||||
<span id="339">339</span>
|
||||
<span id="340">340</span>
|
||||
<span id="341">341</span>
|
||||
<span id="342">342</span>
|
||||
<span id="343">343</span>
|
||||
<span id="344">344</span>
|
||||
<span id="345">345</span>
|
||||
<span id="346">346</span>
|
||||
<span id="347">347</span>
|
||||
<span id="348">348</span>
|
||||
<span id="349">349</span>
|
||||
<span id="350">350</span>
|
||||
<span id="351">351</span>
|
||||
<span id="352">352</span>
|
||||
<span id="353">353</span>
|
||||
<span id="354">354</span>
|
||||
<span id="355">355</span>
|
||||
<span id="356">356</span>
|
||||
<span id="357">357</span>
|
||||
<span id="358">358</span>
|
||||
<span id="359">359</span>
|
||||
<span id="360">360</span>
|
||||
<span id="361">361</span>
|
||||
<span id="362">362</span>
|
||||
<span id="363">363</span>
|
||||
<span id="364">364</span>
|
||||
<span id="365">365</span>
|
||||
<span id="366">366</span>
|
||||
<span id="367">367</span>
|
||||
<span id="368">368</span>
|
||||
<span id="369">369</span>
|
||||
<span id="370">370</span>
|
||||
</pre><pre class="rust">
|
||||
<span class="comment">// TODO: Make -w flag work with decimals</span>
|
||||
<span class="comment">// TODO: Support -f flag</span>
|
||||
@@ -380,6 +434,38 @@
|
||||
<span class="ident">Number::F64</span>(<span class="ident">n</span>) <span class="op">=</span><span class="op">></span> <span class="ident">n</span>,
|
||||
}
|
||||
}
|
||||
|
||||
<span class="doccomment">/// Number of characters needed to print the integral part of the number.</span>
|
||||
<span class="doccomment">///</span>
|
||||
<span class="doccomment">/// The number of characters includes one character to represent the</span>
|
||||
<span class="doccomment">/// minus sign ("-") if this number is negative.</span>
|
||||
<span class="doccomment">///</span>
|
||||
<span class="doccomment">/// # Examples</span>
|
||||
<span class="doccomment">///</span>
|
||||
<span class="doccomment">/// ```rust,ignore</span>
|
||||
<span class="doccomment">/// use num_bigint::{BigInt, Sign};</span>
|
||||
<span class="doccomment">///</span>
|
||||
<span class="doccomment">/// assert_eq!(</span>
|
||||
<span class="doccomment">/// Number::BigInt(BigInt::new(Sign::Plus, vec![123])).num_digits(),</span>
|
||||
<span class="doccomment">/// 3</span>
|
||||
<span class="doccomment">/// );</span>
|
||||
<span class="doccomment">/// assert_eq!(</span>
|
||||
<span class="doccomment">/// Number::BigInt(BigInt::new(Sign::Minus, vec![123])).num_digits(),</span>
|
||||
<span class="doccomment">/// 4</span>
|
||||
<span class="doccomment">/// );</span>
|
||||
<span class="doccomment">/// assert_eq!(Number::F64(123.45).num_digits(), 3);</span>
|
||||
<span class="doccomment">/// assert_eq!(Number::MinusZero.num_digits(), 2);</span>
|
||||
<span class="doccomment">/// ```</span>
|
||||
<span class="kw">fn</span> <span class="ident">num_digits</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="ident">usize</span> {
|
||||
<span class="kw">match</span> <span class="self">self</span> {
|
||||
<span class="ident">Number::MinusZero</span> <span class="op">=</span><span class="op">></span> <span class="number">2</span>,
|
||||
<span class="ident">Number::BigInt</span>(<span class="ident">n</span>) <span class="op">=</span><span class="op">></span> <span class="ident">n</span>.<span class="ident">to_string</span>().<span class="ident">len</span>(),
|
||||
<span class="ident">Number::F64</span>(<span class="ident">n</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="ident">n</span>.<span class="ident">to_string</span>();
|
||||
<span class="ident">s</span>.<span class="ident">find</span>(<span class="string">'.'</span>).<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">len</span>())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">FromStr</span> <span class="kw">for</span> <span class="ident">Number</span> {
|
||||
@@ -440,13 +526,11 @@
|
||||
};
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">largest_dec</span> <span class="op">=</span> <span class="number">0</span>;
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">padding</span> <span class="op">=</span> <span class="number">0</span>;
|
||||
<span class="kw">let</span> <span class="ident">first</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">numbers</span>.<span class="ident">len</span>() <span class="op">></span> <span class="number">1</span> {
|
||||
<span class="kw">let</span> <span class="ident">slice</span> <span class="op">=</span> <span class="ident">numbers</span>[<span class="number">0</span>];
|
||||
<span class="kw">let</span> <span class="ident">len</span> <span class="op">=</span> <span class="ident">slice</span>.<span class="ident">len</span>();
|
||||
<span class="kw">let</span> <span class="ident">dec</span> <span class="op">=</span> <span class="ident">slice</span>.<span class="ident">find</span>(<span class="string">'.'</span>).<span class="ident">unwrap_or</span>(<span class="ident">len</span>);
|
||||
<span class="ident">largest_dec</span> <span class="op">=</span> <span class="ident">len</span> <span class="op">-</span> <span class="ident">dec</span>;
|
||||
<span class="ident">padding</span> <span class="op">=</span> <span class="ident">dec</span>;
|
||||
<span class="macro">crash_if_err!</span>(<span class="number">1</span>, <span class="ident">slice</span>.<span class="ident">parse</span>())
|
||||
} <span class="kw">else</span> {
|
||||
<span class="ident">Number::BigInt</span>(<span class="ident">BigInt::one</span>())
|
||||
@@ -456,7 +540,6 @@
|
||||
<span class="kw">let</span> <span class="ident">len</span> <span class="op">=</span> <span class="ident">slice</span>.<span class="ident">len</span>();
|
||||
<span class="kw">let</span> <span class="ident">dec</span> <span class="op">=</span> <span class="ident">slice</span>.<span class="ident">find</span>(<span class="string">'.'</span>).<span class="ident">unwrap_or</span>(<span class="ident">len</span>);
|
||||
<span class="ident">largest_dec</span> <span class="op">=</span> <span class="ident">cmp::max</span>(<span class="ident">largest_dec</span>, <span class="ident">len</span> <span class="op">-</span> <span class="ident">dec</span>);
|
||||
<span class="ident">padding</span> <span class="op">=</span> <span class="ident">cmp::max</span>(<span class="ident">padding</span>, <span class="ident">dec</span>);
|
||||
<span class="macro">crash_if_err!</span>(<span class="number">1</span>, <span class="ident">slice</span>.<span class="ident">parse</span>())
|
||||
} <span class="kw">else</span> {
|
||||
<span class="ident">Number::BigInt</span>(<span class="ident">BigInt::one</span>())
|
||||
@@ -469,15 +552,18 @@
|
||||
);
|
||||
<span class="kw">return</span> <span class="number">1</span>;
|
||||
}
|
||||
<span class="kw">let</span> <span class="ident">last</span> <span class="op">=</span> {
|
||||
<span class="kw">let</span> <span class="ident">last</span>: <span class="ident">Number</span> <span class="op">=</span> {
|
||||
<span class="kw">let</span> <span class="ident">slice</span> <span class="op">=</span> <span class="ident">numbers</span>[<span class="ident">numbers</span>.<span class="ident">len</span>() <span class="op">-</span> <span class="number">1</span>];
|
||||
<span class="ident">padding</span> <span class="op">=</span> <span class="ident">cmp::max</span>(<span class="ident">padding</span>, <span class="ident">slice</span>.<span class="ident">find</span>(<span class="string">'.'</span>).<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="op">|</span> <span class="ident">slice</span>.<span class="ident">len</span>()));
|
||||
<span class="macro">crash_if_err!</span>(<span class="number">1</span>, <span class="ident">slice</span>.<span class="ident">parse</span>())
|
||||
};
|
||||
<span class="kw">if</span> <span class="ident">largest_dec</span> <span class="op">></span> <span class="number">0</span> {
|
||||
<span class="ident">largest_dec</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>;
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="ident">padding</span> <span class="op">=</span> <span class="ident">first</span>
|
||||
.<span class="ident">num_digits</span>()
|
||||
.<span class="ident">max</span>(<span class="ident">increment</span>.<span class="ident">num_digits</span>())
|
||||
.<span class="ident">max</span>(<span class="ident">last</span>.<span class="ident">num_digits</span>());
|
||||
<span class="kw">match</span> (<span class="ident">first</span>, <span class="ident">last</span>, <span class="ident">increment</span>) {
|
||||
(<span class="ident">Number::MinusZero</span>, <span class="ident">Number::BigInt</span>(<span class="ident">last</span>), <span class="ident">Number::BigInt</span>(<span class="ident">increment</span>)) <span class="op">=</span><span class="op">></span> <span class="ident">print_seq_integers</span>(
|
||||
(<span class="ident">BigInt::zero</span>(), <span class="ident">increment</span>, <span class="ident">last</span>),
|
||||
@@ -617,12 +703,14 @@
|
||||
<span class="kw">if</span> <span class="op">!</span><span class="ident">is_first_iteration</span> {
|
||||
<span class="macro">print!</span>(<span class="string">"{}"</span>, <span class="ident">separator</span>);
|
||||
}
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">width</span> <span class="op">=</span> <span class="ident">padding</span>;
|
||||
<span class="kw">if</span> <span class="ident">is_first_iteration</span> <span class="op">&&</span> <span class="ident">is_first_minus_zero</span> {
|
||||
<span class="macro">print!</span>(<span class="string">"-"</span>);
|
||||
<span class="ident">width</span> <span class="op">-</span><span class="op">=</span> <span class="number">1</span>;
|
||||
}
|
||||
<span class="ident">is_first_iteration</span> <span class="op">=</span> <span class="bool-val">false</span>;
|
||||
<span class="kw">if</span> <span class="ident">pad</span> {
|
||||
<span class="macro">print!</span>(<span class="string">"{number:>0width$}"</span>, <span class="ident">number</span> <span class="op">=</span> <span class="ident">value</span>, <span class="ident">width</span> <span class="op">=</span> <span class="ident">padding</span>);
|
||||
<span class="macro">print!</span>(<span class="string">"{number:>0width$}"</span>, <span class="ident">number</span> <span class="op">=</span> <span class="ident">value</span>, <span class="ident">width</span> <span class="op">=</span> <span class="ident">width</span>);
|
||||
} <span class="kw">else</span> {
|
||||
<span class="macro">print!</span>(<span class="string">"{}"</span>, <span class="ident">value</span>);
|
||||
}
|
||||
@@ -633,5 +721,25 @@
|
||||
<span class="macro">print!</span>(<span class="string">"{}"</span>, <span class="ident">terminator</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<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="kw">use</span> <span class="kw">crate</span><span class="ident">::Number</span>;
|
||||
<span class="kw">use</span> <span class="ident">num_bigint</span>::{<span class="ident">BigInt</span>, <span class="ident">Sign</span>};
|
||||
|
||||
<span class="attribute">#[<span class="ident">test</span>]</span>
|
||||
<span class="kw">fn</span> <span class="ident">test_number_num_digits</span>() {
|
||||
<span class="macro">assert_eq!</span>(
|
||||
<span class="ident">Number::BigInt</span>(<span class="ident">BigInt::new</span>(<span class="ident">Sign::Plus</span>, <span class="macro">vec!</span>[<span class="number">123</span>])).<span class="ident">num_digits</span>(),
|
||||
<span class="number">3</span>
|
||||
);
|
||||
<span class="macro">assert_eq!</span>(
|
||||
<span class="ident">Number::BigInt</span>(<span class="ident">BigInt::new</span>(<span class="ident">Sign::Minus</span>, <span class="macro">vec!</span>[<span class="number">123</span>])).<span class="ident">num_digits</span>(),
|
||||
<span class="number">4</span>
|
||||
);
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">Number::F64</span>(<span class="number">123.45</span>).<span class="ident">num_digits</span>(), <span class="number">3</span>);
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">Number::MinusZero</span>.<span class="ident">num_digits</span>(), <span class="number">2</span>);
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
</section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="uu_seq" data-search-index-js="../../search-index.js" data-search-js="../../search.js"></div><script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user