Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
kyclark committed Jan 16, 2024
1 parent 50784e1 commit 1c8520b
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 29 deletions.
8 changes: 4 additions & 4 deletions 03_catr/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ fn run(args: Args) -> Result<()> {
match open(&filename) {
Err(e) => eprintln!("{filename}: {e}"),
Ok(file) => {
let mut last_num = 0;
let mut prev_num = 0;
for (line_num, line_result) in file.lines().enumerate() {
let line = line_result?;
if args.number_lines {
println!("{:6}\t{}", line_num + 1, line);
println!("{:6}\t{line}", line_num + 1);
} else if args.number_nonblank_lines {
if line.is_empty() {
println!();
} else {
last_num += 1;
println!("{last_num:6}\t{line}");
prev_num += 1;
println!("{prev_num:6}\t{line}");
}
} else {
println!("{line}");
Expand Down
3 changes: 1 addition & 2 deletions 04_headr/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ fn run(args: Args) -> Result<()> {
Ok(mut file) => {
if num_files > 1 {
println!(
"{}==> {} <==",
"{}==> {filename} <==",
if file_num > 0 { "\n" } else { "" },
&filename
);
}

Expand Down
1 change: 1 addition & 0 deletions 05_wcr/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use std::io::{self, BufRead, BufReader};

#[derive(Debug, Parser)]
#[command(author, version, about)]
/// Rust version of `wc`
struct Args {
/// Input file(s)
#[arg(value_name = "FILE", default_value = "-")]
Expand Down
50 changes: 27 additions & 23 deletions 12_fortuner/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use walkdir::WalkDir;
#[derive(Debug, Parser)]
#[command(author, version, about)]
/// Rust version of `fortune`
struct Config {
struct Args {
/// Input files or directories
#[arg()]
sources: Vec<String>,
Expand All @@ -40,46 +40,50 @@ struct Fortune {

// --------------------------------------------------
fn main() {
if let Err(e) = run(Config::parse()) {
if let Err(e) = run(Args::parse()) {
eprintln!("{e}");
std::process::exit(1);
}
}

// --------------------------------------------------
fn run(config: Config) -> Result<()> {
let pattern = config
fn run(args: Args) -> Result<()> {
let pattern = args
.pattern
.map(|val: String| {
RegexBuilder::new(val.as_str())
.case_insensitive(config.insensitive)
.case_insensitive(args.insensitive)
.build()
.map_err(|_| anyhow!(r#"Invalid --pattern "{val}""#))
})
.transpose()?;

let files = find_files(&config.sources)?;
let files = find_files(&args.sources)?;
let fortunes = read_fortunes(&files)?;

if let Some(pattern) = pattern {
let mut prev_source = None;
for fortune in fortunes
.iter()
.filter(|fortune| pattern.is_match(&fortune.text))
{
if prev_source.as_ref().map_or(true, |s| s != &fortune.source) {
eprintln!("({})\n%", fortune.source);
prev_source = Some(fortune.source.clone());
match pattern {
Some(pattern) => {
let mut prev_source = None;
for fortune in fortunes
.iter()
.filter(|fortune| pattern.is_match(&fortune.text))
{
if prev_source.as_ref().map_or(true, |s| s != &fortune.source)
{
eprintln!("({})\n%", fortune.source);
prev_source = Some(fortune.source.clone());
}
println!("{}\n%", fortune.text);
}
println!("{}\n%", fortune.text);
}
} else {
println!(
"{}",
pick_fortune(&fortunes, config.seed)
.or_else(|| Some("No fortunes found".to_string()))
.unwrap()
);
_ => {
println!(
"{}",
pick_fortune(&fortunes, args.seed)
.or_else(|| Some("No fortunes found".to_string()))
.unwrap()
);
}
}

Ok(())
Expand Down

0 comments on commit 1c8520b

Please sign in to comment.