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"})