Skip to content

Commit 3f60f8a

Browse files
committed
deploy: c249eba
1 parent 3d48851 commit 3f60f8a

File tree

7 files changed

+86
-26
lines changed

7 files changed

+86
-26
lines changed

dev/src/uu_cut/cut.rs.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@
623623
<span id="618">618</span>
624624
<span id="619">619</span>
625625
<span id="620">620</span>
626+
<span id="621">621</span>
626627
</pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.</span>
627628
<span class="comment">//</span>
628629
<span class="comment">// (c) Rolf Morel &lt;rolfmorel@gmail.com&gt;</span>
@@ -1027,6 +1028,7 @@
10271028
.<span class="ident">collect_str</span>(<span class="ident">InvalidEncodingHandling::Ignore</span>)
10281029
.<span class="ident">accept_any</span>();
10291030

1031+
<span class="kw">let</span> <span class="ident">delimiter_is_equal</span> <span class="op">=</span> <span class="ident">args</span>.<span class="ident">contains</span>(<span class="kw-2">&amp;</span><span class="string">&quot;-d=&quot;</span>.<span class="ident">to_string</span>()); <span class="comment">// special case</span>
10301032
<span class="kw">let</span> <span class="ident">matches</span> <span class="op">=</span> <span class="ident">uu_app</span>().<span class="ident">get_matches_from</span>(<span class="ident">args</span>);
10311033

