From 3711112aa22518cca28d219c4e24aad9753d1a02 Mon Sep 17 00:00:00 2001 From: Max Fierke Date: Sun, 6 Aug 2017 21:08:29 -0500 Subject: [PATCH] Unify seed values for displacement and replacement --- src/typhar/cli.cr | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/typhar/cli.cr b/src/typhar/cli.cr index cdb1b18..2f811d3 100644 --- a/src/typhar/cli.cr +++ b/src/typhar/cli.cr @@ -13,6 +13,8 @@ module Typhar end class Encode < ::Cli::Command + @seed : UInt32? + class Options arg "source_text_file", required: true, desc: "source text file" arg "message", required: true, desc: "message" @@ -47,29 +49,23 @@ module Typhar caption "encode message" end - def run + def run(io = STDOUT) plaintext_scanner = ::IO::Memory.new(args.message) displacement_strategy = options.displacement_strategy replacement_strategy = options.replacement_strategy + source_file = File.open(args.source_text_file) - begin - source_file = File.open(args.source_text_file) - - transformer = Typhar::Transformer.new( - plaintext_scanner, - source_file, - displacement_strategy_for(displacement_strategy, plaintext_scanner, options), - replacement_strategy_for(replacement_strategy, options) - ).transform(STDOUT) - puts - ensure - source_file.close if source_file - end + transformer = Typhar::Transformer.new( + plaintext_scanner, + source_file, + displacement_strategy_for(displacement_strategy, plaintext_scanner, options), + replacement_strategy_for(replacement_strategy, options) + ).transform(io) + ensure + source_file.close if source_file end private def displacement_strategy_for(strategy, plaintext_scanner, options) - seed = options.seed.empty? ? generate_seed : options.seed.to_u32 - case strategy when "word-offset" word_offset = options.word_offset.to_i @@ -83,8 +79,6 @@ module Typhar end private def replacement_strategy_for(strategy, options) - seed = options.seed.empty? ? generate_seed : options.seed.to_u32 - case strategy when "n-shifter" codepoint_shift = options.codepoint_shift.to_i @@ -94,8 +88,14 @@ module Typhar end end + private def seed + @seed ||= options.seed.empty? ? generate_seed : options.seed.to_u32 + end + private def generate_seed - SecureRandom.hex(4).to_u32(16) + s = SecureRandom.hex(4).to_u32(16) + STDERR.puts "INFO: Using #{s} as seed" + s end end