From 2f0254f6770f7b280b856c84e8f43a22dff3f597 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sat, 14 Oct 2023 17:26:20 +0300 Subject: [PATCH] Add the available ciphers and analyzer for the help. --- src/cipher_analytical_machine/cli/cli.clj | 6 +++++ src/cipher_analytical_machine/cli/options.clj | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/cipher_analytical_machine/cli/cli.clj b/src/cipher_analytical_machine/cli/cli.clj index 73f349f..ddc269b 100644 --- a/src/cipher_analytical_machine/cli/cli.clj +++ b/src/cipher_analytical_machine/cli/cli.clj @@ -17,6 +17,12 @@ "" "Options:" options-summary + "" + "Available values" + "" + (options/get-available-cipher-options-as-string) + "" + (options/get-available-analyzers-options-as-string) ""] (cs/join \newline))) diff --git a/src/cipher_analytical_machine/cli/options.clj b/src/cipher_analytical_machine/cli/options.clj index a1c1434..34eb18d 100644 --- a/src/cipher_analytical_machine/cli/options.clj +++ b/src/cipher_analytical_machine/cli/options.clj @@ -4,14 +4,41 @@ [clojure.string :as cs]) (:gen-class)) +(defn option-values-as-row + "Return the formatted string of values for an option." + [option values] + (str option ": " (cs/join ", " values))) + +(defn option-values-as-list + "Return the formatted string of values for an option as a multiline list." + [option values] + (str option ": \n - " (cs/join "\n - " values))) + +(defn map-of-option-value-as-list + "Return the formatted string of values for an option as a multiline list. + The values are a map of pairs (suboption and its options)." + [option values] + (let [values (map #(apply option-values-as-row %) values)] + (option-values-as-list option values))) + (def cipher-options #{"Caesar"}) (def default-cipher "Caesar") +(defn get-available-cipher-options-as-string + "Return the formatted string of analyzers options." + [] + (option-values-as-row "Ciphers" cipher-options)) + (def analyzers-options {"Caesar" #{"Chi^2" "Frequency"}}) +(defn get-available-analyzers-options-as-string + "Return the formatted string of analyzers options." + [] + (map-of-option-value-as-list "Analyzers" analyzers-options)) + (def language-options #{"en", "uk"})