Sha256: 3094d2927b042653a47bca52f1161bd88fa1b0113d18d46704f105470f3f33a3
Contents?: true
Size: 655 Bytes
Versions: 396
Compression:
Stored size: 655 Bytes
Contents
module Atbash MAPPING = (alp = ('a'..'z').to_a).zip(alp.reverse).to_h extend self def encode(message : String) : String message = sanitize_message(message) enarr = map_chars(message) add_spaces(enarr) end private def sanitize_message(message : String) : String message.downcase.gsub(/[^a-z0-9]/, "") end private def map_chars(message : String) : Array(Char) message.chars.map { |c| MAPPING[c]? || c } end private def add_spaces(chrs : Array(Char)) : String encoded_string = "" chrs.each_with_index do |c, i| encoded_string += ((i % 5 == 0 ? " " : "") + c) end encoded_string.strip end end
Version data entries
396 entries across 396 versions & 1 rubygems