This commit is contained in:
sylvestre
2023-07-26 02:38:31 +00:00
parent 9ec29975cb
commit fc4dc243f2
18 changed files with 41 additions and 55 deletions
+11 -25
View File
@@ -99,13 +99,6 @@
<a href="#99" id="99">99</a>
<a href="#100" id="100">100</a>
<a href="#101" id="101">101</a>
<a href="#102" id="102">102</a>
<a href="#103" id="103">103</a>
<a href="#104" id="104">104</a>
<a href="#105" id="105">105</a>
<a href="#106" id="106">106</a>
<a href="#107" id="107">107</a>
<a href="#108" id="108">108</a>
</pre></div><pre class="rust"><code><span class="comment">// spell-checker:ignore (ToDO) conv
</span><span class="kw">use </span><span class="kw">crate</span>::options;
@@ -113,17 +106,15 @@
<span class="comment">// parse_style parses a style string into a NumberingStyle.
</span><span class="kw">fn </span>parse_style(chars: <span class="kw-2">&amp;</span>[char]) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="kw">crate</span>::NumberingStyle, String&gt; {
<span class="kw">if </span>chars.len() == <span class="number">1 </span>&amp;&amp; chars[<span class="number">0</span>] == <span class="string">&#39;a&#39; </span>{
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::NumberForAll)
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::All)
} <span class="kw">else if </span>chars.len() == <span class="number">1 </span>&amp;&amp; chars[<span class="number">0</span>] == <span class="string">&#39;t&#39; </span>{
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::NumberForNonEmpty)
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::NonEmpty)
} <span class="kw">else if </span>chars.len() == <span class="number">1 </span>&amp;&amp; chars[<span class="number">0</span>] == <span class="string">&#39;n&#39; </span>{
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::NumberForNone)
<span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::None)
} <span class="kw">else if </span>chars.len() &gt; <span class="number">1 </span>&amp;&amp; chars[<span class="number">0</span>] == <span class="string">&#39;p&#39; </span>{
<span class="kw">let </span>s: String = chars[<span class="number">1</span>..].iter().cloned().collect();
<span class="kw">match </span>regex::Regex::new(<span class="kw-2">&amp;</span>s) {
<span class="prelude-val">Ok</span>(re) =&gt; <span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::NumberForRegularExpression(Box::new(
re,
))),
<span class="prelude-val">Ok</span>(re) =&gt; <span class="prelude-val">Ok</span>(<span class="kw">crate</span>::NumberingStyle::Regex(Box::new(re))),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(String::from(<span class="string">&quot;Illegal regular expression&quot;</span>)),
}
} <span class="kw">else </span>{
@@ -194,24 +185,19 @@
<span class="string">&quot;Invalid line number field width: 0: Numerical result out of range&quot;</span>,
)),
}
<span class="kw">match </span>opts.get_one::&lt;u64&gt;(options::JOIN_BLANK_LINES) {
<span class="prelude-val">None </span>=&gt; {}
<span class="prelude-val">Some</span>(num) <span class="kw">if </span><span class="kw-2">*</span>num &gt; <span class="number">0 </span>=&gt; settings.join_blank_lines = <span class="kw-2">*</span>num,
<span class="prelude-val">Some</span>(<span class="kw">_</span>) =&gt; errs.push(String::from(
<span class="string">&quot;Invalid line number of blank lines: 0: Numerical result out of range&quot;</span>,
)),
}
<span class="kw">if let </span><span class="prelude-val">Some</span>(num) = opts.get_one::&lt;i64&gt;(options::LINE_INCREMENT) {
settings.line_increment = <span class="kw-2">*</span>num;
}
<span class="kw">if let </span><span class="prelude-val">Some</span>(num) = opts.get_one::&lt;i64&gt;(options::STARTING_LINE_NUMBER) {
settings.starting_line_number = <span class="kw-2">*</span>num;
}
<span class="kw">match </span>opts.get_one::&lt;String&gt;(options::JOIN_BLANK_LINES) {
<span class="prelude-val">None </span>=&gt; {}
<span class="prelude-val">Some</span>(val) =&gt; {
<span class="kw">let </span>conv: <span class="prelude-ty">Option</span>&lt;u64&gt; = val.parse().ok();
<span class="kw">match </span>conv {
<span class="prelude-val">None </span>=&gt; {
errs.push(String::from(<span class="string">&quot;Illegal value for -l&quot;</span>));
}
<span class="prelude-val">Some</span>(num) =&gt; settings.join_blank_lines = num,
}
}
}
errs
}
</code></pre></div></section></main></body></html>
+14 -14
View File
@@ -478,9 +478,9 @@
<span class="kw">impl </span>Default <span class="kw">for </span>Settings {
<span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
<span class="self">Self </span>{
header_numbering: NumberingStyle::NumberForNone,
body_numbering: NumberingStyle::NumberForAll,
footer_numbering: NumberingStyle::NumberForNone,
header_numbering: NumberingStyle::None,
body_numbering: NumberingStyle::All,
footer_numbering: NumberingStyle::None,
section_delimiter: [<span class="string">&#39;\\&#39;</span>, <span class="string">&#39;:&#39;</span>],
starting_line_number: <span class="number">1</span>,
line_increment: <span class="number">1</span>,
@@ -499,12 +499,11 @@
// 2. Number only nonempty lines
// 3. Don&#39;t number any lines at all
// 4. Number all lines that match a basic regular expression.
</span><span class="attr">#[allow(clippy::enum_variant_names)]
</span><span class="kw">enum </span>NumberingStyle {
NumberForAll,
NumberForNonEmpty,
NumberForNone,
NumberForRegularExpression(Box&lt;regex::Regex&gt;),
All,
NonEmpty,
<span class="prelude-val">None</span>,
Regex(Box&lt;regex::Regex&gt;),
}
<span class="comment">// NumberFormat specifies how line numbers are output within their allocated
@@ -663,7 +662,8 @@
.short(<span class="string">&#39;l&#39;</span>)
.long(options::JOIN_BLANK_LINES)
.help(<span class="string">&quot;group of NUMBER empty lines counted as one&quot;</span>)
.value_name(<span class="string">&quot;NUMBER&quot;</span>),
.value_name(<span class="string">&quot;NUMBER&quot;</span>)
.value_parser(<span class="macro">clap::value_parser!</span>(u64)),
)
.arg(
Arg::new(options::NUMBER_FORMAT)
@@ -713,7 +713,7 @@
<span class="kw">let </span><span class="kw-2">mut </span>empty_line_count: u64 = <span class="number">0</span>;
<span class="comment">// Initially, we use the body&#39;s line counting settings
</span><span class="kw">let </span><span class="kw-2">mut </span>regex_filter = <span class="kw">match </span>settings.body_numbering {
NumberingStyle::NumberForRegularExpression(<span class="kw-2">ref </span>re) =&gt; re,
NumberingStyle::Regex(<span class="kw-2">ref </span>re) =&gt; re,
<span class="kw">_ </span>=&gt; <span class="kw-2">&amp;</span>regexp,
};
<span class="kw">let </span><span class="kw-2">mut </span>line_filter: <span class="kw">fn</span>(<span class="kw-2">&amp;</span>str, <span class="kw-2">&amp;</span>regex::Regex) -&gt; bool = pass_regex;
@@ -774,16 +774,16 @@
// a catch-all here.
</span><span class="kw">_ </span>=&gt; <span class="kw-2">&amp;</span>settings.body_numbering,
} {
NumberingStyle::NumberForAll =&gt; {
NumberingStyle::All =&gt; {
line_filter = pass_all;
}
NumberingStyle::NumberForNonEmpty =&gt; {
NumberingStyle::NonEmpty =&gt; {
line_filter = pass_nonempty;
}
NumberingStyle::NumberForNone =&gt; {
NumberingStyle::None =&gt; {
line_filter = pass_none;
}
NumberingStyle::NumberForRegularExpression(<span class="kw-2">ref </span>re) =&gt; {
NumberingStyle::Regex(<span class="kw-2">ref </span>re) =&gt; {
line_filter = pass_regex;
regex_filter = re;
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long