10321034
<span class="kw">let</span> <span class="ident">complement</span> <span class="op">=</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">options::COMPLEMENT</span>);
@@ -1085,11 +1087,11 @@
10851087
<span class="comment">// GNU&#39;s `cut` supports `-d=` to set the delimiter to `=`.</span>
10861088
<span class="comment">// Clap parsing is limited in this situation, see:</span>
10871089
<span class="comment">// https://github.com/uutils/coreutils/issues/2424#issuecomment-863825242</span>
1088-
<span class="comment">// Since clap parsing handles `-d=` as delimiter explicitly set to &quot;&quot; and</span>
1089-
<span class="comment">// an empty delimiter is not accepted by GNU&#39;s `cut` (and makes no sense),</span>
1090-
<span class="comment">// we can use this as basis for a simple workaround:</span>
1091-
<span class="kw">if</span> <span class="ident">delim</span>.<span class="ident">is_empty</span>() {
1090+
<span class="kw">if</span> <span class="ident">delimiter_is_equal</span> {
10921091
<span class="ident">delim</span> <span class="op">=</span> <span class="string">&quot;=&quot;</span>;
1092+
} <span class="kw">else</span> <span class="kw">if</span> <span class="ident">delim</span> <span class="op">==</span> <span class="string">&quot;&#39;&#39;&quot;</span> {
1093+
<span class="comment">// treat `&#39;&#39;` as empty delimiter</span>
1094+
<span class="ident">delim</span> <span class="op">=</span> <span class="string">&quot;&quot;</span>;
10931095
}
10941096
<span class="kw">if</span> <span class="ident">delim</span>.<span class="ident">chars</span>().<span class="ident">count</span>() <span class="op">&gt;</span> <span class="number">1</span> {
10951097
<span class="prelude-val">Err</span>(<span class="string">&quot;invalid input: The &#39;--delimiter&#39; (&#39;-d&#39;) option expects empty or 1 character long, but was provided a value 2 characters or longer&quot;</span>.<span class="ident">into</span>())

dev/src/uu_unexpand/unexpand.rs.html

Lines changed: 75 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,35 @@
354354
<span id="349">349</span>
355355
<span id="350">350</span>
356356
<span id="351">351</span>
357+
<span id="352">352</span>
358+
<span id="353">353</span>
359+
<span id="354">354</span>
360+
<span id="355">355</span>
361+
<span id="356">356</span>
362+
<span id="357">357</span>
363+
<span id="358">358</span>
364+
<span id="359">359</span>
365+
<span id="360">360</span>
366+
<span id="361">361</span>
367+
<span id="362">362</span>
368+
<span id="363">363</span>
369+
<span id="364">364</span>
370+
<span id="365">365</span>
371+
<span id="366">366</span>
372+
<span id="367">367</span>
373+
<span id="368">368</span>
374+
<span id="369">369</span>
375+
<span id="370">370</span>
376+
<span id="371">371</span>
377+
<span id="372">372</span>
378+
<span id="373">373</span>
379+
<span id="374">374</span>
380+
<span id="375">375</span>
381+
<span id="376">376</span>
382+
<span id="377">377</span>
383+
<span id="378">378</span>
384+
<span id="379">379</span>
385+
<span id="380">380</span>
357386
</pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
358387
<span class="comment">// *</span>
359388
<span class="comment">// * (c) Virgile Andreani &lt;virgile.andreani@anbuco.fr&gt;</span>
@@ -368,12 +397,14 @@
368397
<span class="attribute">#[<span class="ident">macro_use</span>]</span>
369398
<span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">uucore</span>;
370399
<span class="kw">use</span> <span class="ident">clap</span>::{<span class="ident">crate_version</span>, <span class="ident">Arg</span>, <span class="ident">Command</span>};
400+
<span class="kw">use</span> <span class="ident">std::error::Error</span>;
401+
<span class="kw">use</span> <span class="ident">std::fmt</span>;
371402
<span class="kw">use</span> <span class="ident">std::fs::File</span>;
372403
<span class="kw">use</span> <span class="ident">std::io</span>::{<span class="ident">stdin</span>, <span class="ident">stdout</span>, <span class="ident">BufRead</span>, <span class="ident">BufReader</span>, <span class="ident">BufWriter</span>, <span class="ident">Read</span>, <span class="ident">Stdout</span>, <span class="ident">Write</span>};
373404
<span class="kw">use</span> <span class="ident">std::str::from_utf8</span>;
374405
<span class="kw">use</span> <span class="ident">unicode_width::UnicodeWidthChar</span>;
375406
<span class="kw">use</span> <span class="ident">uucore::display::Quotable</span>;
376-
<span class="kw">use</span> <span class="ident">uucore::error</span>::{<span class="ident">FromIo</span>, <span class="ident">UResult</span>};
407+
<span class="kw">use</span> <span class="ident">uucore::error</span>::{<span class="ident">FromIo</span>, <span class="ident">UError</span>, <span class="ident">UResult</span>};
377408
<span class="kw">use</span> <span class="ident">uucore</span>::{<span class="ident">format_usage</span>, <span class="ident">InvalidEncodingHandling</span>};
378409

379410
<span class="kw">static</span> <span class="ident">NAME</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;unexpand&quot;</span>;
@@ -383,28 +414,55 @@
383414

384415
<span class="kw">const</span> <span class="ident">DEFAULT_TABSTOP</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">8</span>;
385416

386-
<span class="kw">fn</span> <span class="ident">tabstops_parse</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span> {
417+
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
418+
<span class="kw">enum</span> <span class="ident">ParseError</span> {
419+
<span class="ident">InvalidCharacter</span>(<span class="ident">String</span>),
420+
<span class="ident">TabSizeCannotBeZero</span>,
421+
<span class="ident">TabSizesMustBeAscending</span>,
422+
}
423+
424+
<span class="kw">impl</span> <span class="ident">Error</span> <span class="kw">for</span> <span class="ident">ParseError</span> {}
425+
<span class="kw">impl</span> <span class="ident">UError</span> <span class="kw">for</span> <span class="ident">ParseError</span> {}
426+
427+
<span class="kw">impl</span> <span class="ident">fmt::Display</span> <span class="kw">for</span> <span class="ident">ParseError</span> {
428+
<span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&amp;mut</span> <span class="ident">fmt::Formatter</span>) -&gt; <span class="ident">fmt::Result</span> {
429+
<span class="kw">match</span> <span class="self">self</span> {
430+
<span class="ident"><span class="self">Self</span>::InvalidCharacter</span>(<span class="ident">s</span>) =&gt; {
431+
<span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">&quot;tab size contains invalid character(s): {}&quot;</span>, <span class="ident">s</span>.<span class="ident">quote</span>())
432+
}
433+
<span class="ident"><span class="self">Self</span>::TabSizeCannotBeZero</span> =&gt; <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">&quot;tab size cannot be 0&quot;</span>),
434+
<span class="ident"><span class="self">Self</span>::TabSizesMustBeAscending</span> =&gt; <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">&quot;tab sizes must be ascending&quot;</span>),
435+
}
436+
}
437+
}
438+
439+
<span class="kw">fn</span> <span class="ident">tabstops_parse</span>(<span class="ident">s</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>, <span class="ident">ParseError</span><span class="op">&gt;</span> {
387440
<span class="kw">let</span> <span class="ident">words</span> <span class="op">=</span> <span class="ident">s</span>.<span class="ident">split</span>(<span class="string">&#39;,&#39;</span>);
388441

389-
<span class="kw">let</span> <span class="ident">nums</span> <span class="op">=</span> <span class="ident">words</span>
390-
.<span class="ident">map</span>(<span class="op">|</span><span class="ident">sn</span><span class="op">|</span> {
391-
<span class="ident">sn</span>.<span class="ident">parse</span>()
392-
.<span class="ident">unwrap_or_else</span>(<span class="op">|</span><span class="kw">_</span><span class="op">|</span> <span class="macro">crash!</span>(<span class="number">1</span>, <span class="string">&quot;{}\n&quot;</span>, <span class="string">&quot;tab size contains invalid character(s)&quot;</span>))
393-
})
394-
.<span class="ident">collect</span>::<span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span><span class="op">&gt;</span>();
442+
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">nums</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
443+
444+
<span class="kw">for</span> <span class="ident">word</span> <span class="kw">in</span> <span class="ident">words</span> {
445+
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Ok</span>(<span class="ident">num</span>) <span class="op">=</span> <span class="ident">word</span>.<span class="ident">parse</span>() {
446+
<span class="ident">nums</span>.<span class="ident">push</span>(<span class="ident">num</span>);
447+
} <span class="kw">else</span> {
448+
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ParseError::InvalidCharacter</span>(
449+
<span class="ident">word</span>.<span class="ident">trim_start_matches</span>(<span class="ident">char::is_numeric</span>).<span class="ident">to_string</span>(),
450+
));
451+
}
452+
}
395453

396454
<span class="kw">if</span> <span class="ident">nums</span>.<span class="ident">iter</span>().<span class="ident">any</span>(<span class="op">|</span><span class="kw-2">&amp;</span><span class="ident">n</span><span class="op">|</span> <span class="ident">n</span> <span class="op">==</span> <span class="number">0</span>) {
397-
<span class="macro">crash!</span>(<span class="number">1</span>, <span class="string">&quot;{}\n&quot;</span>, <span class="string">&quot;tab size cannot be 0&quot;</span>);
455+
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ParseError::TabSizeCannotBeZero</span>);
398456
}
399457

400458
<span class="kw">if</span> <span class="kw">let</span> (<span class="bool-val">false</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">nums</span>
401459
.<span class="ident">iter</span>()
402-
.<span class="ident">fold</span>((<span class="bool-val">true</span>, <span class="number">0</span>), <span class="op">|</span>(<span class="ident">acc</span>, <span class="ident">last</span>), <span class="kw-2">&amp;</span><span class="ident">n</span><span class="op">|</span> (<span class="ident">acc</span> <span class="op">&amp;&amp;</span> <span class="ident">last</span> <span class="op">&lt;</span><span class="op">=</span> <span class="ident">n</span>, <span class="ident">n</span>))
460+
.<span class="ident">fold</span>((<span class="bool-val">true</span>, <span class="number">0</span>), <span class="op">|</span>(<span class="ident">acc</span>, <span class="ident">last</span>), <span class="kw-2">&amp;</span><span class="ident">n</span><span class="op">|</span> (<span class="ident">acc</span> <span class="op">&amp;&amp;</span> <span class="ident">last</span> <span class="op">&lt;</span> <span class="ident">n</span>, <span class="ident">n</span>))
403461
{
404-
<span class="macro">crash!</span>(<span class="number">1</span>, <span class="string">&quot;{}\n&quot;</span>, <span class="string">&quot;tab sizes must be ascending&quot;</span>);
462+
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ParseError::TabSizesMustBeAscending</span>);
405463
}
406464

407-
<span class="ident">nums</span>
465+
<span class="prelude-val">Ok</span>(<span class="ident">nums</span>)
408466
}
409467

410468
<span class="kw">mod</span> <span class="ident">options</span> {
@@ -423,10 +481,10 @@
423481
}
424482

425483
<span class="kw">impl</span> <span class="ident">Options</span> {
426-
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">matches</span>: <span class="kw-2">&amp;</span><span class="ident">clap::ArgMatches</span>) -&gt; <span class="self">Self</span> {
484+
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">matches</span>: <span class="kw-2">&amp;</span><span class="ident">clap::ArgMatches</span>) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="self">Self</span>, <span class="ident">ParseError</span><span class="op">&gt;</span> {
427485
<span class="kw">let</span> <span class="ident">tabstops</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">matches</span>.<span class="ident">value_of</span>(<span class="ident">options::TABS</span>) {
428486
<span class="prelude-val">None</span> =&gt; <span class="macro">vec!</span>[<span class="ident">DEFAULT_TABSTOP</span>],
429-
<span class="prelude-val">Some</span>(<span class="ident">s</span>) =&gt; <span class="ident">tabstops_parse</span>(<span class="ident">s</span>),
487+
<span class="prelude-val">Some</span>(<span class="ident">s</span>) =&gt; <span class="ident">tabstops_parse</span>(<span class="ident">s</span>)<span class="question-mark">?</span>,
430488
};
431489

432490
<span class="kw">let</span> <span class="ident">aflag</span> <span class="op">=</span> (<span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">options::ALL</span>) <span class="op">|</span><span class="op">|</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">options::TABS</span>))
@@ -438,12 +496,12 @@
438496
<span class="prelude-val">None</span> =&gt; <span class="macro">vec!</span>[<span class="string">&quot;-&quot;</span>.<span class="ident">to_owned</span>()],
439497
};
440498

