|
794 | 794 | <span id="789">789</span>
|
795 | 795 | <span id="790">790</span>
|
796 | 796 | <span id="791">791</span>
|
797 |
| -<span id="792">792</span> |
798 |
| -<span id="793">793</span> |
799 |
| -<span id="794">794</span> |
800 |
| -<span id="795">795</span> |
801 |
| -<span id="796">796</span> |
802 |
| -<span id="797">797</span> |
803 |
| -<span id="798">798</span> |
804 |
| -<span id="799">799</span> |
805 |
| -<span id="800">800</span> |
806 |
| -<span id="801">801</span> |
807 |
| -<span id="802">802</span> |
808 |
| -<span id="803">803</span> |
809 |
| -<span id="804">804</span> |
810 |
| -<span id="805">805</span> |
811 |
| -<span id="806">806</span> |
812 |
| -<span id="807">807</span> |
813 |
| -<span id="808">808</span> |
814 |
| -<span id="809">809</span> |
815 |
| -<span id="810">810</span> |
816 |
| -<span id="811">811</span> |
817 |
| -<span id="812">812</span> |
818 |
| -<span id="813">813</span> |
819 |
| -<span id="814">814</span> |
820 |
| -<span id="815">815</span> |
821 |
| -<span id="816">816</span> |
822 |
| -<span id="817">817</span> |
823 |
| -<span id="818">818</span> |
824 |
| -<span id="819">819</span> |
825 |
| -<span id="820">820</span> |
826 | 797 | </pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
|
827 | 798 | <span class="comment">// *</span>
|
828 | 799 | <span class="comment">// * For the full copyright and license information, please view the LICENSE</span>
|
|
832 | 803 | <span class="doccomment">//!</span>
|
833 | 804 | <span class="doccomment">//! A table ([`Table`]) comprises a header row ([`Header`]) and a</span>
|
834 | 805 | <span class="doccomment">//! collection of data rows ([`Row`]), one per filesystem.</span>
|
835 |
| -<span class="kw">use</span> <span class="ident">number_prefix::NumberPrefix</span>; |
836 | 806 | <span class="kw">use</span> <span class="ident">unicode_width::UnicodeWidthStr</span>;
|
837 | 807 |
|
838 |
| -<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blocks</span>::{<span class="ident">HumanReadable</span>, <span class="ident">SizeFormat</span>}; |
| 808 | +<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blocks</span>::{<span class="ident">to_magnitude_and_suffix</span>, <span class="ident">SuffixType</span>}; |
839 | 809 | <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::columns</span>::{<span class="ident">Alignment</span>, <span class="ident">Column</span>};
|
840 | 810 | <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::filesystem::Filesystem</span>;
|
841 | 811 | <span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">BlockSize</span>, <span class="ident">Options</span>};
|
|
1038 | 1008 | <span class="self">Self</span> { <span class="ident">row</span>, <span class="ident">options</span> }
|
1039 | 1009 | }
|
1040 | 1010 |
|
1041 |
| - <span class="doccomment">/// Get a human readable string giving the scaled version of the input number.</span> |
1042 |
| - <span class="kw">fn</span> <span class="ident">scaled_human_readable</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">size</span>: <span class="ident">u64</span>, <span class="ident">human_readable</span>: <span class="ident">HumanReadable</span>) -> <span class="ident">String</span> { |
1043 |
| - <span class="kw">let</span> <span class="ident">number_prefix</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">human_readable</span> { |
1044 |
| - <span class="ident">HumanReadable::Decimal</span> => <span class="ident">NumberPrefix::decimal</span>(<span class="ident">size</span> <span class="kw">as</span> <span class="ident">f64</span>), |
1045 |
| - <span class="ident">HumanReadable::Binary</span> => <span class="ident">NumberPrefix::binary</span>(<span class="ident">size</span> <span class="kw">as</span> <span class="ident">f64</span>), |
1046 |
| - }; |
1047 |
| - <span class="kw">match</span> <span class="ident">number_prefix</span> { |
1048 |
| - <span class="ident">NumberPrefix::Standalone</span>(<span class="ident">bytes</span>) => <span class="ident">bytes</span>.<span class="ident">to_string</span>(), |
1049 |
| - <span class="ident">NumberPrefix::Prefixed</span>(<span class="ident">prefix</span>, <span class="ident">bytes</span>) => <span class="macro">format!</span>(<span class="string">"{:.1}{}"</span>, <span class="ident">bytes</span>, <span class="ident">prefix</span>.<span class="ident">symbol</span>()), |
1050 |
| - } |
1051 |
| - } |
1052 |
| - |
1053 | 1011 | <span class="doccomment">/// Get a string giving the scaled version of the input number.</span>
|
1054 | 1012 | <span class="doccomment">///</span>
|
1055 | 1013 | <span class="doccomment">/// The scaling factor is defined in the `options` field.</span>
|
1056 | 1014 | <span class="kw">fn</span> <span class="ident">scaled_bytes</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">size</span>: <span class="ident">u64</span>) -> <span class="ident">String</span> {
|
1057 |
| - <span class="kw">match</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">size_format</span> { |
1058 |
| - <span class="ident">SizeFormat::HumanReadable</span>(<span class="ident">h</span>) => <span class="self">self</span>.<span class="ident">scaled_human_readable</span>(<span class="ident">size</span>, <span class="ident">h</span>), |
1059 |
| - <span class="ident">SizeFormat::StaticBlockSize</span> => { |
1060 |
| - <span class="kw">let</span> <span class="ident">BlockSize::Bytes</span>(<span class="ident">d</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">block_size</span>; |
1061 |
| - (<span class="ident">size</span> <span class="kw">as</span> <span class="ident">f64</span> <span class="op">/</span> <span class="ident">d</span> <span class="kw">as</span> <span class="ident">f64</span>).<span class="ident">ceil</span>().<span class="ident">to_string</span>() |
1062 |
| - } |
| 1015 | + <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">h</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">human_readable</span> { |
| 1016 | + <span class="ident">to_magnitude_and_suffix</span>(<span class="ident">size</span>.<span class="ident">into</span>(), <span class="ident">SuffixType::HumanReadable</span>(<span class="ident">h</span>)) |
| 1017 | + } <span class="kw">else</span> { |
| 1018 | + <span class="kw">let</span> <span class="ident">BlockSize::Bytes</span>(<span class="ident">d</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">block_size</span>; |
| 1019 | + (<span class="ident">size</span> <span class="kw">as</span> <span class="ident">f64</span> <span class="op">/</span> <span class="ident">d</span> <span class="kw">as</span> <span class="ident">f64</span>).<span class="ident">ceil</span>().<span class="ident">to_string</span>() |
1063 | 1020 | }
|
1064 | 1021 | }
|
1065 | 1022 |
|
1066 | 1023 | <span class="doccomment">/// Get a string giving the scaled version of the input number.</span>
|
1067 | 1024 | <span class="doccomment">///</span>
|
1068 | 1025 | <span class="doccomment">/// The scaling factor is defined in the `options` field.</span>
|
1069 | 1026 | <span class="kw">fn</span> <span class="ident">scaled_inodes</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">size</span>: <span class="ident">u64</span>) -> <span class="ident">String</span> {
|
1070 |
| - <span class="kw">match</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">size_format</span> { |
1071 |
| - <span class="ident">SizeFormat::HumanReadable</span>(<span class="ident">h</span>) => <span class="self">self</span>.<span class="ident">scaled_human_readable</span>(<span class="ident">size</span>, <span class="ident">h</span>), |
1072 |
| - <span class="ident">SizeFormat::StaticBlockSize</span> => <span class="ident">size</span>.<span class="ident">to_string</span>(), |
| 1027 | + <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">h</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">options</span>.<span class="ident">human_readable</span> { |
| 1028 | + <span class="ident">to_magnitude_and_suffix</span>(<span class="ident">size</span>.<span class="ident">into</span>(), <span class="ident">SuffixType::HumanReadable</span>(<span class="ident">h</span>)) |
| 1029 | + } <span class="kw">else</span> { |
| 1030 | + <span class="ident">size</span>.<span class="ident">to_string</span>() |
1073 | 1031 | }
|
1074 | 1032 | }
|
1075 | 1033 |
|
|
1275 | 1233 | <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
1276 | 1234 | <span class="kw">mod</span> <span class="ident">tests</span> {
|
1277 | 1235 |
|
1278 |
| - <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blocks</span>::{<span class="ident">HumanReadable</span>, <span class="ident">SizeFormat</span>}; |
| 1236 | + <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::blocks::HumanReadable</span>; |
1279 | 1237 | <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::columns::Column</span>;
|
1280 | 1238 | <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::table</span>::{<span class="ident">Header</span>, <span class="ident">HeaderMode</span>, <span class="ident">Row</span>, <span class="ident">RowFormatter</span>};
|
1281 | 1239 | <span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">BlockSize</span>, <span class="ident">Options</span>};
|
|
1540 | 1498 | <span class="attribute">#[<span class="ident">test</span>]</span>
|
1541 | 1499 | <span class="kw">fn</span> <span class="ident">test_row_formatter_with_human_readable_si</span>() {
|
1542 | 1500 | <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">Options</span> {
|
1543 |
| - <span class="ident">size_format</span>: <span class="ident">SizeFormat::HumanReadable</span>(<span class="ident">HumanReadable::Decimal</span>), |
| 1501 | + <span class="ident">human_readable</span>: <span class="prelude-val">Some</span>(<span class="ident">HumanReadable::Decimal</span>), |
1544 | 1502 | <span class="ident">columns</span>: <span class="ident">COLUMNS_WITH_FS_TYPE</span>.<span class="ident">to_vec</span>(),
|
1545 | 1503 | ..<span class="ident">Default::default</span>()
|
1546 | 1504 | };
|
|
1559 | 1517 | <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>);
|
1560 | 1518 | <span class="macro">assert_eq!</span>(
|
1561 | 1519 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1562 |
| - <span class="macro">vec!</span>( |
1563 |
| - <span class="string">"my_device"</span>, |
1564 |
| - <span class="string">"my_type"</span>, |
1565 |
| - <span class="string">"4.0k"</span>, |
1566 |
| - <span class="string">"1.0k"</span>, |
1567 |
| - <span class="string">"3.0k"</span>, |
1568 |
| - <span class="string">"25%"</span>, |
1569 |
| - <span class="string">"my_mount"</span> |
1570 |
| - ) |
| 1520 | + <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"my_type"</span>, <span class="string">"4k"</span>, <span class="string">"1k"</span>, <span class="string">"3k"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>) |
1571 | 1521 | );
|
1572 | 1522 | }
|
1573 | 1523 |
|
1574 | 1524 | <span class="attribute">#[<span class="ident">test</span>]</span>
|
1575 | 1525 | <span class="kw">fn</span> <span class="ident">test_row_formatter_with_human_readable_binary</span>() {
|
1576 | 1526 | <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">Options</span> {
|
1577 |
| - <span class="ident">size_format</span>: <span class="ident">SizeFormat::HumanReadable</span>(<span class="ident">HumanReadable::Binary</span>), |
| 1527 | + <span class="ident">human_readable</span>: <span class="prelude-val">Some</span>(<span class="ident">HumanReadable::Binary</span>), |
1578 | 1528 | <span class="ident">columns</span>: <span class="ident">COLUMNS_WITH_FS_TYPE</span>.<span class="ident">to_vec</span>(),
|
1579 | 1529 | ..<span class="ident">Default::default</span>()
|
1580 | 1530 | };
|
|
1593 | 1543 | <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>);
|
1594 | 1544 | <span class="macro">assert_eq!</span>(
|
1595 | 1545 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1596 |
| - <span class="macro">vec!</span>( |
1597 |
| - <span class="string">"my_device"</span>, |
1598 |
| - <span class="string">"my_type"</span>, |
1599 |
| - <span class="string">"4.0Ki"</span>, |
1600 |
| - <span class="string">"1.0Ki"</span>, |
1601 |
| - <span class="string">"3.0Ki"</span>, |
1602 |
| - <span class="string">"25%"</span>, |
1603 |
| - <span class="string">"my_mount"</span> |
1604 |
| - ) |
| 1546 | + <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"my_type"</span>, <span class="string">"4K"</span>, <span class="string">"1K"</span>, <span class="string">"3K"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>) |
1605 | 1547 | );
|
1606 | 1548 | }
|
1607 | 1549 |
|
|
0 commit comments