diff --git a/src/cipher_analytical_machine/cli.clj b/src/cipher_analytical_machine/cli.clj index d98f1e9..83d09d6 100644 --- a/src/cipher_analytical_machine/cli.clj +++ b/src/cipher_analytical_machine/cli.clj @@ -12,6 +12,9 @@ (def cipher-options #{"Caesar"}) +(def language-options + #{"en", "uk"}) + (def cli-options [["-m" "--message MESSAGE" "The message will be encrypted or decrypted."] ["-M" "--message-file MESSAGE-FILE" "The file contains the message that will be encrypted or decrypted."] @@ -22,6 +25,8 @@ ["-d" "--decrypt" "Decrypt the message."] ["-s" "--symbols" "The string will be used as a set of symbols for a cipher." :default (sf/default-symbol-factory "en")] + ["-l" "--language CODE" "The string will be used to set a default symbols for a cipher." + :validate [#(contains? language-options %) "Must be a code from the list: en, uk!!!"]] ["-C" "--cracking" "Cracking the encrypted message."] ["-h" "--help"]]) @@ -105,6 +110,12 @@ (-> options (assoc option value))) +(defn set-symbols + "Set defaults symbols for a language." + [options] + (set-option options :symbols + (sf/default-symbol-factory (:language options)))) + (defn load-and-set-option "Load the option and set it." [options option] @@ -115,6 +126,7 @@ "Load all options." [options] (-> options + (set-symbols) (load-and-set-option :message))) (defn cracking-actions