]> git.g-eek.se Git - ranknauto.git/commitdiff
Src. Read skewness option from command line
authorGustav Eek <gustav.eek@fripost.org>
Thu, 2 Feb 2023 07:17:28 +0000 (08:17 +0100)
committerGustav Eek <gustav.eek@fripost.org>
Thu, 2 Feb 2023 08:13:25 +0000 (09:13 +0100)
src/main.rs

index a802abea854070009ec345efea19dea819e67e2b..9ad1ea619c0de8b35cfa83d8d9d1fe70cb84fddf 100644 (file)
@@ -2,12 +2,15 @@
 //!
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
+// use std::env; // Replaced by clap::Parser stuff
 use std::io; // bring flush() into scope with `use std::io::Write`
 use std::io::prelude::*; // Bring `std::io::BufRead` in scope
 use statrs::distribution::{Exp, LogNormal, ContinuousCDF}; // Continuous needed for pdf
 // use statrs::statistics::Distribution;
 // use statrs::prec;
 
+use clap::Parser;
+
 const DEBUG: bool = false;
 
 fn input() -> Vec<String> {
@@ -91,8 +94,38 @@ fn lognormal(n: i32) -> Vec<f64> {
     normalize(prio)
 }
 
+#[derive(Parser, Debug)]
+#[command(author, version, about, long_about = None)]
+
+/// Rank N' Auto, automatic normalized ranking
+
+struct Args {
+
+    /// Ranking distribution skewness
+    #[arg(short)]
+    skewness: Option<String>,
+}
 
 fn main() {
+    let args = Args::parse();
+
+    // let mut skew = 1.0;
+
+    if DEBUG { eprintln!("Arguments: {:?}", args) }
+
+    // Implement this with *match*, the non concise way, so that
+    // people understand.
+
+    let skew = match args.skewness {
+        None => 1.0,
+        Some(a) =>
+            if a == "light" {0.5}
+        else if a == "moderate" {1.0}
+        else if a == "heavy" {2.0}
+        else {1.0},
+    };
+
+    if DEBUG { eprintln!("Finally a skewness: {}", skew) }
 
     let ranked: Vec<String> = input();
     let num = ranked.len() as i32;