441-
<span class="self">Self</span> {
499+
<span class="prelude-val">Ok</span>(<span class="self">Self</span> {
442500
<span class="ident">files</span>,
443501
<span class="ident">tabstops</span>,
444502
<span class="ident">aflag</span>,
445503
<span class="ident">uflag</span>,
446-
}
504+
})
447505
}
448506
}
449507

@@ -455,7 +513,7 @@
455513

456514
<span class="kw">let</span> <span class="ident">matches</span> <span class="op">=</span> <span class="ident">uu_app</span>().<span class="ident">get_matches_from</span>(<span class="ident">args</span>);
457515

458-
<span class="ident">unexpand</span>(<span class="kw-2">&amp;</span><span class="ident">Options::new</span>(<span class="kw-2">&amp;</span><span class="ident">matches</span>)).<span class="ident">map_err_context</span>(<span class="ident">String::new</span>)
516+
<span class="ident">unexpand</span>(<span class="kw-2">&amp;</span><span class="ident">Options::new</span>(<span class="kw-2">&amp;</span><span class="ident">matches</span>)<span class="question-mark">?</span>).<span class="ident">map_err_context</span>(<span class="ident">String::new</span>)
459517
}
460518

461519
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">uu_app</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>() -&gt; <span class="ident">Command</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {

0 commit comments

Comments
 (0)